DevOps in action discuss DevOps ideas, methods, and measures that everyone in an organization must follow. This helps the organization to arrive at a common thought process about DevOps. This discussion is about how an organization can implement DevOps at single user level to multi-user level in an organization. You can get to know the basics about what DevOps is all about with Pros and cons on my previous discussion about on-boarding DevOps.
Irrespective of the small/large enterprise business model in an organization, the strength of DevOps lies in laying an effective Deployment Pipeline followed by Infrastructure as code (IaC).The process of moving an business idea to code and from code to production is the major activity in the deployment pipeline. This increases the communication and collaboration between the development and the operations team.
The IaC process is similar to the software best practices. It involves strict code versioning, tested iterations of code, controlled deployment, and configuring automation. Using IaC, you automate your computing infrastructure by way of provisioning. It involves learning of additional tools such as Ansible, Terraform, AWS CloudFormation, SaltStack, Vagrant, Puppet, and Chef.
Building the Deployment Pipeline in Small Organizations
The intention of building the deployment pipeline is to have an improved quality product. Building the deployment pipeline is the regular activity of the developer. All business ideas are developed into code and released to production. This process builds the deployment pipeline and helps to continuously deliver a capability into production as frequently as needed.
First, we take a scenario in an organization with no continuous delivery pipeline as an example. Jane doe is a software developer responsible to fix defects. Now, the company has taken the risk of pushing the code to production after doing a basic testing. The code fixed the existing defects and raised new defects. This made the existing application from working the usual way. Jane Doe had heard about automating software builds. He plans to automate the software build and deliver it multiple times. Jane Doe built a continuous delivery pipeline as shown in the below diagram.
Automating Build and Release Cycles in Enterprise Organizations
The Enterprise organizations like Google and Amazon follow the principle of loosely coupled architecture. It means that each software component is not dependent on the other and operate independently. By this way, there is a cultural shift in the way the teams work.
Large enterprises consider automation of Infrastructure and bringing it under a Versioning Control System as an important aspect. Major advantages of Infrastructure automation are:
- Maintaining consistency across different stages/environments across multiple servers. The Infrastructure code changes need to be managed as and when your application changes.
- Increases the frequency rate of frequent deployments among smaller agile development teams
- Easy collaboration among teams support new features. The reason is, well defined and documented working code environment
The Continuous delivery pipeline enables larger organizations to have continuous build automation and release cycles in different staging environments. As a result, the applications are delivered in short duration with high reliability.
The developers integrate the code changes of other developers in the Continuous Integration (CI) process. The integration happens multiple times in a day. The CI tools like Jenkins, schedules and executes automated builds and tests every time a developer commits the code.
The automated build for each commit makes it impossible for compilation errors and source code integration errors to escape unnoticed. With this confidence, the code works the way it is intended. It also reduces the chance of unintended side effects that the new code might bring.
The integrated code is committed to a Source Control Mechanism (SCM) and is automatically built and unit tested. The automated computing infrastructure tools like Puppet, Chef, Ansible and others takes care this.
Advantages of Continuous Delivery Pipeline
The advantages of continuous delivery pipeline are:
- Quick delivery
- Reducing bugs to improve code quality
- Seamless deployment of code
- Improving business agility
- Ability to react quickly and respond to changes