It is a well-known fact that the car industry went through an evolution and perfected a highly efficient approach to manufacturing cars. It went from highly custom cars built manually, to automated parts production with manual assembly, then to fully automated assembly lines. The car industry perfected a very lean manufacturing process.
Starting around 1912, Henry Ford began thinking beyond the existing process of manufacturing automobiles. He placed a relentless focus on establishing a repeatable process that would improve quality, eliminate waste, reduce manufacturing time, and reduce total costs to build an automobile. In 1913, Ford introduced the first moving assembly line for the mass production of an entire automobile. This innovation reduced the time it took to build a car from more than twelve hours to only two-and-a-half hours.
Similar key drivers in manufacturing automobiles can be applied to software development. Less bugs and outages, process improvement, the faster time to market, and lower total cost of ownership (TCO).
|Lean Manufacturing||Software Development|
Reduce total cost
|Lesser bugs and outages|
Faster time to market
In the software development process, a DevOps pipeline is comparable to an assembly line. A DevOps pipeline is focused on automating and connecting the different tasks performed by several teams, such as continuous integration for developers, test automation for testers, code deployment by release managers and so on.
To refer back to manufacturing automobiles, the assembly line consists of stages that are automated–from building the exterior parts like chassis, body, and engine–then to the assembling of interior parts and painting, and finally to the inspection or quality testing. Once it passes the QA inspection, the car is delivered to the car dealership.
In the software development process, a DevOps pipeline consists of different stages to move the code to production.
The pipeline is triggered once the developer commits the code to the Source Code Control system, then the next stage is executed which is building, compiling and testing the code. Once the software is successfully tested, the process continues to the next stage which is the release automation. In this stage, the runtime artifact (which is the compiled code) is saved in a repository. The repository may also contain an older version of a runtime artifact which can be redeployed during a rollback process. Then the last stage of the pipeline is deploying the runtime artifact to the production environment.
Most organizations use various tools for specific DevOps activities such as GitHub for Source Control management, Maven for building the application, Jfrog for runtime repository and Puppet for deployment automation. However, the main challenge is connecting all these tools as part of a DevOps pipeline. A common approach is to use a tool like Jenkins to orchestrate the different stages in the pipeline. Jenkins provides a pipeline where you can utilize a combination of plugins to integrate the various tools to deliver a software application in a production environment. For a detailed list of tools check this periodic table of DevOps tools.
DEVOPS PIPELINE WITH POPULAR TOOLS
Aside from quality and process improvements, time and cost reduction, organizations with an established DevOps pipeline will also benefit from a sudden increase in innovation cycles. Since business capabilities can be delivered for consumption quickly and potentially in rapid intervals, organizations can continually reassess their priorities and more easily adapt to evolving requirements.
Check out these developer blogs to try a DevOps pipeline that automates the deployment of an API from a source control system to a production environment.
API Builder: A simple CI/CD implementation – Part 1
API Builder: A simple CI/CD implementation – Part 2