Shift Left: With Containers
Most modern applications requires complicated installations and integrations every time they are deployed leading to slow delivery process, reduce service quality , frequent downtime that leads to challenges for business, developers and IT operations
Part of the above solution is agile + devops. which treats “code” as everything. A continuous feedback with ‘automate everything’ paradigm leads to rapid iteration and delivery. This helps teams to always produce a minimum viable product (MVP) and application is always ‘releasable’
In essence its the ‘Container technology’ that helps here. Adopting a container strategy allows applications to be shared easily and deployed . They are consistent environment and tools , predictable building blocks and it leads to faster deployment
Container Flow: Containers are conversant with “Cloud development” and “Test productivity”. They create consistent images from dev to prod, Replicate more of production environment locally and shift system and integration test to developer environment. Since they create the foundation of a deployment pipeline, a typical flow is described in ‘what’ and ‘how’:
1. Use environments that is production like at every stage of a deployment pipeline
2. Automate all the components in pipeline with what ever scripts you can
3 Just like dev stores code in version control, all the production configs. servers, networks. , scripts and configuration information is stored in version control.
4 Clone the entire production environment based on what’s in version control using chef. puppet or standard shell scripts.
1. Build an automated environment creation process that starts from provisioning
2, Copy a virtualized environment (e.g. Running CLI tools, a VMware image or a Oracle VirtualBox, for Amazon Machine Image(AMI) ,running file in EC2)
3. Use bootstrap scripts for “infrastructure as code” configuration management or use tools (e.g. Puppet, Chef, Ansible, Salt or standard shell scripts.)
4. Use automated operating system configuration tools (e.g. Solaris Jumpstart, Red Hat Kickstart etc)
5. Assemble an environment from a set of virtual images or containers (e.g. Docker)
6. Spun up a new environment in a public cloud (e.g. AWS, Google App Engine, Microsoft Azure), private cloud, or other PaaS (platform as a service, such as OpenStack or Cloud Foundry, etc.).
In a Nut Shell: Go back to the basics: use production-like dev/test environment and tight version control
Dev and Test Productivity: Shifting left with containers can help delivery teams to test faster and earlier in the release cycle. The containers can be used during the development cycle for Unit Tests by Dev folks and helps in consistent code development. For QA folks where environment is a challenge during the System tests, the container helps in creation of application environments with dependencies that can be deployed in any environments and can be easily shared.
In a nut shell: Containers gives you more choices for app deployment , eliminates configuration errors and “works fine on my machine” problems. It isolate apps from underlying infrastructure and deploy consistently across dev, stage,and production, At large is the benefit from automation with orchestration and continuous integration with deployment (CI/CD) practices