Monday, August 24, 2020

DevOps Testing

A BEGINNER’S GUIDE TO DevOps

 

 

 

 

 

 

 


An illustration something similar to this

Bright colors to be used

 

What is DevOps?

The word “DevOps” was coined in 2009 by Patrick Debois. DevOps is a set of practices that works to automate and integrate the processes between software development and IT teams, so they can build, test, and release software faster and more reliably. This term was formed by combining software “development” and IT “operations,” which provides a starting point for understanding exactly what people typically mean when they say “DevOps.” This signifies a cultural shift---that bridges the gap between development and operation teams, which historically functioned in siloes.

At its essence, DevOps is a culture, a movement, a philosophy.

Communication, Collaboration and Integration are the three main principles of the ever-growing, modern approach to software delivery known as “DevOps”. It unites agile, git, continuous delivery, automation, and much more, to help development and operations teams be more efficient, innovate faster, and deliv.er higher value to businesses and customers.

The meaning of DevOps has significantly broadened to be an umbrella term for the processes, culture, and mindset used to shorten the software development life cycle, using fast feedback loops to deliver features, fixes, and updates more frequently.

There are three primary practice areas that are usually discussed in context of DevOps.

·        Infrastructure Automation – create your systems, OS configs, and app deployments as code.

·        Continuous Delivery – build, test, deploy your apps in a fast and automated manner.

·        Site Reliability Engineering – operate your systems; monitoring and orchestration, sure, but also designing for operability in the first place.

Not sure whether to add these last highlighted points??

 

How DevOps Emerged as the New Ray of Hope?

The history of DevOps is simple, yet revolutionary. The concept of DevOps emerged out of a discussion between Andrew Clay and Patrick Debois in 2008. They were concerned about the drawbacks of Agile and wanted to come up with something better. The idea slowly began to spread and after the DevOpsDays event held in Belgium in 2009, it became quite a buzzword.

What is best about DevOps is that there is more to it than it seems. It’s not just an attempt at efficiency, it is a step towards cultural change. We can call it a blend of agile philosophy with lean thinking. DevOps unites the efforts of every team involved in the project and that too with tighter integration. This cross-department integration between developers, QA engineers, and system admins is more amazing than it sounds.

 

Why is DevOps used?

DevOps allows Agile Development Teams to implement Continuous Integration and Continuous Delivery. This helps them to launch products faster into the market.

Other Important reasons are:

1. Predictability: DevOps offers significantly lower failure rate of new releases

2. Reproducibility: Version everything so that earlier version can be restored anytime.

3. Maintainability: Effortless process of recovery in the event of a new release crashing or disabling the current system.

4. Time to market: DevOps reduces the time to market up to 50% through streamlined software delivery. This is particularly the case for digital and mobile applications.

5. Greater Quality: DevOps helps the team to provide improved quality of application development as it incorporates infrastructure issues.

6. Reduced Risk: DevOps incorporates security aspects in the software delivery lifecycle. It helps in reduction of defects across the lifecycle.

7. Resiliency: The Operational state of the software system is more stable, secure, and changes are auditable.

8. Cost Efficiency: DevOps offers cost efficiency in the software development process which is always an aspiration of IT companies' management.

9. Breaks larger code base into small pieces: DevOps is based on the agile programming method. Therefore, it allows breaking larger code bases into smaller and manageable chunks

 

 

 

When to adopt DevOps?

 

DevOps should be used for large distributed applications such as eCommerce sites or applications hosted on a cloud platform.

 

 

When not to adopt DevOps?

 

It should not be used in a mission-critical application like bank, power and other sensitive data sites. Such applications need strict access controls on the production environment, a detailed change management policy, access control policy to the data centers.

 

                                              

 

An illustration like this but with 7 points mentioned below in the

above or below illustration as another option

 

                                                                                              or

DevOps cycle

What is DevOps Lifecycle?

 

To understand the DevOps, it is essential to understand the stages of the DevOps lifecycle. The continuous DevOps lifecycle incorporates seven stages as discussed below:

1). Continuous Development - (Plan application objectives and Code the requirements)

In the first phase of DevOps lifecycle, the development of software happens continually. The entire development procedure is isolated into little development cycles. In this way, it becomes easier for a DevOps team to accelerate software development and distribution procedure.

 

2). Continuous Integration - (Plan Tests and Build the product)

The continuous integration process automatically starts after development and demands a working connection between development and operational teams. In order to accomplish this, integration must be performed right on time and all developments understandable to every member of the teams. It includes several steps like the planning of tests that will be carried out in the next phase, understanding the code to produce the desired outcome as needed in the initial project documentation. Continuous integration is the seamless process in DevOps that leads to the next phase in an efficient manner.

 

3). Continuous Testing - (Verify the product for actual usage in a live environment)

The testing procedure analyzes the actual utilization of an application within the DevOps. Beta analyzers generate outcomes.  The testing procedure gives additional information about various aspects of an application that is directed to the development procedure to improve the application.

 

4). Continuous Monitoring - (Monitor the product output and find the problem areas)

The monitoring phase is the operational phase in DevOps where key information about application usage is recorded and carefully processed to find out trends and identify the problem areas. It enhances the operational efficiencies of a software product that may occur in the form of documents or produce massive data about application parameters when the application is in a continuous use position.

 

5). Continuous Feedback - (Improvise the current product and helps to release new versions quickly)

The application performance is improved consistently by analyzing the outcome of the product. The continuous feedback is an important phase of the software application where client’s feedback is a big asset to improve the working of the current software product and release new versions quickly based on the response.

 

6). Continuous Deployment - (Ensures product is deployed with maximum accuracy)

The deployment procedure is accomplished so that any changes made in the code should not affect the functioning of high traffic website.

 

7). Continuous operations - (Automate release process with shorter development cycles)

All DevOps operations depend on consistency and delivery procedure is completely computerized.  It enables organizations to quicken the general time of advertising.

It is now clear that continuity is the critical factor in DevOps which removes the overflowing steps.  These abundant steps resist the development, take it longer to identify problems and create a superior version of the item.

 

 

What are the six benefits of DevOps?

1.Speed

Move at high velocity so you can innovate for customers faster, adapt to changing markets better, and grow more efficient at driving business results. The DevOps model enables your developers and operations teams to achieve these results. For example, microservices and continuous delivery let teams take ownership of services and then release updates to them quicker.

 

2.Rapid Delivery

Increase the frequency and pace of releases so you can innovate and improve your product faster. The quicker you can release new features and fix bugs, the faster you can respond to your customers’ needs and build competitive advantage. Continuous integration and continuous delivery are practices that automate the software release process, from build to deploy.

 

3.Reliability

Ensure the quality of application updates and infrastructure changes so you can reliably deliver at a more rapid pace while maintaining a positive experience for end users. Use practices like continuous integration and continuous delivery to test that each change is functional and safe. Monitoring and logging practices help you stay informed of performance in real-time.

 

4.Scale

Operate and manage your infrastructure and development processes at scale. Automation and consistency help you manage complex or changing systems efficiently and with reduced risk. For example, infrastructure as code helps you manage your development, testing, and production environments in a repeatable and more efficient manner.

 

5.Improved Collaboration

Build more effective teams under a DevOps cultural model, which emphasizes values such as ownership and accountability. Developers and operations teams collaborate closely, share many responsibilities, and combine their workflows. This reduces inefficiencies and saves time (e.g. reduced handover periods between developers and operations, writing code that considers the environment in which it is run).

 

6.Security

Move quickly while retaining control and preserving compliance. You can adopt a DevOps model without sacrificing security by using automated compliance policies, fine-grained controls, and configuration management techniques. For example, using infrastructure as code and policy as code, you can define and then track compliance at scale.

 

 

 

 

What is the CALMS Framework for DevOps? (Culture, Automation, Lean, Measurement, Sharing)

Created by Jez Humble, co-author of The DevOps Handbook and Accelerate, the CALMS framework is used as a means of assessing whether an organization is ready to adopt DevOps processes, or how an organization is progressing in their DevOps transformation. It is based on the following five pillars:

·        Culture. Before silos can be torn down, there needs to be a culture of shared responsibility, or at least a group of people devoted to establishing that culture in a grassroots type of way, with management approval and support.

·        Automation. Similar to the technical practices centered around continuous delivery mentioned above, teams undertaking a DevOps transformation should be devoted to automating as many manual tasks as possible, especially with respect to continuous integration and test automation.

·        Lean. Development teams are making use of lean principles to eliminate waste and optimize the value stream, such as minimizing WIP, making work visible, and reducing hand-off complexity and wait times.

·        Measurement. The organization is devoted to collecting data on their processes, deployments, etc., in order to understand their current capabilities and where improvements could be achieved.

·        Sharing. A culture of openness and sharing within and between teams (and enabled with the proper tools) keeps everyone working toward the same goals and eases friction with hand-offs when issues arise.