3 ms·
This exactly hits the problem with containers (and especially Docker and Kubernetes, but to a lesser extent CoreOS's model as well). The crows that seems to lik
by oneplane 10y ago
This exactly hits the problem with containers (and especially Docker and Kubernetes, but to a lesser extent CoreOS's model as well). The crows that seems to like/use it seem to be the people that aren't responsible for maintenance, security etc. and may not want to become the responsible party either. It's often developers that are either simply a lone wolf or part of a team that is big enough that release management falls on one or two people and 'the rest' just wants to churn out code in 'their way' and have that 'way' magically work in production too. Sadly, that is not how the world works.
You will always need some form of configuration management, release management, infrastructure and operations, no matter how compartmentalised and 'serverless' the software coders think they are. Right now, the idea seems to be that if you stick your code and practically a complete user land in a container, you don't have to do those things, as if old style deployments were the reason for those practises to be in place. Obviously, it is the other way around, and by trying to bypass them, you will run into the exact problems they are meant to prevent. (i.e. not knowing what is available/what is released, not knowing the configuration within the infrastructure in a global scale, not knowing the side-effects of two opposing configurations because you have no management for that, not knowing what versions are used because it is spread out over different/many unmanaged files inside containers somewhere, not knowing what is secure/patched, not knowing what else is influencing your environment, no control over parameters that should be globally overridden...)
We take a different approach: you get do write your software, and may only configure requirements within its context. Those have to be defined in a SaltStack Formula with sane defaults, that has to run in a local environment, but also DTAP-style chains of environments with no changes to the app. You don't get a say in what it will run on, but your required facilities will be available. If it doesn't pass automated testing (i.e. sticking it in a VM, running a highstate and expecting a working app) it doesn't get passed to DevOps and you're stuck until you fixed your stuff. With regards to scaling, we make sure that a few calls are always available to the app and/or it's formula, so that we can register where it is and connect it to the correct balancing pools (i.e. incoming requests, but also FS, DB, queue pools). When it's up, it registers, and as long as the automatic health checks pass it gets requests sent to it. If the load is too high, we scale up, if it's been idle too long it scales down. But the app/software/code isn't aware of that nor does it need to be, and using the reactor system, we don't need 'extra' management software to make that happen. You set your KPI's and health checks where you need them, just like you would on any other setup, and you're golden.
- jacques_chester 10y agoI don't think that's a fair characterisation. Operational platforms have been built on containers and more are arriving all the time. Red Hat rebuilt OpenShift on Docker and Kubernetes. I work on Cloud Foundry for Pivotal. There are many others, including self-developed platforms like the one you've built. The general platforms are written to make it easy for operators and developers to remain friends, by sharply drawing the boundaries of who does what. Operations gets manageable black boxes and development gets free platform features (routing, logging, service injection, balancing, healthchecks etc). If a developer needs to care about how these are implemented, or do work above baseline to get these features, then my peers and I have more work to do.
- awinder 10y agoYour last paragraph could clearly be implemented in k8s / etc. but the defining characteristic is that you've built organizational controls to protect & optimize a distributed system. And the main problems you bemoan in the first paragraph are issues of, again, organizational control & maturity. It's almost, like, technologies are just tools that can be either applied or misapapplied to a given domain, either for better or for worse. Huh.
- oneplane 10y agoIt's obviously all about implementation and application, but instead of always reading 'Docker is the solution' it would be nice if it were listed as 'just another tool in your toolbox'. The problem I personally have with this and some other 'emerging' technologies is that they are touted as a 'replacement' for Ops, management, or infrastructure, while in practise, it's obviously not.