DEVOPS ENGINEER
By: Narala Naveen Reddy
Tags: Continuous Integration, Waterfall, Agile, Software Development, DevOps

By:-Naveen Reddy, CSE Student, VIT UNIVERSITY(Chennai).

Why is DevOps needed?

Before DevOps, the development and operations team worked in complete isolation.

Testing and implementation were isolated activities performed after design and construction. Therefore, they were more time consuming than actual build cycles.

Without the use of DevOps, team members spend a large amount of their time testing, implementing, and designing rather than building the project.

Manual code implementation leads to human error in production

The coding and operating teams have their separate timelines and are out of sync, causing further delays.

DevOps Lifecycle

Devops lifecycle

It consists of several phases that together become the DevOps lifecycle.

Continuous development

Continuous integration

Continuous test

Continuous feedback

Continuous monitoring

Continuous deployment

Continuous operations

1. Continuous Development

The first phase of the DevOps lifecycle is where the planning and coding of the software takes place. Planning involves understanding the vision of the project and imagining software based on those insights.

Planning does not involve any major tools, but code maintenance involves the use of a variety of tools. Developing the source code for the application begins by choosing between the different programming languages. JavaScript, C / C ++, Ruby, and Python are used prominently for coding applications in DevOps.

The code maintenance process is called Source Code Management (SCM), where version control tools such as GIT, TFS, GitLab, Subversion and Mercurial are used, among others.

2. Continuous Integration

The source code is modified multiple times, and these frequent changes occur weekly or daily. Code integration, the next phase, is at the core of the entire DevOps lifecycle. In continuous integration, new code is created and integrated that supports additional functionality in existing code.

In this phase, errors in the source code are caught early on. To generate new code that adds more functionality to the application, developers run tools for unit testing, code review, integration testing, compilation, and packaging.

Continuous integration of this new code into the existing source code helps reflect the changes that end users would experience with the updated code.

3. Continuous Testing

Some developers run the continuous testing phase before the continuous integration phase. Based on updates to your application code, this phase can be repositioned around the Continuous Integration phase in the DevOps lifecycle.

Here, the developed software is continuously tested for errors. A test environment is simulated with the use of Docker containers. Through automated testing, developers save effort and time, usually wasted in manual testing. Reports generated by automated tests improve the test evaluation process. Analyzing the failed test cases becomes easy. After going through a UAT (User Acceptance Test) process, the resulting test suite is simpler and error-free. TestNG, Selenium, and JUnit are some of the DevOps tools used for automated testing. These tools can also organize the execution of test cases on a preset timeline.

4. Continuous Feedback

Continuous testing and continuous integration are the two crucial phases that ensure consistent improvements to your application code. Continuous feedback is a peculiar phase where these improvements are analyzed.

Developers can evaluate the result of these modifications in the final product. Most importantly, customers who have tried these applications can share their experiences at this stage. In most cases, this phase of the DevOps lifecycle provides a turning point in the application development process. Feedback is quickly evaluated and developers start working on the new changes. Sooner, there is a positive response in customer feedback, paving the way for launching new versions of the software application.

5. Continuous Monitoring

Monitoring the performance of an application is of vital importance for application developers. In this phase, developers record data on application usage and continuously monitor each functionality. “Server not accessible” or “low memory” are some of the common system errors that are resolved in this phase.

Continuous monitoring helps maintain the availability of services in the application. It also determines the threats and root causes of recurring system errors. Security issues are resolved and issues are automatically detected and fixed.

Compared to software development teams, IT operations teams are more involved in this phase. Its role is critical to monitoring user activity, checking the system for unusual behavior, and tracking errors.

6. Continuous Deployment

Conventionally, the continuous deployment phase takes place before continuous monitoring. But developers make sure this phase is always on in the DevOps lifecycle, especially after the app goes live and starts receiving heavy traffic.

In this phase, the finished application code is deployed to the production servers. Configuration Management is a key process in this phase and carries out the accurate implementation of the application code on all servers. Consistency in performance and functional conditions of the application is established and curated. The code is sent to the servers, updates are scheduled for all servers, and these configurations remain consistent throughout the production process. Ansible, Puppet, and Chef are some of the powerful DevOps tools used for configuration management, where they often run fast and continuous deployment of new code.

Containerization tools are used to achieve continuous deployment through the configuration management process. Vagrant, a containerization tool, builds consistency across different environments, from development and testing to staging and production. Similarly, the scalability of continuous deployment is handled by tools like Docker. These tools nullify all kinds of production failures and system errors by replicating and packaging the software couplings from the testing, staging and development phases. Ultimately, the application runs smoothly on different computers.

7. Continuous Operations

The last phase of the DevOps lifecycle is the shortest and least complicated phase. The purpose of continuous operation is to automate the application launch process and subsequent updates. Development cycles in continuous operations are shorter, allowing developers to continually accelerate application time-to-market.