Some time ago, I am about to complete 20 years of career, and at 40 years old, I stopped to rethink my life as a whole, and of course, my career is part of it. It sounds like a midlife crisis, but it’s not exactly that. However, that’s a subject for another post.
And before you ask yourself if DevOps is for you, know that this is a path that serves both professionals who came from infrastructure, like me, and professionals who came from development, like my friend and partner, Tech Lead Leonardo Lemos, who kindly revised this text or even professionals who intend to enter IT.
As I write this post, the technology market in Brazil has a GAP of approximately 400,000 vacancies, and the forecast is that these numbers will double over the next two years. As colleges train far fewer professionals than the market seek, in addition to competition from outside companies that pay in dollars or euros.
Finally, specialists state that the Platform Engineer profession will be in the most demand in the market next year.
Cloud Engineer, DevOps Engineer, SRE, or Platform Engineer?
Except for Cloud Engineer, for the sake of understanding, we will treat all other functions as DevOps since their stack is very similar. “What about Cloud Engineer?” It is already part of the DevOps stack, so we will not focus on it in this text.
An interesting point to mention about Cloud Engineer is the only one I will focus on, is that it usually has a multi-cloud view, which expands the range of options for this professional in the market.
And finally, what is DevOps? He is Developer, is Infrastructure, and at the same time, he is neither exactly. But how so? Come with me and I’ll explain. First of all, my name is Gustavo Schiavon. I’m a DevOps Engineer at Convenia, one of the pioneers and main HR Techs in Brazil.
The DevOps Path
The DevOps track encompasses several tools for different purposes, and yes, you need to specialize in at least one of these tools. Remember, Cloud Engineer, so the cloud is one of those tools. After all, you are also infra.
In addition to the cloud, you will have to familiarize yourself with some CI/CD tools (remember that name), observability, messaging, logs, code repository, tests, programming language (automation), container, container orchestration, queues, and one for infrastructure as code, because don’t forget you’re also a Dev.
Let’s break into parts, dismembering and demystifying the DevOps stack
Cloud – Let’s start with the item without which nothing exists, and which I suggest is your starting point. Although there are dozens of players on the market, the main ones are still AWS, Azure, GCP, and OCP. They all let you use most of the services for free to try, and some services are even free forever. Of them all, AWS is the biggest and most mature of them all, with a great learning trail on the platform itself.
CI/CD – This is the tool, and why not say, the concept that best defines the DevOps culture. Imagine an application that “almost” never goes down. Every duty officer dreams, isn’t it? Part of what makes this possible are the CI/CD pipelines, which are instructions that will tell you where to get the code, how to build the container, what repository to save it from, and then where to deploy it. Some main ones are Jenkins, Github Actions, and Circle CI. Jenkins tends to be the most used.
Observability: There is a saying that you can’t measure what you can’t manage. It’s also true that nobody likes to be at the whim of the wind or to be caught by surprise. Observability tools give you an overview of the health of your environment and alert you in case of failures or the use of resources above normal. The main ones are Prometheus, Zabbix, and CloudWatch for when working with AWS. Just as Zabbix used to be the main option for on-premises environments, Prometheus is a widespread solution in the cloud. In both cases and for CloudWatch as well, it is common to use Grafana to centralize the data.
Messaging: Gone are the days when messaging served only to exchange information between people. Today, these resources are directly linked to monitoring tools, for example, to alarm the team in real-time in case something relevant needs to be analyzed. Some good examples of such features are Slack, HipChat, and IRC. Slack is a widely used option that allows different integrations, such as hooks, API tokens, and others.
Logs: If observability tells you that there is something wrong, it is the logs that will tell you exactly what it is, knowing that your machine has high CPU consumption is important, but better than that, is understanding what in your application is causing this. Examples of tools that deliver this vision are Loki, Sentry, and New Relic. But a widely used solution is the ELK stack, which is composed of the trio ElasticSearch, LogStash, and Kibana.
Code repository: As important as having clean code, it is to have a versioned and revised code. Luckily for us, several solutions help in this work. The main ones are GitLab, GitHub, and GitBucket. GitHub is usually the most used.
Tests: Like most processes in this culture, application tests must be automated routines (synthetic tests), even so, that this also enters a monitoring mat, and we can have control if some resource is not available or if the time response is not adequate. Some options are Selenium, Cucumber, and Datadog. At Convenia, we use Datadog to carry out synthetic monitoring and generate SLI metrics (service level indicator), and linked to it we have an OKR (objectives and key results).
Programming language: Although this is not the main focus of DevOps, it is important to know programming logic because, to create automation routines, it will almost always be necessary to create code for it. The first language to remember when thinking about this is Python, in addition to understanding Shell Script, and depending on the track, Powershell. Just as Python is often used as one of the main languages for automation, Shell Script is the native resource on Linux, which allows you to create scripts to automate processes, by the way, if you still don’t know Linux, especially the terminal part, I strongly recommend that you study.
Container: Every modern application is designed to run as a microservice. Therefore, it is essential to understand the container, how they work, how they talk to the server, and how they deliver the application. Although there are other options on the market like Podman, I strongly suggest that you study Docker, which is the standard that the market works with, and it is a resource that can be accessed easily through the Linux terminal.
Container Orchestration: Working with containers stand-alone is possible, but it is painful, in addition to running away from the continuous delivery DevOps culture most of the time. Thus, there is a friendlier way of delivering and managing containers through an orchestrator. He will deliver in a better way, and manage possible falls, for example. The industry standard in Docker container orchestration is Kubernetes, but Swarm is also used, mainly because its implementation is considerably simpler than Kubernetes.
Queues: The modules of an application divided into microservices can receive many requests, and one of these modules may become unavailable when another module requests it or needs to deliver a resource. A queue system operates by managing these requests and deliveries in an orderly and asynchronous way. RabbitMQ, as well as Kafka, handle this management.
Infrastructure as code: Without a doubt, the icing on the cake is infrastructure as code, which transforms the Infra professional into a Dev and vice versa. Although it is not 100% necessary, it is what allows you to have all the advantages of dev in infra, such as code review, versioning, etc. Several languages are widely used to provision infrastructure, such as Terraform, Ansible, Puppet, and Chef. Of all of them, I recommend starting with Terraform, which in addition to being widely used to provision resources in various technologies, is developed by HashiCorp, which develops other cloud-oriented solutions.
And how do I get into this?
So I suggest you prepare yourself and don’t be afraid to take a step back. “But I’m already a Dev or Infra Senior. Will I still have to return two houses?”. Yes, it goes. “Each choice is a waiver, that’s life”. So sit down, put your priorities on the scale, and score the advantages of staying where you are or experiencing this new moment in your career.
He came to the conclusion that this is exactly what you want, so take time out of your day to study, create accounts on platforms, research, ask questions, participate in WhatsApp groups, Telegram, Discord, and discussion forums, and when you feel safe, if the candidate in processes to measure fever, the vast majority have challenges where you can put into practice what you’ve learned so far.
Now it’s up to you, and if you need a boost, just call!
*The content of this article is the author’s responsibility and does not necessarily reflect the opinion of iMasters.