3 ms·
Much of the history of computing is edge-triggered signalling. You instruct the computer to copy a file by signalling a mousedown in one place, dragging your fi
by rektide 5y ago
Much of the history of computing is edge-triggered signalling. You instruct the computer to copy a file by signalling a mousedown in one place, dragging your file (a stream of movement signals), and mouse-uping. These events are processed online and you have your output then you are done. The computer keeps no memory of what you or it did, the system is just in a new state, by you having performed this operation with the os tools.
Kubernetes is level-triggered. If you could say that you want a certain file in a certain spot, the computer might be able to have choices for how to make it so. Maybe it looks in other directories. Maybe it downloads it via http or bittorrent. Maybe it scans your archives. If the hard drive dies, it can reget the file. If your sibling deletes the file, the computer can rebuild it. There's snapshotting policies it can setup on your behalf to help. There's records about how & where & when it pulled the file in from.
This is all an elaboration on autonomic processes, on Kubernetes maintaining state for you, letting it do the operations to give you what you asked for. It detects when the level is not right/monitors itself, & detects when it needs to trigger (level triggered) control. it has it's own toolkits to do the work for you, and you are merely registering your ask.
yes you might not fully understand the tool you are using & the full depth of a file system, but even as an end user you are doing the work in tbe conventional macOS model. abstracting the work away from the user, & using a general repeatable practice for declaring your intent (manifests) frees you from having to learn a panolopy of tools & systems, each unique an different (confinung ourselves just to this one example, a file manager, a web browser, a bittorrent client, a usenet client, a snapshot tool, file search system).
and it maintains itself, keeps working, consistently & with explanation, where-as most computers defy explanation: what scripts have been run, what the history is is unknown. by making a compact - letting the machine do the the work instead of us doing it- we have central bookkeeping of what our system really is, radically reshaping the clarity of what we have & what's going on.
these skills being portable across problem domains is a third ultra-strong benefit. almost all aspects of the world get maintained via manifests. learning something new looks similar to & used many of the same tools as what you did to setup the last tbing. this is not really an autonomic benefit, byt is a huge part of the win.
generalized autonomic system is a huge improvement versus shepparding our individual systems carefully forward.
- nyellin 5y agoHey, OP here. You're completely right. This is what Kelsey Hightower is hinting at when he says Kubernetes is a platform for building distributed systems. What enables that is the declarative/autonomic nature. Declarative/autonomic systems aren't a fit for everything (e.g. for observability and monitoring the edge changes absolutely matter) but they're certainly a good fit for many things. IMO there are a lot of parallels with functional programming. In any event, strongly agree with everything you wrote. It's a good topic for another blog post!