DevOps is a combination of Development and Operations. It is a methodology and a collective term for a set of processes, methods, and systems used to promote collaboration, communication, and integration between different teams to make the organization’s processes faster, more efficient, and continuous. According to DevOps best practices, the flow in the software development lifecycle can be divided into multiple stages. This article will discuss the necessary stages in the DevOps lifecycle that empowers leading engineering teams today.

Refer the previous post for Part 1 - DevOps explained in simple terms

DevOps lifecycle


  1. Plan
  2. SourceCode
  3. Build 
  4. Test
  5. Release
  6. Deploy
  7. Operate
  8. Monitor

Each phase in the DevOps lifecycle will target the gaps between development and operations and drive DevOps through continuous integration, testing, delivery, deployment, operation, and monitoring. Let go through each stage and discuss each of the DevOps lifecycle phases below

1. Development Phase

Plan


The first phase is the planning phase and in this stage, Developers/Leads/Architects will be having continuous meetings and discussions with Product owners / Business owners to understand the business &  product requirements and finalize the product roadmap. Usually, all planning activities will occur before actual coding begins.

The Roadmap will be further divided into Epics, Features, and user stories. The user stories illustrate Ordered Steps, User personas, Outline subtasks or tasks, and Definition of “done”.

The final roadmap will be documented according to the requirements and using appropriate code planning tools to set importance and estimate implementation time for each user story. Popular code planning tools to help track known issues and perform project management.

Popular code planning tools

  1. JIRA Software.
  2. Azure Boards.
  3. GitHub Enterprise.
  4. Planview LeanKit.

Source Code


In the second phase, the Developer will start the actual coding based on the requirements. Typically the dev team will write code using an integrated development environment and languages including Go, Python, Java. In order to maintain the code, tools such as GitHub, GitLab, Bitbucket, or Stash are used for version control. With the help of version control tools, a stable version of the application code can be built during the continuous development phase. Also, this is useful for maintaining the code repository among all developers in the team.

Popular IDEs:

  1. PyCharm
  2. Visual Studio
  3. Eclipse

Build


IIn this Third phase,  Fetch source code from different repositories and combine them to build the package for release to production. Developers can use Gradle, Maven, and similar tools to package the code into .exe (executable) files. code review, integration testing, unit testing, sonarQube, performance tests, health checks will be part of the code building process.

Popular build tools:

  1. Maven 
  2. Gradle 

Test


In this Fourth phase, After the code build process, continuous bug testing is performed on the developed software. Manual / Automated testing will differ from organization to organization. Through automated testing developers can save considerable time wasted in manual testing. Reports generated by automated tests will improve the test evaluation process and make it easier to analyze failed test cases. Sample tools like selenium, Junit are used to automate the testing phase and code quality.

Popular test automation tools:

  1. Katalon
  2. Selenium
  3. LambdaTest
  4. TestNG
  5. JUnit

2. Deployment phase

Release


In this Fifth phase, the Release phase is the stage in the lifecycle of DevOps where code will be ready to be deployed in the environment like (UAT / Staging / Pre-Prod). Based on the organization to organization the approval process will be granted by different personnel for the approval process.

Popular release management tools:

  1. BMC Release Process
  2. CA Release Automation
  3. Mirco Focus Release

Deploy

In this Sixth phase, the finalized application code will be deployed to the pre-prod/production server. Configuration management is the key process at this stage. It executes the precise deployment of application code on all servers, establishes and manages the consistency of application performance and functional conditions. Publish the code to the servers, schedule updates for all servers, and keep these configurations consistent throughout the production process.

Jenkins, Teamcity, Ansible, Puppet, and Chef are some effective DevOps tools for configuration management, and they often perform rapid and continuous deployment of new code.

Popular deployment tools:

  1. Jenkins
  2. Travis CI
  3. Teamcity

Operate


In this Sixth step, Once the application is deployed, the operations team will perform activities such as Infrastructure changes, configuration, capacity and resource management, security check, data backup, log back up,  database management … etc. In simpler terms, The purpose of continuous operation and maintenance is to automate the process of released applications and subsequent updates. The development cycle in continuous operation and maintenance is shorter so that developers can continue to accelerate the time to market the application.

Monitor


The last stage of the DevOps lifecycle is to monitor the entire environment. In this step, the delivered application to the customer has been monitored on downtime and uptime, failures, errors of application and disaster recovery, and so on. More precisely, the developer records data about the use of the application and continuously monitors each function. “Server is not accessible” or “Insufficient memory” are some common system errors that can be resolved at this stage.

Continuous monitoring helps to maintain the availability of services in the application. It can also identify the threat and root cause of recurring system errors. At this stage, security issues can be resolved, and defects can be detected and repaired automatically.

Popular  Monitoring tools:

  1. New Relic
  2. Datadog
  3. Grafana
  4. Splunk
  5. Nagios

What is CICD ? 


I believe that most often people get confused between DevOps and CI/CD, so how to understand the relationship between DevOps and CI/CD? It can be understood as follows: 

CICD is the method of delivering applications to end-users through automation in the application development phase. The main goal of CICD is to solve the problems caused by integrating new code. To be more specific, CICD enables continuous automation and continuous monitoring throughout the lifecycle of the application, i.e. from the integration to the testing phase and to delivery and deployment. 

On the other hand, DevOps is an operational philosophy that promotes collaboration between the development and operations team by automating the build, test, and deployment of applications, and It is implemented using the CICD pipelines. These associated transactions are commonly referred to as “CI/CD The Conduit ”, Supported by development and operations teams in an agile manner.

The below information will walk you through DevOps CICD  in a nutshell.

Continuous Integration


DevOps Continuous Integration Explained
DevOps Continuous Integration Explained

is the practice of automatically detecting, pulling, building  (integration testing, code review,  unit testing, and packaging) more frequently on a regular interval after source code changes. The goal of continuous integration is to quickly ensure that the new changes submitted by developers are good and suitable for further use in the codebase. This practice will allow us to determine whether the new code and the original code can be properly integrated.

Continuous Delivery


DevOps Continuous Delivery Explained
DevOps Continuous Delivery Explained

After completing the automated process of building and unit testing and integration testing in CI, continuous delivery is to have a codebase that can be deployed manually to the production environment after the appropriate approval process.

In order to achieve an efficient continuous delivery process, it is important to ensure that CI is built into the development pipeline and every stage (from the merging of code changes to the delivery of a production-ready build) involves test automation and code release automation. Note: Continuous delivery does not mean that every change in the source code must be deployed to the production environment. It means that any code modification can be deployed at any time.

Continuous Deployment


DevOps Continuous Deployment Explained
DevOps Continuous Deployment Explained

is a logical next step after continuous delivery: continuous deployment is a practice to publish production-ready builds automatically to production environments. Unlike Continuous Delivery, there is no manual approval step before releasing it into production.

My Two cents


In DevOps, all participants (all engineers)are responsible for making the organization’s processes faster, more efficient, and continuous.

To understand DevOps more, refer to how AWS, Microsoft, Google, Facebook, GitHub do DevOps.

How to DevOpsLink
What is DevOps from Microsoft’s Donovan BrownView Details
How GitHub does DevOpsView Details
How Google does DevOpsView Details
How Facebook does DevOpsView Details
How Apple does DevOpsView Details
Approach to DevOps by Launch Darkly (Funny)View Details
How AWS does DevOpsView Details
Why Microsoft does DevOpsView Details

Conclusion


DevOps is in-depth cooperation between development and operation and maintenance. It is impossible to understand DevOps without understanding the lifecycle of DevOps. Each stage of the DevOps lifecycle is controlled by two common factors: maximum automation and continuity.

Next post: 15 Best Practices for Implementing DevOps
Udemy Offers 2021
Udemy Offers 2021