×
Community Blog Integration of DevOps for Software Development & Delivery

Integration of DevOps for Software Development & Delivery

This blog will describe about the development and delivery of software with the integration of DevOps.

By Prashant Mishra, Alibaba Cloud MVP and CEO, Founder Click2Cloud Inc.

Every organization needs to implement a DevOps approach for the delivery and deployment of products and software. Continuous integration and delivery with Jenkins' approach is a step towards product/software delivery and deployment. Releasing software with upgraded versions frequently to users is usually a time-consuming and painful process; instead continuous Integration and delivery (CI/CD) of the same can help organizations to become more agile. In this article, we will see the complete lifecycle of integration and deployment.

What is DevOps?

DevOps is an intelligent and thriving software development approach that involves Continuous Development, Testing, Integration, Deployment and Monitoring throughout its development lifecycle.

There are four different parts involved in DevOps shown in the figure below.

DevOps include following parts:

  1. Version Control
  2. Continuous Integration
  3. Continuous Delivery
  4. Continuous Deployment

1
Fig: The Components of DevOps

Version control is a source code management stage that helps to maintain different versions of code.

Continuous integration is used to build, compile, validate, code review, test unit and integration of a software uninterruptedly.

Alibaba Cloud's continuous delivery and testing is used to deploy the already built application to test servers. Thus, the continuous deployment results in tested applications ready to be released with their configuration management and containerization.

Continuous Integration and Continuous Delivery Pipeline

Continuous integration indicates a complete software development life cycle. In the below diagram, you can see the logical pipeline demonstration for how the software progresses along these different phases of lifecycle.

2
Fig: CI/CD Pipeline Flow

Before the product/software can be delivered to the customer, it goes through the above phases:

In the first phase of the pipeline, the developers put in their code and code goes into the version control system.

After version control, its further proceeds to the build phase, where you can compile the code. You get all the various features of the code from different branches of repositories and then merge them to finally get into compiler to compile the code.

The code then proceeds to the unit test phase where you can have various types of testing, that is compatible to the type of product/software. In unit testing, you can break your complete software/product into small individual units where each unit is tested on its functional abilities. Once the unit testing is done, integration comes in the pipeline where all these individually tested units' parts are integrated.

After testing, your product/software goes into the deployment phase where you can deploy your software/product into the testing server where to view the code. In this phase, the code is deployed successfully.

At auto test, deploy to production, measure and validate phase if any error occurs, the complete lifecycle is repeated from the scratch, so that the developers find and resolve the introduced issue before moving further.

A pipeline is a logical step or a series of steps that defines how SDLC occurs.

Before Continuous Integration

Let us imagine a scenario where the complete source code of the application was built and then deployed on a test server for testing. It sounds like a perfect way to develop software, but this process has many flaws. Alibaba cloud will explain them one by one:

  • Developers have to wait until the complete software is developed for the test results.
  • There is a high possibility that the test results might show multiple bugs. It was tough for developers to locate those bugs because they have to check the entire source code of the application.
  • It slows the software delivery process.
  • Continuous feedback of things like coding or architectural issues, build failures, test status and file release uploads were missing due to which the quality of software can go down.
  • The whole process was manual which increases the risk of frequent failure.

It is evident from the above-stated problems that not only the software delivery process became slow, but the quality of software also went down. This leads to customer dissatisfaction. So, to overcome such chaos there was a strong need for a system to exist where developers can continuously trigger a build and test for every change made in the source code. This is what CI is all about.

Jenkins for Continuous Integration

Continuous Integration is the most important part of Alibaba Cloud DevOps that is used to integrate various DevOps stages. Jenkins is the most famous Continuous Integration tool. Jenkins is an open-source automation tool written in Java with plugins in-built for Continuous Integration tasks. Jenkins is used to build and test your software projects continuously making it easier for developers to integrate changes to the project and, making it easier for users to obtain a fresh build. It also allows you to continuously integrating your software with a large number of testing and deployment technologies.

Now, consider that you have to automate the entire process from the time the development team gives the code to the time the code is deployed onto the production servers. We all know there is a step in the pipeline, and you have to automate this pipeline. To make the entire SDLC on the Alibaba Cloud DevOps mode or the automated mode, we would need an automation tool.

Jenkins is one of the automation tools that you can use. Jenkins provides us various interfaces and tools to automate the entire process of the complete development lifecycle. Suppose you have a Git repository where the development team commits the code and then Jenkins takes over from there. Jenkins will pull that code to move it to the commit phase where the code is committed to every branch.

Jenkins then moves the code in the build phase where it compiles the code. After the code is compiled, it validates and review the code. Once all the testing procedures are done it is finally packaged into the application. It could be either a war file or a jar file.

Jenkins role is only till the application is packed. Now if it has to be delivered then we need some tools to deliver the product. For this, we need a tool like Docker. Docker is designed to simplify the operations such as creation, deployment and run applications by using containers. It takes a few seconds to create an entire server and deploy any application on it. So, to deploy some software we need an environment that replicates the production environment which is what provided by docker.

3
Fig: Working Flow of Jenkins

Conclusion

This blog summarizes how you can readily use integrated CI/CD pipelines with Alibaba Cloud DevOps solution. Automating each gate and step in a pipeline allows you to visibly monitor the results of your team's activities to react fast when failures occur. The ability to continually iterate what you put in your pipeline is a great way to deliver good quality software. Use pipeline capabilities to easily create container applications on demand for all of your build, test, and deployment requirements.

1 1 0
Share on

PM - C2C_Yuan

49 posts | 2 followers

You may also like

Comments

RennyJM July 17, 2020 at 8:48 am

Thanks for the majestic blog post on DevOps. In the most modern implementations of Agile and DevOps, automation has become a leading enabler of efficiency. So, DevOps automation has become essential as it benefits in the elimination of recurring manual errors while reducing dependency on humans to enhance the efficiency and flexibility of application development, testing, and deployment. DevOps automation can transform the strategies on how the organization develops, tests, and deploys new products and services. Also, it provides a continuous delivery of high-quality application/software.