CONTAINERS OR NOT, APPLICATION CENTRICITY IS THE KEY
While containers have stormed into the mainstream of ops infrastructure, it is now time to take a step back and think about how can you really leverage them to your advantage. You now have a very fast and effective “Ferrari” at a small percent cost, but is a container really what you need? Will you be able to handle it? Will it be an effective solution? Or only add more chaos to an already messy set up?
The world of containers is about immutability—use it then loose it. It is understood that fixing an infrastructure issue is more expensive than building a new one from scratch. While that is a great solution from a infra perspective, will it help allow an application to be delivered faster and with greater consistency? Will the business see a measurable difference in service levels?
Containers come and go, Applications are here to stay
In such a case, the focus has to be on Application centricity and building the container infrastructure to help manage applications in a very cohesive way.
What exactly does it mean to keep the container infrastructure ‘application centric’?
Below are a few thoughts I have put together – please feel free to add your thoughts in the comments:
- Bundle all provisioning automation at the environment level, to ensure that at the container level automation is implemented into the core plumbing with minimal changes going into this layer. (Example: Have one common environment creation pipeline used to provision all environments, the composition of such a pipeline may have container creation as part of it – the end user sees only ‘create environment’ event for a given stage, without any nuances of what containers get created under it, or what existing servers get integrated)
- Bundle all container actions at the application level, and then apply them at an environment level rather than taking action at the container level. Then forbid any action at the container level at all times. (Example: Action may be applying a security patch – you may actually create a new set of containers, but from an application perspective, you just applied a security patch)
- Progress application environments across various life cycle stages by using containers or container compositions promoted to these stages. Proactive container (or container compositions) progression help creating clear view on what containers are available at what stage. (Example: All containers in a given stage are visible to the end user for him/her to ensure they can create new environments for that stage using them)
- Roll-up monitoring events at application environment levels to ensure the environment is up on the whole, and use garbage collection heuristics to deal with the anomalies at the container level. (Example: an infra event at a container, needs to be handle at that level, while the health indicator does not worry about it unless it breaches application level tolerance)
- Roll up all operational events like log-shipping, audit events, network policy management, secure access and validations all at the application level, then push into or pull from containers consistently.
- Wrap running containers as application versions, such that the end user can get to the right version of the application without the nuances of containers and container ID, but by Application and Application Versions.
Hopefull this offers some food for thought in regards to how to leverage containers into yout infrastructure while keeping a laser focus on the application. Please offer any thoughts, ideas, or criticism in the comments below!
Comments