March 3, 2022

DevOps Learning Tips

My colleague starting the new role as DevOps engineer, here's the advise from him:
  1. Learn to program - write a simple web app. It should have a front end, back end, and a database. I'd recommend using Django or Flask since as a devops engineer you're going to be writing a lot of python/powershell most likely and need to at least be able to read it

  2. OS stuff - set up a local Linux server vm to run your web app, that includes setting up the database and web server yourself. Don't use a GUI

  3. Containers - now that you've written your web app, try to dockerize it. Tip: most databases and web servers you'll encounter can be run as containers. How do you make sure your database container will persist data if you have to re-run it?

  4. CI/CD - setup a Jenkins or GitLab container and configure a CI/CD pipeline for your web app, should deploy as containers. Remember to keep things as immutable as possible, i.e. don't make changes inside running containers

  5. Configuration Management - Use ansible to set up your entire project so far. That is, configure your Linux server to be a Docker host, run Jenkins with your pipeline, and run your containerized web app

  6. Container Orchestration - Kubernetes. Minikube is a single node kubernetes "cluster". Set up Minikube and run your Jenkins container and web app. Bonus points: do all this with Ansible

  7. Infrastructure Provisioning - Use terraform to lift and shift your current setup to AWS. Basic - run containers on EC2 with minikube. Intermediate - use EKS for kubernetes instead of a VM. Advanced - set up your own Kubernetes cluster in AWS to run your Jenkins and web app

  8. Service Mesh - optional or revisit later. Set one up

  9. Monitor - set up monitoring of your k8s with Prometheus. Remember to approach this with IaC and make it immutable as possible

  10. Set up logging with an ELK stack. Remember to approach this with IaC and make it immutable as possible
  11.  


No comments:

Post a Comment