DevOps is combination of development and operations. It is extension of agile methodology. The aim is to provide continuous development and testing with high quality. In simple terms, DevOps is about removing the barriers between traditionally siloed teams, development and operations. Under a DevOps model, development and operations teams work together across the entire software application life cycle, from development and test through deployment to operations. Phases of DevOps

Following are the phases of DevOps: 1. Configuration Management 2. Testing 3. Integration 4. Delivery 5. Development 6. Monitoring 7. Planning

. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . ..

Configuration Management Configuration management (CM) is a system’s engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. Configuration management is critical to any system as it is the process by which changes in the system are tracked, properly implemented, and controlled. Tools: Following tools are used for this purpose: 1. Salt stack 2. Puppet 3. Docker

• Puppet: Puppet is an open-source software configuration management and deployment tool. It's most used on Linux and Windows to pull the strings on multiple application servers at once. But you can also use Puppet on several platforms, including IBM mainframes, Cisco switches, and Mac OS servers. • Salt stack: this DevOps tool can be used even by the members of the team that may not be very well-versed with programming. It also reduces the dependency of the team or organization on a singular experienced programmer. Salt is used in DevOps organizations because it pulls developer code and configuration information from a central code repository, such as GitHub o • Docker: Docker is also an open-source containerization platform. It enables developers to package applications into containers—standardized executable components combining application source code with the operating system (OS) libraries and dependencies required to run that code in any environment Testing Look for tools such as Jenkins, Circles, and GitLab CI, which help minimize the time and effort devoted to testing without compromising the code quality or user experience. Software monitoring and logging. Once software is moved to production, it must be monitored to ensure stable performance and increased customer satisfaction. This stage also involves performance analysis and logging, raising smart alerts on various issues, gathering customer feedback, and so on.

Tools: Some tools that are used in testing are TestNG, Selenium and JUnit etc. Jenkins is also used here. • TestNG: The goal of TestNG is to cover a wider range of test categories that includes unit, functional, end-to-end, integration, etc., with more powerful and easy-to-use functionalities. TestNG is noted for extra configuration options and capability for different kinds of testing. • Junit: Junit is a java testing Unit framework that is mostly use for regression testing. It is use in writing and running repeatable automated test. It plays a crucial role test-driven development, and is a family of unit testing frameworks collectively known as unit.

Integration After the continuous development, the continuous integration phase occurs where various tests are planned that needs to be carried out in the next phase. It helps us to find out whether the developed application meets the desired requirements or not. Integration is also a continuous process as development. Following tool are used for integration process: Jenkins Jenkins is an open-source Java-based automation CI server that is supported by multiple operating systems including Windows, macOS, and other Unix OSs. Jenkins can also be deployed on cloud-based platforms. Cruise Control Cruise Control is both CI tool and an extensible framework. It is used for building a custom continuous build process. This alternative to Jenkins has many plugins for a variety of source controls, build technologies which include email and instant messaging. Monitoring

This is the very crucial stage in DevOps lifecycle. Its goal is to improve the quality of software by monitoring its performance. Operation team will take care of the bugs and any mis functionality. Any major issues found will be reported back to the development team so that it can be fixed into continuous development phase. This is done in loop until the desire product quality is achieved. Continuous monitoring helps in sustaining the availability of services in the application. It also determines the threats and root causes of recurring system errors. Security issues get resolved and problems are automatically detected and fixed. When major issues are detected in this phase, the application is swiftly rerun through all the earlier phases of the DevOps lifecycle.

Tools: Following tools are used for monitoring: • Sensu: Sensu is an open-source infrastructure and application monitoring solution that monitors servers, services, and application health, and sends alerts and notifications with third-party integration. Written in Ruby, Sensu can use either RabbitMQ or Redis to handle messages. It uses Redis to store data. • Nagios: Nagios provides tools for monitoring of applications and application state – including Windows applications, Linux applications, UNIX applications, and Web applications. Nagios software runs periodic checks on critical parameters of application, network and server resources. • Splunk: Splunk is used for monitoring and searching through big data. It indexes and correlates information in a container that makes it searchable, and makes it possible to generate alerts, reports and visualizations.

Planning Schedule planning and task tracking tools are needed to ensure the DevOps team knows what tasks are at hand, what is currently being done, and whether there are any risks of falling behind schedule.

Tools Tools like Confluence and Jira help DevOps teams achieve a seamless and efficient project management cycle and ensure timely product delivery. Delivery Developers need rapid deployment of development and testing environments and can’t wait long for repairs when something goes wrong. Docker containerization ensures consistency across multiple development and release cycles and provides repeatable development, build, test, and production environments.

Tools: Fools for this phase include: 1. Kubernetes 2. Terraform 3. Chef 4. Ansible 5. Puppet