Must-Have Skills for DevOps Engineer
1. Programming Language
- Scripting: Python / Go, an alternative to Bash script. For me, Python is a must-have if you want to be a DevOps engineer or other related Ops job.
- Back-end language/framework: Node.js - Express.js, Python - Django or Flask.
2. OS Concepts
Any basic to advance knowledge of threads, concurrency, sockets, virtualization, memory/storage, I/O management.
3. Managing Servers
- Operating System: Ubuntu, CentOS or any related Linux distros.
- Learn the Terminal: This is a must-have skill in any Ops related job.
4. Network and Security
eg. Try to secure (https/SSL) a website using Let’s Encrypt.
5. What is and Learn How To Setup a …?
- Caching Server: If you are on AWS, Use AWS ElastiCache. Use Redis or Memcached. I suggest that you try to implement Redis in your projects.
- Load Balancer: AWS’s Elastic Load Balancing, implement ELB to your production website/API if you need to support many users. Load balancing refers to efficiently distributing incoming network traffic across a group of backend servers, also known as a server farm or server pool.
- Web Servers: Nginx or Apache, both of this is a must-have skill. btw, most of the website right now runs on Apache (because of Wordpress/PHP). I suggest that you use Nginx because it handles traffic much better than Apache.
- Firewall: Learn how to implement firewalls on different cloud provider. If you are using AWS, learn VPC, Security Groups, Network ACL, NAT Gateway, etc.
6. Infrastructure as Code
- Terraform - HashiCorp’s Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
- CloudFormation - AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment. CloudFormation allows you to use a simple text file to model and provision, in an automated and secure manner, all the resources needed for your applications across all regions and accounts.
I suggest you use Terraform if your team plan to start implementing IaC, to prevent vendor lock-in. AWS’s CloudFormation is proprietary technology that can only be used in Amazon Web Service ecosystem.
Btw, You can use whichever will more likely get your team(s) on board with infrastructure as code. ;)
Use Docker! Learn it at Docker Get Started.
8. Container Orchestration
9. Configuration Management
Just use Ansible.
Why Ansible? Working in IT, you’re likely doing the same tasks over and over. What if you could solve problems once and then automate your solutions going forward? Ansible is here to help.
If you have SSH access and need to repeat the same steps on multiple servers, Ansible can do it for you. There are a few more use-cases, e.g. it’s also possible to run it on localhost on machine boot (ansible-pull), build VM images with Packer and Ansible or build Docker images. But the SSH use-case is probably the most popular.
10. Learn Some CI/CD Tools:
Learn Jenkins because it is widely used and most companies use it.
- Jenkins - The leading open-source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
- CodeBuild - fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy.
- CodeDeploy - fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.
- Drone - Drone is a self-service Continuous Delivery platform for busy development teams.
- Gitlab CI/CD - GitLab CI/CD pipelines build, test, deploy, and monitor your code as part of a single, integrated workflow. GitLab CI/CD is part of GitLab, enabling a single conversation from planning to deployment (and beyond). Open source: CI/CD is a part of both the open source GitLab Community Edition and the proprietary GitLab Enterprise Edition
- TeamCity - Enterprise-level CI and CD at a $0 price tag.
11. Cloud Providers
- Amazon Web Service (AWS)
- Google Cloud - Google Cloud is also good in Kubernetes hosting.
- DigitalOcean - good for small to medium projects.
12. Logs Management
- (ELK) Elasticsearch, Logstash, and Kibana - “ELK” 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 ingests data from multiple sources simultaneously, transforms it, and then sends it to a “stash” like Elasticsearch. Kibana lets users visualize data with charts and graphs in Elasticsearch.
- Graylog - Graylog is a free, open-source log management platform that can parse, normalize, and enrich logs and event data. Its processing rules allow you to set multiple options for routing messages, black- or white-listing, and even modifying (“enriching”) log messages before moving them to the next step of processing.
- Splunk - Splunk is well-known within the system administration and monitoring communities. Logfile sources (whether that is text file data shipped from a remote system, syslog, trap, or some other stream) are aggregated on the server running Splunk, indexed, and stored.
13. Infrastructure Monitoring
- Amazon CloudWatch - Amazon CloudWatch provides visibility into your AWS resources to monitor resource utilization, application performance, and operational health. You can use these insights to manage your application and keep it running smoothly.
- Prometheus, Grafana, and Alert Manager - mainly use this if your on Kubernetes.
I recommend CloudWatch logs to clients to monitor, store, and access log files from Amazon EC2 instances, AWS CloudTrail, VPC Flow logs, Lambda logs and other sources. At the heart of my recommendation is that CloudWatch Logs, mainly use this if your not on Kubernetes or containerize setup.