A simple guide to becoming a knowledgeable DevOps engineer or other related Ops role. This is a tech stack guide for DevOps engineer, SRE, or any other related Ops role.
Must-Have Skills for DevOps Engineer
- Programming Language:
1.1. 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.
1.2. Back-end language/framework: Node.js - Express.js, Python - Django or Flask.
- OS Concepts: Any basic to advance knowledge of this.
- Managing Servers:
3.1. Operating System: Ubuntu, CentOS or any related Linux distros.
3.2. Learn the Terminal: This is a must-have skill in any Ops related job.
- Network and Security: eg. Try to secure (https/SSL) a website using Let's Encrypt.
- What is and Learn How To Setup a ____:
5.1. 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.
5.2. 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.
5.3. 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.
5.4. Firewall: Learn how to implement firewalls on different cloud provider. If you are using AWS, learn VPC, Security Groups, Network ACL, NAT Gateway, etc.
- Infrastructure as Code:
6.1. Terraform - HashiCorp 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.
6.2. 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. ;)
- Containers: Use Docker. Learn it at Docker Get Started.
- Container Orchestration: Use Kubernetes, If you are a AWS user, implement Docker containerization using AWS's Elastic Container Service (ECS) or Elastic Kubernetes Service.
- Configuration Management: Just use Ansible.
- Learn Some CI/CD Tools:
Learn Jenkins because it is widely used and most companies use it.
10.1. Jenkins - The leading open-source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
10.2. CodeBuild - fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy.
10.3. 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.
10.4. Drone - Drone is a self-service Continuous Delivery platform for busy development teams.
10.5. TeamCity - Enterprise-level CI and CD at a $0 price tag.
- Cloud Providers:
11.1. Amazon Web Service (AWS)
11.2. Google Cloud - Google Cloud is also good in Kubernetes hosting.
11.3. DigitalOcean - good for small to medium projects.
- Logs Management: Graylog, but you can pick any of the choices.
- Infrastructure Monitoring: Prometheus, Grafana, AWS Cloudwatch.
Go to Roadmap DevOps page for detailed information of the roadmap images.
**Bookmark or pin this page so you can easily pick it up and read it again. :)