After the first post now we must get deeper into this concept and understand that there are two main parts when creating an application.
We have the Development part where software developers program the application and test it.
Then we have the Operations part where the application is deployed and maintained on a server.
To get to grips with DevOps or the tasks which a DevOps engineer would be carrying out we need to understand the tools or the process and overview of those and how they come together.
Everything starts with the application! You will see so much throughout that it is all about the application when it comes to DevOps.
Developers will create an application, this can be done with many different technology stacks, and let's leave that to the imagination for now as we get into this later. This can also involve many different programming languages, build tools, code repositories, etc.
As a DevOps engineer you won't be programming the application but having a good understanding of the concepts of how a developer works and the systems, tools, and processes they are using is key to success.
At a very high level, you are going to need to know how the application is configured to talk to all of its required services or data services and then also sprinkle a requirement of how this can or should be tested.
The application will need to be deployed somewhere, let's keep it generally simple here and make this a server, doesn't matter where but a server. This is then expected to be accessed by the customer or end-user depending on the application that has been created.
This server needs to run somewhere, on-premises, in a public cloud, or serverless. Someone needs to create and configure these servers and get them ready for the application to run. Now, this element might land to you as a DevOps engineer to deploy and configure these servers and these servers run an operating system.
It is also likely that we need to communicate with other services in our network or environment, so we also need to have that level of knowledge around networking and configuring that, this might to some degree also land at the feet of the DevOps engineer.
I will say at this point though, you don't need to be a Network or Infrastructure specialist you need a foundational knowledge of how to get things up and running and talking to each other, much the same as maybe having a foundational knowledge of a programming language but you don't need to be a developer.
However, you might be coming into this as a specialist in an area and that is a great footing to adapt to other areas.
You will also most likely not take over the management of these servers or the application daily.
We have been talking about servers but the likelihood is that your application will be developed to run as containers, Which still runs on a server for the most part but you will also need an understanding of not only virtualization, Cloud Infrastructure as a Service (IaaS) but also containerization as well.
On one side we have our developers creating new features and functionality (as well as bug fixes) for the application.
On the other side, we have some sort of environment, infrastructure or servers which are configured and managed to run this application and communicate with all its required services.
The big question is how do we get those features and bug fixes into our products and make them available to those end users?
How do we release the new application version? This is one of the main tasks for a DevOps engineer, and the important thing here is not to just figure out how to do this once but we need to do this continuously and in an automated, efficient way which also needs to include testing!
This is where we are going to end this, hopefully, this was useful. Over the next few posts, we are going to dive a little deeper into some more areas of DevOps and then we will get into the sections that dive deeper into the tooling and processes and the benefits of these.
Checkout the following resources to learn more about DevOps:
Thanks for reading out! Hope you have a nice day.
Design A News Feed System In this post, we are going to design a news feed system. What is a news feed? According to the Facebook help page, "News feed is the constantly updating list of stories in the middle of your home page. News Feed includes status updates, photos, videos, links, app activity, and likes from people, pages, and groups you follow on Facebook".
Design A Notification System A notification system has already become a very popular feature for many applications in recent years. A notification alerts users with important information like breaking news, product updates, events, offerings, etc. It has become an indispensable part of our daily life.