Most of the occupations I’ve worked in have a concrete definition in terms of what the title entails. For example, a back-end engineer would work primarily on the server-side, which consists of programming languages such as C#, Java, and PHP and frameworks that would probably correlate such as .NET Core, Spring, and Laravel.
But one occupation tends to be the most obscure and interesting to me, and that is DevOps. The reason as to why this occupation draws my attention is that it doesn’t necessarily have a concrete definition, but is a combination of practices that aim to improve the Software Development Lifecycle (SDLC). To delve a little deeper into my research, I’ve found the common tools and practices that DevOps seems to follow, and here are my results.
The Short Definition.
If you’re in a rush, I’ll put it short and simple – DevOps is a combination of software practices, it involves software to build on a Continuous Integration and Continuous Development delivery pipeline (CI/CD). The tasks of DevOps often involve automation and testing to achieve a seamless development life cycle.
The Long Definition.
If you’re still reading this, I hope I haven’t bored you to this point. but now we can get into the nitty-gritty details of what DevOps entails on a microscopic level (Or at least a more detailed level). Here are some huge advantages of embracing DevOps that we can list:
- Continuous Integration
- Automation Testing
- Infrastructure as Code (IAC)
- Project Workflow and Management
Continuous Integration has been a huge topic discussed in the field of DevOps, due to the fact that it assists in streamlining the deployment process. This in return assists in tracking bugs and errors of a release at an earlier stage. Testing could be automated in an environment that mimics the production environment, and deployment could be seamless once developers commit to a repository where the changes are approved and pushed to production. In this scenario, This eliminates human duplication processes between development and production environments via the CI/CD tool. A dry rundown of what these tools aim to achieve is to build, test, and deploy. Some examples of these tools are:
Okay, we’ve talked about continuous integration, but what about automation testing? in the old days (and even today) companies could hire QA testers to perform regression tests upon a release, this could involve GUI based testing where the QA expert would click several buttons and interact with several forms to ensure that the deliverables were met, and nothing broke. This process often takes a large amount of time that automation testing can sometimes eliminate, which are the repetitive tasks of regression testing. The most common test automation framework used in QA is Selenium.
Infrastructure As Code (IAC).
Working as a freelancer, or a small team with a company of 8 to 20 employees, it doesn’t seem like much of a hassle to install software on each employee’s laptop or computer, let alone manage these devices. However, the issue would arise when there are over 400+ employees at the company, one system administrator would not enjoy single handily managing all 400+ laptops, this is where infrastructure tools come into play where an administrator can manage hardware solution via a script that can be deployed to multiple devices.
Let’s take a look at another scenario where an employee has configurations on their local machine that is different from another employee, we can already see that some issues can arise with projects that must match local machine configurations. Containerization helps in solving this issue by attempting to keep all system configurations aligned which can be packaged and shipped from one machine to another, requiring a script to run the project. Some of the most popular configuration management tools include:
Project Workflow and Management.
Last but not least, DevOps creates a rich workflow where Software Development and IT Operations can thrive through project management tools, version control systems (VCS) which allow developers to track issues and bugs upon release, and manage code changes among massive teams via a hosted code repository. Some of these examples are listed below:
Project Management Tools:
Version Control System (VCS):
If you’ve made it through the end of this article, I hope you’ve gained some insight on DevOps and the tasks that the occupation entails. With the plethora of tools and practices used, it’s no wonder that this specific occupation could be lucrative in the sense that you are managing several tasks seemingly at the same time.