|
|
|
|
|
by agentultra
4205 days ago
|
|
It happens every time. As soon as you hit an environment where there are > 20 people using the system you need a plethora of tools and systems involved which remove the terms, "simple" and "lightweight," from the specification. Access control, authentication, auditing, operations... you can't eschew complexity by ignoring it. I've learned this time and again. If you start out with "simple" and "lightweight" you're going to hit that "enterprise wall" and really pay the price of not considering those requirements up-front. The price of either re-writes or layers of out-of-band processes and tools for orchestrating light-weight systems that were not designed to be composed in such a way. It's quite painful and terrifyingly complicated. Update: In the case of Docker/Rocket... I think these are just early iterations. I wouldn't be surprised if even Rocket becomes bloated as they realize they cannot design for simplicity when complexity is a requirement. |
|
Of course Docker in an enterprise will never be as simple as running a Rails app on your Macbook, but it provides an encapsulation primitive that looks as powerful for deployment as object orientation and functional programming were for development.
SICP lecture #1: we manage complexity through means of abstraction and means of combination. Docker is a means of abstraction, and it leaks less than the others we have so far (Chef cookbooks, etc.) We haven't quite figured out what the means of combination is. It won't be trivial - writing programs certainly isn't - but it will be better than handrolled assembly.