Dev Ops
exercises: https://github.com/bregman-arie/devops-exercises
self hosting projects: https://www.youtube.com/watch?v=jFrGhodqC08
linux, git, docker, docker compose, ssh, nginx, bash scripts for building and deploying, cron jobs,
if you need multiple containers across multiple computers use docker swarm to communicate and load balance between computers.
if you need more orchestration than that use kubernetes.
vid also talks about how to have 0 down time deployment. with caddy I think.
Programming language
- python or node or ruby
Networking:
- DNS resolution and tools to troubleshoot dns problems (like nslookup for instance)
- basic networking: subnetting, gateways, dhcp/nat, http,
- firewalls(incomin, outogoing, stateful, non-stateful, layer3 or 7), load balancers(learn typers of load balancing algorithms) and proxy servers (reverse and forward)
Cloud
- learn one provider and learn the concepts. when switching cloud providers the main differences are service naming and UI.
Containers and orchestration
- Docker
- Kubernetes
Infrasctructure as code
- terraform
Config management
- Ansible
CI/CD:
- github actions, Gitlab
- QA with Jenkins,
- code linting and unit testing
Monitoring and Log management / Data analytics
- ELK stack, Grafana