DLog 3: Down the CI/CD rabbit hole
It’s been a while since I posted my last devlog. Over a month actually. Two major reasons for the delay: (a) I was interviewing for jobs (b) The COVID-19 pandemic went absolutely berserk in India, and I was quite stressed about the well being of my family. However, both of these situations resolved in a positive way: I was offered a residency position at Facebook AI Research, and my mom recovered from COVID-19. So I decided to get back to updating my devlogs.
I have been going on about doing continuous integration and deployment for my projects in the last two devlogs. Deciding to put my money where my mouth was, I decided to sign up for a bunch of related courses on these topics over at Coursera. I have recently purchased a Coursera Plus subscription and wanted to put it to good use, so learning CI/CD seemed like a great first step. These are the courses I have signed up for and am at various stages of completion with:
- Continuous Delivery & DevOps
- Continuous Integration
- Building Cloud Computing Solutions at Scale Specialization
Of these, the first one was a let down. It was aimed more at program managers and less at software engineers. I learned about buzzwords like continuous integration, containers, orchestration, etc. but did not get my hands dirty with any of these.
The second course, on the other hand, has been absolute godsend. I am through with only two weeks as of now, but I’ve already learned about Travis CI, Dockerizing a Travis build, GitHub actions, among other things. All my experiments with these can be found on my simple Probot app fork. The final two weeks of the course are even meatier, covering topics such as webhooks, secrets, Heroku, Prometheus, metrics, etc. I will update on this course in a post of its own, since I feel this is easily one of the best online courses I have done. And trust me, I have done several.
The last course (actually, set of four courses) is more of a cloud course than a DevOps course. I have been going through the first course, which introduces developing on the cloud through building a static website using Hugo (coincidence, I think not!), AWS Code Pipelines, AWS S3 and GitHub. However, the course has been going into the nitty gritty of DevOps and I’ve been really enjoying it up to this point (currently on week 3). Topics that have been covered include project management principles, followed by hands-on stuff with AWS, GCP, and Azure. Up next is service models on the cloud: Static, Serverless, Virtualized, PaaS, etc., followed by DevOps and continuous delivery pipelines. This course is also very well put together and taught.
All things considered, I am having a great time learning DevOps and levelling up from a programmer to a software engineer.
Key Learnings
Next
I worked as a graduate teaching assistant for an undergrad course on systems engineering, specifically on modelling complex systems, this semester. The course was taught by my advisor and covered the book Think Complexity. The course website was hosted through GitHub pages as a static website, using Restructured Text and Sphinx. The instructor, who happens to be my advisor, has an outstanding issue from 2018 to Dockerize the Travis CI build process. My next step would be to open a PR that fixes this issue. You can always use some (more) brownie points with you advisor :)