What is DevOps?

What is DevOps?

The software development field is vast and there are many roles. Each role has different responsibilities, and they all play their part in the software development lifecycle. To understand the software development process, let's look at the entire process.

Software Development Process

Building an application like Twitter requires all different IT roles and responsibilities to make the whole Twitter development process possible.

Software Development

Let's start with the programming: Twitter is software and an application that must be developed by a development team. The developers program the application in several different programming languages, e.g. JavaScript, Python, Java, etc.

Developers work as a team. If it's a small app they have one team per app, or they have one team per feature if it's a huge app. For example, Twitter has a team of developers for messaging features. There's also a Twitter Communities team, a Twitter Business Features team, etc.

Testing Software

These team developers write code to create advanced functionality in the app. If they find a problem or bug, they fix it. Once the development process is complete, the next step is to test the application.

Software Testing - When adding new functionality to an existing complex application, the Testing team needs to ensure that it does not break the existing application. if additions are made. You should also test the old code or functionality.

The tests are carried out by developers and dedicated testers. Once the testing process is successful, the app can be released.

Let's say a new feature is added to Twitter. The developers have completed development and tested locally, and high-level testing is in place to ensure nothing breaks. Now it's time to show our users the new feature.

This process is called the release process.

Operations - Release of Software

To launch an application, you must build the application and then run it on the servers. In the case of Twitter, it's already running on several different servers. Whenever a new feature is added, the feature needs to be added to this running code, basically the app needs to be updated. This is where the operations(Ops) team comes in.

The operations team is in charge of running software in production. They are responsible for taking the new feature and running it successfully on production servers (Upgrading application).

When they update the application, there shouldn’t be any downtime. This means that if they update the app and you’re using Twitter at the same time, the app you're using suddenly stops working and you have to wait five minutes for the update to complete.

This will be very annoying. Instead, the update is seamless, you won't even notice the app has been updated as there is no downtime, that's the responsibility of the operations(ops) team.

If the server goes down, the operations team must ensure that there is no downtime and that it is handled properly. They also have to ensure that the server can process millions of requests at the same time (Network Traffic Management). With millions of users using Twitter every day, you should drive traffic. The operations team is responsible for this.

Development vs Operations

Now, you recognize what development and operations are. Each role has different responsibilities and each requires different technical knowledge.

Technical Knowledge of Developer

  • Programming Languages

  • Frameworks

  • Databases

  • Testing Frameworks

  • Version Control and more.

Technical Knowledge of Operations

  • Linux

  • Scripting

  • Monitoring tools and more.

These two roles and their responsibilities make up most of the software development life cycle. However, they must communicate with each other. Actually, there is no interface between these two teams to communicate.

Releasing and deploying the application requires instructions from the development team because the application will have dependencies and the operations team will need to configure it correctly on the server.

What happens if the development team's instructions are not clear or the development team forgot to include some information in the instructions? Therefore, there is a chance of miscommunication. When this happens, the operations team will suffer, and it can take weeks or months for the app ready for deployment. Now,

Well, how to solve this problem?

DevOps

The solution to this problem is the DevOps culture. Now some may ask that DevOps isn't a job title.

The answer is Yes, it’s a job title, but initially, it was just a culture or way of working between developers and operations. The term DevOps first appeared around 2007 in a conference talk by Patrick Debois, also known as the father of DevOps.

Culture has become its own role and job description because it encompasses so many different concepts and tools that enable effective communication. This is how DevOps evolved.

What does a DevOps Engineer do?

Now you know that DevOps is intermediate between development and operations. A DevOps engineer should have some developer and operational skills.

These skills make it much easier for them to understand how the app works and what the operations team needs to do to run the app effectively. DevOps engineers have a subset of skills on both sides.

These abilities allow them to communicate on both sides. Now developers don't have to speak to operations, they can speak to DevOps because they speak the same language, and DevOps can convey this to the operations team in the language that the operations team can understand.

That's why DevOps became a separate role. In addition to the competencies of two distinct roles, it has evolved into its own set of skills and technical knowledge that encompasses the DevOps tools we know today.

The most important competence is the construction of CI/CD pipelines (Continuous Integration and Continuous Delivery). This CI/CD pipeline is the backbone of DevOps, It's playing an important role in the transition process from a finished application to the release process. Tools like Docker and Kubernetes will help make the release process easier and more effective.

Conclusion

I hope you now understand what DevOps is. Feel free to share this article if you like it. If you are not satisfied with this article, please let me know what area I need to improve in the comments section.

I have written this article after being Inspired by this video.

Thanks for reading. Follow me on Twitter for more articles like this!