Introduction
2022 and 2023 was brutal for people in IT. Gone are the good days of 2020/2021, when companies had all the money in the world to hire like crazy with insane salaries. Now people are laid off left and right, hundreds of applicant for a single position. I want to capture this moment of time as I struggle to battle with all the people out there looking for a living.
Job Titles
DevOps engineer is a peculiar position to find, for both employers and job seekers. First, it’s not exactly as easy as looking up job for software engineer. We have:
1. DevOps Engineer
2. Site Reliability Engineer
3. System Integrator
4. Build & Release Engineer
5. Cloud Engineer
6. Platform Engineer
…etc
How does it work?
The difference in the title more or less describe the difference in the approach each company has with this position. And that is the second point: everyone does it a little differently. The general philosophy is the same, “to make the company works faster, smoother, and more secure”. But in terms of how to tread the ocean between Developer and operation, everyone has slightly different idea, and tech stack. That’s the third point: everyone uses slightly different tech stack for the same purpose. We can roughly define them based on certain categories:
- Development flow
Git is the undisputed champion here. But sometime you might find stuff like SVN. You will want to know how dev build, deploy, and test. - Operation system
Depends on the company, you might be on Linux, Windows, or both. - Programming
One of the biggest concept of DevOps is automation. You will need to know how to script your way out of all the annoying tasks, like Bash for Linux, Powershell for Windows, and maybe some other language of your choice.
If the position needs to make internal tools, you will also need to be familiar with the programming language that people use at work there, like Python, Ruby…etc - Container
Docker is the number one choice you will see in this category. Make sure you know about it - CI/CD
This is one of the primary function of DevOps Engineer. You will oversee the creation and maintenance of pipeline that ship the code from developer, through QA and BA, and eventually Production. There is a lot of choices out there too. Microsoft has Azure DevOps. Jenkins is one of the oldest and popular player in the market. Other products like GitLab, GItHub(Action), Bamboo, Octopus Deploy…etc also exists. General philosophy would be the same across different tool. You just need to get used to using it. - Cloud provider
In terms of infrastructure, every company also has their unique approach. Generally, it’s either on-premise server or cloud. With cloud, AWS is the leader of the market. You will see a lot more job opportunities with them. Azure is the runner-up. With Google Cloud(GCP) on third. But for some companies, they might also have multi-cloud or hybrid(on-prem + cloud) architecture. So you might be asked about more than one provider. - Infrastructure-as-Code(IaC)
Traditionally the infrastructure was provisioned through GUI, and maybe sometimes scripts. Nowadays, Terraform takes the crown in providing the capability to define infrastructure in code. This is more flexible while easier to maintain. Honourable mention is Azure’s ARM template and Bicep - Configuration Management
Right there with IaC is configuration management tool that allows reuse and federate the process of creating and maintaining the servers. Tools like Ansible, puppet, chef, salt stack are all in this domain. Ansible would probably be the most popular choice here. - Container Orchestration
Kubernetes(k8s) is quite undisputed here. Even cloud provider would have integrated kubernetes services like Amazon Elastic Kubernetes Services(EKS) or Azure Kubernetes Service.
- Monitoring
This is another category that varies quite a lot, you’ll see stuff like Grafana/Prometheus, ELK stack…etc. And each cloud provider might have their own monitoring solution built in for their services. Luckily, it’s not too hard to get around things as the general concept is the same.
These are some of the stills/tools that are frequently mentioned in a job description of a DevOps Engineer. As you can see, this covers quite a broad area and is usually not taught in a school. Therefore, most of the devops engineer in the industries came from existing personnel in dev or ops and convert to tread the water in between.
This is the conclusion of part 1! For next part, I’ll cover some of the tools and websites that I have used in looking for jobs. Please let me know if you have any comment or suggestion!