My interest in devops mostly comes from improving my personal experience as a developer - and the concepts were discovered through trying to overcome some sort of pain. A clear example I can recall is after building formpy, I wanted to improve the codebase and do some refactoring. It had been a while since I last touched the codebase so it took me days to setup my own dev environment and from that I learnt about Docker, containerisation and how to make reproducible environments which made deployment a whole lot smoother too.
I haven't taken any courses (yet) so all of my learning is from blogs, documentation and YouTube:
Linux
I have an ubuntu instance from linode and I host most of my work on there as containers, the whole setup uses nginx as a reverse proxy which itself runs in a container using a really cool image from jwilder that listens for new docker containers and adds them to the config. You can checkout how my linode instance is setup here
I used to run ubuntu for a while on my laptop but I now use windows subsystem for linux (WSL) so I know a bit of bash and like to think I know my way around the terminal a little bit (I'm no wizard though).
My favourite resources for linux stuff:
Docker
I probably use docker for things where it's not really necessary and kind of overkill, but it makes things so much easier so I just containerise everything and haven't regretted it yet. Writing a dockerfile is pretty straightforward and using docker-compose to seamlessly deploy a full stack application with very little effort is a blessing.I mostly just use the Docker documentation, but language/framework specific guides are available on VSCode's documentation also:
CI/CD
This is an area I definitely want to spend some more time learning, but for now I've been using github actions, mostly because it's convenient as I already host all my code on github.I've used github actions to setup a CI/CD workflow in multiple projects:
- Automated tests and publishing for the formpy library on pypi
- Automated testing, docker image updating and deployment to my linode instance for formpy's website
- Same as above for the mfp-wrapped website