The DevOps approach of developing and delivering software in a continuous manner (also known as continuous software delivery) has taken the IT world by storm. It has become a vital asset for IT leaders and CIOs to prioritize key building blocks that are essential to build a successful DevOps practice.
At Evoke, we have been rapidly transforming our development, testing, building and deployment processes using some of the exciting tools discussed below, with the sole objective of helping our clients serve their end-users with better products, solutions and services in a faster manner. Let’s take a closer look at these building blocks that form a part of a DevOps framework, which aids continuous software delivery.
1. Continuous Integration
Continuous Integration (CI) is one of the key components of a DevOps framework. Per Wikipedia, Continuous integration (CI) is the practice, in software engineering, of merging all development work to a shared mainline several times a day. DevOps and CI tools take center stage in SDLC by virtue of the overall role it plays in DevOps automation. Below are some of the key uses of CI tools:
- Automates the build by integrating code by different developers
- Automates the posting of software packages to different repositories. This cans later be used for automated deployments across different environments
- Automates the creation of environment (Dev/QA/Staging) images for facilitating development and testing
- Automates deployment across different environments
2. Configuration Management
CI and configuration management (CM) tools such as Puppet, Chef, Ansible etc., thrive in the space of DevOps automation, as it relates to automated deployments across different environments. Without CM tools, it would be extremely difficult to democratize DevOps. The DevOps world would be full of difficult-to-manage custom shell scripts. Now with CM tools, one could achieve automated deployments with ease.
This goes without saying, but SCM (Source-code management) tools such as Git, Perforce, SVN contain the source code related to projects including application codes and infrastructure codes. With updates to infrastructure codes, CI tools trigger the environment creation process in which the existing environments are broken down and new environments are created along with software packages being deployed with them.
With container technologies such as Dockers containers and CoreOS Rkt runtime, DevOps automation has caught attention of many professionals across all levels of an organization. With CI and CM tools, one could create self-service environments for DevOps or testing in no time using Docker containers.
5. Containers Orchestration
Speaking about containers, they would not be complete without the mention of container orchestration tools such as Mesos, Kubernetes, Docker Swarm etc. Imagine a situation where the requirement is to deploy one or more containers hosting a particular micro-service based on increased incoming user requests. This is where container orchestration comes into the picture. Here, we are speaking specifically about cloud-native apps. Now that we have started using cloud-native apps, it’s important to take note of container orchestration tools and make it a significant part of the DevOps framework.
Packaging technologies such as RPM or NPM become very important to achieve overall automated deployments. The application, when built successfully with CI tools, is packaged using RPMs and posted on the packaging repositories only to be checked out during the deployment automation process.
7. Package Repositories
Once applications are packaged, these packages need to be uploaded into some repositories. The packages will then be downloaded and installed as part of the automated deployment process. Examples of packaging repositories include JFrog, DockerHub.
8. Database Automation
When talking about DevOps automation, the database piece, including execution/migration of DB scripts, has to be automated. This is where tools such as Flyway, Datical, etc. come into the picture. These are critical pieces of DevOps and one has to get a hold of these technologies to complete the DevOps end-to-end automation.
When talking about continuous delivery, it is of prime importance to ensure that quality software is delivered. When doing so, there are releases which may become critical from different perspectives, such as security, thus requiring some manual intervention. This is where workflow comes to the forefront. In fact, industry experts believe that the primary difference between continuous delivery and continuous deployment is the workflow piece.
10. Cloud Platforms
Given the need to deploy on private (OpenStack) or public cloud (Azure, AWS etc.) coupled with the attention that cloud-native apps (micro-services, containers) are receiving, it is important to gain a thorough understanding of how the cloud platforms function as well as the processes to deploy applications on these platforms.
11. Cloud Integration
Given the fact that cloud platforms (Azure, AWS, Heroku) have become significant in terms of software deployments, DevOps automation would need software such as CloudFormation (AWS) to manage continuous delivery in the cloud platforms.
The continuous software delivery model is growing rapidly, as it is helping enterprises to provide new features in a quick and efficient manner. Many enterprises are convinced that continuous software delivery is the way forward and willing to invest significantly in this new approach can pay off big time down the road.
Want to know how Evoke can help you with its continuous software delivery approach, call us at (937) 202-4161 (Select Option 2 for Sales).
Ajitesh Kumar Shukla was a Principal Architect at Evoke Technologies. He used to head the Architecture and Governance initiatives at Evoke. Ajitesh was responsible for enabling enterprise-wide adoption of leading-edge technologies and related practices, including, implementation of relevant tools and frameworks. He also spearheaded the DevOps, Big Data and Analytics practice at Evoke.