A Beginner's Introduction to DevOps
Tags: devops, cicd, beginners
Published: 2023-03-27 09:57:01

> We live in a society where customer satisfaction and application performance are critical to the success of any software product designed for human consumption. Since developers build applications, they are prone to errors, which may affect code quality. As a result, necessary updates and changes may need to be integrated into the software in real time without interfering with the application's performance.

> Many organizations have realized in recent years that using the set of practices involved in DevOps is the key to a faster release cycle of quality software, including collaboration between Developers and Operations teams.

This article will teach you about DevOps, the Software Development Life Cycle (SDLC), its limitations, and the advantages of DevOps over the traditional system. You'll also learn DevOps practices, terminology, and case studies.
Table of Contents

What is DevOps?
Understanding the SDLC
A system architecture for an e-learning platform
Limitations of the Traditional SDLC
Benefits of DevOps over the traditional system
Set of Practices and Terms used in DevOps
Case Studies: Examples of Companies implementing DevOps practices
● Google
● Microsoft
● Netflix
● Amazon
Conclusion
Resources

## What is DevOps?
 
DevOps is a set of practices that fosters collaboration between IT teams and software developers to automate the operations involved in both development and IT to achieve faster software deployment and code quality.

_**I know, that's a lot of buzzwords, but don't worry, you'll understand better as you read on**_

You must first understand the Software Development Life Cycle process before diving into DevOps.


## Understanding the SDLC
The Software Development Life Cycle comprises processes/stages that follow a hierarchical pattern. These stages are as follows:

- Planning Stage —- This is where the project's scope (features and functions) and everything needed to develop the project are defined.

- Analysis Stage — This is where we analyze the requirements that have been gathered, which could be the components (i.e. the building blocks that would make up the system). For example, the hardware, software, data exchange mechanisms, data itself, interfaces that promote interaction between the components and sub-systems, and network infrastructure for the application's running and deployment.

Then, we define their use cases and apply our findings to conceptualize the system architecture, which defines how the system components will collaborate to achieve the project's end goal.

See the illustration below to better understand what a system architecture entails:

A system architecture for an e-learning platform



Design stage —The next stage is to create the detailed design from the software architecture, which includes the user interface and database schema.

Below is an illustration of a System design:


Implementation stage - This is where the integration of the components that have been designed happens — the writing of the code and unit tests. 



Testing stage - This is the stage where the software is tested to find errors or bugs before production.



Deployment stage - This is the stage at which the application is made available for users to install.



Maintenance stage - This is where the software is monitored to detect any problems, fix them, or make necessary updates.



The stages listed above can be carried out using different methodologies such as, the Waterfall model (which employs a sequential approach) and the Agile methodology (which uses an iterative approach). 

The Waterfall model requires completion of each stage before moving on to the next, whereas Agile focuses on continuous feedback and communication between a team of developers and customers to ensure that the software developed meets the needs and requirements of the customers.

I'll emphasize the Agile methodology because it is the method DevOps uses to carry out SDLC. What kind of practices happens in the Agile methodology?

Continuous planning and prioritization of work
Continuous integration and testing of code
Continuous delivery of working software
Regular retrospectives to evaluate and improve the process

Limitations of the Traditional SDLC
The Waterfall model was the traditional SDLC methodology before DevOps, and it has several limitations, including the following:

Lack of flexibility: When changes are made to the software later on, there is no going back to make any updates because the model uses a linear approach. It would mean restarting the entire SDLC from scratch.

Lack of customer involvement: When developing a product for human consumption, including customers in the SDLC process is critical to ensure that the product meets the customer's needs. **I mean, what's the point of a product that customers don't find useful, right?**

Slow development: The Waterfall model's architecture makes it much more challenging to develop and make software available to users.

High Cost: With the sequential approach to SDLC, a significant amount of testing, which is costly, will be required because there is no going back if an error occurs in the future.

Because of these limitations, many organizations have shifted to an iterative approach to SDLC management. DevOps, on the other hand, employs a flexible and iterative approach — the Agile methodology.

Let's look at some of the advantages DevOps provides to compensate for the limitations of traditional SDLC.

Benefits of DevOps over the traditional system
DevOps has several benefits compared to traditional SDLC (Software Development Life Cycle). They include the following:

Flexibility: DevOps is designed to be flexible, compensating for the lack of flexibility caused by traditional SDLC methodologies. The speed with which DevOps responds to and updates software demonstrates flexibility.

Collaboration: DevOps encourages teamwork and collaboration between development and operations teams.

Quality: DevOps enhances code quality through practices such as automated testing and infrastructure as code.

Customer satisfaction: DevOps allows customers to participate in the SDLC process, resulting in software that meets the customer's needs.

Cost: DevOps significantly reduces costs by employing an iterative rather than a sequential approach, which typically necessitates rework.

Faster release cycles: DevOps reduces the time it takes to release software by automating collaboration between development and operations teams.


Next, let's look at some of the DevOps practices and terminologies

Set of Practices and Terms used in DevOps

As you learn DevOps, you will come across these terms, and it is good practice to understand what they mean and how they work. Let's look at some of them:

Continuous Integration & Continuous Delivery (CD/CD):: DevOps ensures that every piece of code tested by developers is integrated as soon as possible. Also, DevOps ensures software changes are automatically built, tested, and deployed to production.

 


Infrastructure as Code (IAC): To configure and manage infrastructures, DevOps employs tools such as Ansible, Puppet, and Chef.



Automated Testing: DevOps automates testing such as unit testing, integration testing, and acceptance testing.




Monitoring and Logging: DevOps also monitors the system's performance to identify any problems or errors affecting the system's overall performance.



Collaboration and Communication: DevOps promotes teamwork and communication between development and operations teams.




Agile Methodologies: DevOps employs Agile methodologies such as Scrum to respond to software changes and provide continuous customer feedback.



Automation Tools: I've mentioned several times that DevOps uses automation. Several tools, including Jenkins, Docker, and Kubernetes, automate the process.



Version Control: A code change management system that allows developers to track changes and collaborate with others.




**Before learning a new technology, it is critical to understand real-world applications of the technology. It provides a better idea of what you can create with that technology!**

Next, we'll look at some real-world DevOps use cases.
Case Studies: Examples of Companies implementing DevOps practices
These organizations use DevOps practices such as Continous Integration and Delivery, automated testing, and containerization to easily and quickly deliver new services and features, as well as high-quality software.
Google



Microsoft

Netflix


Amazon


Conclusion
In this article, we explored what DevOps is, the limitations of the traditional SDLC and the benefits DevOps offers. We also covered the set of practices in DevOps and showed some real-world case studies.

Resources
You may find the following resources useful:
Continuous Integration & Continuous Delivery (CI/CD)
Infrastructure as Code (IAC)
Automated testing
Monitoring and Logging
Collaboration and Communication
Agile Methodologies
Automation Tools
Version Control