mort9 content
This repository is meant to follow and broadcast the latest advancements in the DevOps industry in a minimalistic and simplified manner. I’m a computer scientist and a DevOps engineer and I would share all my real-world experience and research on DevOps through this repository.
Described Topics:
“DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.” [Amazon AWS]
It is a joint of two names Development and Operations. This means that DevOps has a wider area of involvement in the software development process. A DevOps engineer is in direct contact with the whole Development team while organizing infrastructural aspects of the software with the Operations team. Not only that, some tasks in both sides are handled by the DevOps team. But what is DevOps really?
Some people refer to DevOps as a methodology, some mention it as a strategy, and some say it’s a culture. I personally think that all of these definitions are true. Actually, DevOps is a combination of all that has been learned in terms of software management, development, and maintenance, plus the IT aspects of the organizational-improvement-strategies.
A DevOps Engineer is actually a multi-purpose software engineer who has been curious enough to move farther from his area of focus to understand how things beyond his skill-zone, work. For a DevOps engineer, there is no need to be a highly professional software developer. The important thing is, a DevOps engineer should fully understand all aspects of the software development process. He should know how software is built, tested, run and, monitored. This is not a simple task. The build process is different from one programming language to another. It depends on the environment (machine resources, OS, build-tools, etc.).There are even more dependencies that apply to the test, deployment and, monitoring steps. Learning through all these processes needs a huge amount of experience. However, it’s not that if you don’t know about a new programming language that just came into the market, then you’re not a good DevOps engineer.
The MOST important characteristic of a DevOps engineer is Responsibility. Yes, you heard that right. Experienced managers know that a DevOps engineer is like the heart of the development process. He is the one who is always compassionate about what is going on in all veins of the company. In other words, the DevOps engineer is the problem-solver who cares about all problems that happen in any of the 7 aspects of the software-development process listed bellow:
In a DevOps environment, everything happens lively, thanks to the automated CI/CD pipelines. If something breaks, the DevOps engineer is amongst the first, who go looking into it. It could be a programmer’s misuse of a service, a system failure, a power outage, or even company financial problems. It’s not that he should read and understand every programmer’s code and try to fix it. But it’s more like checking the system’s health and finding out what could be the cause of a problem. Besides all these, the DevOps engineer is actively present in the software-modeling-process, change-management-cycle and all other areas that apply to building and running healthy software.
Automation is the act of introducing new methods in a system with the purpose of reducing the amount of labor for achieving a specific goal. For example in car driving the goal is to drive the car from point A to point B. In IT industry automation is defined as “The use of software to create repeatable instructions and processes to replace or reduce human interaction with IT systems. Automation software works within the confines of those instructions, tools, and frameworks to carry out the tasks with little to no human intervention.” redhat.com Adding some corrections to this definition, we can remove the “repeatable” word as nowadays AI is getting capable enough to interact and automate non-repeatable tasks as well.
Automation has different levels. Let’s do a quick jump into the autopilot cars world. Below we can see the 5 levels of automation described for the cars :
In DevOps we can’t reach to the full automation level. But we can try our best to get close to it on Level 4.
“Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. It’s a primary DevOps best practice, allowing developers to frequently merge code changes into a central repository where builds and tests then run.” - Atlassian
Continuous Integration could be a huge relief when it comes to running a development
Version Control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information. Version control is a component of software configuration management. ~ Wikipedia
One of the most popular VCS tools in use today is called Git. you can read about Git in my git documents.