Top 5 must have tools for DevOps Engineers
Syed Nadeem
DevOps Architect | Kubernetes Expert | System Design Innovator | Multi Cloud Expert | Transforming Ideas into Robust Architectures
In continuation to my last post on How to get into Devops, I will be listing out Top 5 must have skills in-terms of technology, tool set that I feel a DevOps engineer has to have in his arsenal.
Now before we start, there is a prerequisite and I cant emphasise enough on how important its is. Basic Linux operating system knowledge, trust me I have failed so many interviews due to missing out on the questions that were targeted on this topic. If you already are in DevOps or SRE domain, then i don't need to explain how crucial it is to have Linux system knowledge and for all the folks who aspire to be in this domain cant proceed without investing their time on this topic. In the last post I had given some links which i feel are a good starting point for Linux, however there are organisations that expect you to know much more than just basic linux. To give you context, few months backs I had an interview with Apple. I took time and prepared on all the fancy points mentioned in the JD, CAP theorem, distributed system design, distributed state management, fault toleration, HA and what not. Much to my surprise, the questions asked were on File systems, Logical Volumes, Processes and very basic but core linux system essentials. So the bottom line is that, Linux is not a skill one needs to have but it's more like a Prerequisite.
So lets start this list...
Infrastructure Provisioner Tool: Defining the blueprint for the deployment infrastructure is key to Infrastructure-as-Code technologies. There are some provisioner that are very easy to learn and some are relatively difficult to grasp. CloudFormation and Terraform are the two tools that dominate the current day market, Off-late a lot of organisations also look for Red Hat Ansible Automation Platform. However my advise will be start with Terraform for the simple fact that It can provision multi vendors and has lot of ready to used module library.
Configuration Management Tool: Tracking and controlling changes in the software are managed by DevOps engineers with the help of CM tools. I started my career with SaltStack, so I have a soft spot for it. While it is very powerful and supports event driven Infrastructure, I will not recommend it for the fact that it has a steep learning curve and there are simpler tools available that can do the same and are less complicated. Ansible is what i would recommend for CM.
领英推荐
Build and Deployment Tool: This one is a no brainer, Jenkins is the most widely used tool for software build, deployment and delivery. There are other tools that are specifically targeted for cloud native CI/CD and Tekton is one such example. It's very powerful and has potential to completely dominate the Cloud Native space, however Jenkins is like that veteran actor who still plays the lead at 60 and saves the day.
Cloud Computing Platform: On-demand availability of computer system resources and I'm inclined towards AWS and AwsCli for this. Even though Google Cloud Platform is a close second but if have to pick one it will be AWS. One advantage of AWS is that once you understand how it works, you can almost straight away start using Azure or GCP as AWS covers things in a generic perspective and apart from names nothing much changes from logical prospective.
Logging and Monitoring Tool: Its actually very difficult to suggest one tool for this section as there are literally 100's of options to choose from. Instead of naming a tool I would rather suggest a Stack, ELK stack. It is the acronym for three open source projects: Elasticsearch, Logstash, and Kibana. Elasticsearch is a search and analytics engine. Logstash is a server?side data processing pipeline that sends data to a "stash" like Elasticsearch. Almost all the organisations adopt to one or all the components of this stack and you can read about them here : instaclustr
So there you have it, these are the top 5 tools that I would recommend for all the DevOps aspirants. I have not included Containerisation and Container Orchestration Engines to this list as I think It needs an entire section of its own. Not all organisations have it as a mandatory skill for DevOps, in-fact very few organisations actually have their production systems on containers. Having said that Containerisation is the way forward and I will be sharing my "how to start with Containerisation" experience soon.