How to become a DevOps engineer
-
3699
-
1
-
0
-
0
It is proven time and again that DevOps approach to software delivery and infrastructure management is hugely beneficial for businesses. This is why the demand for DevOps services is steadily high, as literally every business operating online needs them — but not all can actually hire good DevOps engineers. Thus said, if you are a system administrator in search of professional growth or a software developer looking to conquer a new frontier, or just a person with no previous IT experience and want to become a DevOps engineer — rest assured you will be employed by one company or another.
But how to achieve this and actually become a DevOps engineer? You must get the theory straight, learn the basics of key tools and practice your skills with various software delivery scenarios. In short — you need to work hard to become a DevOps specialist, but it can be done in 6 months or so — and even faster if you finish some hands-on training offered by Managed Services Providers.
There is a well-known saying that “there are Junior DevOps engineers, but there are no young ones”. This means that DevOps methodology requires some pretty in-depth understanding of cloud architecture and software delivery practices, as well as hands-on experience with Linux system administration. Thus said, you cannot skip gaining the experience, you need to earn it by doing. However, in order to succeed you need to stand on the correct footing, do the right things and know what you want to achieve in the end.
DevOps — methodology of risk minimization
There are multiple definitions of DevOps, which are mostly quite convoluted and unclear. Different people define DevOps differently — based on their unique experience. As IT Svit is a Managed Services Provider and an IT outsourcing company, we use the following definition of DevOps:
DevOps is a methodology of delivering software with minimal risks and in minimal time.
Multiple “experts” state that the DevOps team is a combination of Devs, QA and Ops, who teach each other their skills so that Devs can configure the infrastructures and Ops engineers can write the code and perform testing and QA for it. The famous “DevOps circle” illustrates this concept.
Please believe us, this is utterly false. While a DevOps engineer must know some programming language (Python for scripting at least, the more the merrier), he or she should never write the application code, nor should they test it. Thus said, the picture makes perfect sense if you know it is about GOALS, not SKILLS. Just think about it.
- Software developers want as many new features to be released as possible — and it might mean lots of bugs and post-update service downtime.
- QA engineers want as few bugs brought to production, as possible (ideally – none). They would rather exceed the deadline than miss a bug to be discovered by a user in production.
- Ops engineers want as little crashes and downtime in production as possible and each new update is a change, meaning it is a risk. Thus said, they want each update to be properly tested and must stand watch to rollback if needed.
Now scroll back to the definition we gave above. DevOps is all about minimizing SDLC risks while ensuring the timely delivery of high-quality products and services. How is it done?
DevOps engineer is a system engineer, first and foremost. The code is written and tested for quite a short time, as compared to the time it runs in production. Therefore, the code must be written in a way to ensure maximum performance and scalability, security and ease of monitoring in production. In particular, this means building either monolith apps or splitting them to loosely-coupled microservices interacting via RESTful APIs.
Thus said, DevOps methodology emphasizes communication and collaboration. Before starting a new project, the Devs, QA and DevOps specialists discuss how to build and test a product to ensure its maximum stability and performance in production. Once this is decided, the DevOps engineers build automated digital pipelines that minimize the time and effort required to turn code commits into working products. Developers write automated unit and integration tests, QA engineers perform high-level testing, DevOps prepare the scripts needed on any stage of the SDLC to minimize the risk of human error.
This ensures product development and infrastructure management operations require as little daily attention, as possible. This way, DevOps engineers can free up time for important things (like getting rid of technical debt, optimizing the infrastructure, removing performance bottlenecks, etc) instead of constantly putting out the fires. Most importantly, with DevOps pipelines, you can ensure there are failsafe release strategies (Canary, Blue-Green, etc) and easy rollback scenarios. Remember — DevOps is an ethos of collaboration between all parts of your IT department, allowing to achieve your business goals with minimal risk.
Path to DevOps: Linux, Python, AWS
As you see, DevOps is largely about Linux (or Windows) system administration, scripting in various languages (Python, Ruby, Scala, Golang) and public cloud management. Naturally, you need to be apt with all these three components to have a solid ground for a journey to DevOps.
Thus said, you need to practice with system administration, writing scripts and managing public cloud computing resources. Why did we select the aforementioned three?
- Linux is the default server operating system worldwide. Windows Server is a great choice for global corporations that have to manage distributed profile bases of their workforce using Active Directory and run their daily operations using Windows Productivity Suite. However, Linux is used by 90% of businesses out there, so gaining experience with Linux system administration will never go to waste.
- Python is the most popular programming language nowadays. It is quite simple to master at an appropriate level, it simplifies scripting greatly and it is also used in Big Data solutions (which are the next big thing after DevOps, so you hit two birds with one stone)
- AWS is the most popular public cloud worldwide, and it offers a free trial account — so you will be able to design and build your sandboxes until you are quite sure of what you are doing.
Naturally, having expertise with more than Linux, Python and AWS is great — but these 3 are the cornerstones of almost any DevOps project. If you have this proficiency already — great. If not — start learning all three at the speed most convenient for you. Even dedicating a couple of hours daily after work for 6-12 months to studying these instruments will give you a good understanding of most things you need.
DevOps tools to master
Now, you must understand there are certain stages of software delivery, and each of these stages requires using some tools to achieve the needed result.
Configuration | Version control | Containerization | Deploy | Run | Monitor |
Terraform, Ansible | Git, GitHub,GitLab | Docker, AWS Lambda | Jenkins, AWS CodeDeploy | Kubernetes, GKE, ECS | ELK stack, Prometheus, AWS CloudWatch, Google Stackdriver |
All of these tools have extensive knowledgebases. If you are already working in the IT industry, you must have used at least some of them already. If not – read their FAQs and follow the training wizards to get a grasp of what every tool can do. This will take you another hour or two daily — and in 6-12 months, based on your background, you will master all of them. This will be enough to apply for a job at literally any company looking for a DevOps.
There are several important notes:
- We excluded the Test stage, as the DevOps engineer should never test the code. He/she should only prepare the scripts needed to provision the environments for building and testing new code. Unit and integration tests are done by the developers locally, higher-level testing is done by QA engineers on the staging server before pushing the code into production.
- Don’t mistake “basics” with “enough”. You can get acquainted with these tools in around 6 months, but it does not mean you can tick the box and move on. These tools are thee building bricks of literally any infrastructure, they have an active community behind each of them and they are actively developed. You need to practice with them regularly to keep abreast of their evolution.
- Don’t delve too deep into AWS. AWS dashboard is clogged with services and tools you can use. Learning them all is impossible and not practical. To be able to build an operational AWS infrastructure you will need but several modules: Amazon VPC, EC2 Elastic Compute instance, IAM, S3 Secure Storage, CloudWatch for monitoring, Elastic Load Balancing and Security Groups. You will learn the rest as the need for them arises.
Thus said, if you are really aiming for landing a job as a DevOps engineer, you would need to invest 2-3 hours 5 times a week for 6-12 months. This is quite a doable endeavor for a determined person — and it will allow you to get a firm understanding of what DevOps pipelines include and how to utilize these tools to reach the business objectives.
Conclusions: you can become a DevOps engineer in 6 months!
This brief overview was intended to illustrate the main steps you need to make in order to become a DevOps engineer and get a well-paid job that will be needed for the years to come. Based on your technical background and devotion, it can take between 6 and 12 months and will be the beginning of a new and exciting chapter of your life — the DevOps journey! Should you have any more questions — IT Svit is always ready to answer!