Back in August 2017, I was at a stage in my career where I felt the need for change. I had been using the same tech stack for the last three years with no sign of any changes or improvements on the horizon. I was keen to get into a DevOps role primarily because of the wealth of tools and technologies available, not to mention the pace of growth in the industry.
A really interesting opportunity
Around this time, I received a phone call from the Kainos recruitment team informing me of the Kainos WebOps Academy. Alarm bells starting ringing when I heard the word ‘Academy’. This word alone conjured images of graduate level classroom learning, being stuck in the same room for eight weeks and significant step back in my career. From chatting with my colleagues, and previous academy attendees, this initial impression was consistent across the board.
I’m glad to say that we were proved wrong. While previous academies had been aimed at graduates, Kainos were now looking for industry-experienced individuals with an infrastructure background, or a general interest in transitioning into a WebOps role. Additionally, the main focus of the academy was practical based learning to prepare the attendees for a full-fledged WebOps role.
This sounded like a perfect opportunity for me to make a move into the Ops world and up-skill in the tools and technologies that were widely used across the industry. I applied that afternoon.
My background coming into the WebOps Academy was quite mixed. I had 8+ years’ experience working in application support covering eCommerce platforms, Linux infrastructure, PCI compliance and security, technical writing and training.
Fast forward to January 2018, I joined Kainos and spent a few weeks watching Azure training videos before moving on to work on my first project. This was a good insight into a live Ops project with a focus on infrastructure as code, automation and continuous Integration. I spent two months working on CIS Benchmarking, monitoring dashboard setup and documentation, before getting word that the Academy would be starting in mid-April.
The Academy was held over eight weeks, six in Belfast, and two in our Derry office (a quick heads up: anyone working/travelling up there, check out Pyke & Pommes for lunch. A three-minute walk from the office with five-star food. You’ll not regret it!).
Alan Canning, WebOps Architect, had his work cut out for him in training six people from different technical backgrounds, with varying skill sets to create and automate infrastructure through code. Four of the team were new to Kainos, and the remaining two members were from the Kainos Systems team.
What we learned – week by week
The first two weeks consisted of a straightforward introduction to the project as well as some theory around Ops, the various Cloud Platforms and Agile methodologies. We set up standardised development environments and trained in the technologies and tools we would be using throughout the project. The aim was to create a multi cloud WordPress site across AWS and Azure using Vagrant to spin up test VMs, Terraform to create the infrastructure in each platform, and Ansible to configure the resources created by Terraform. We briefly looked at Puppet, Docker and Kubernetes, but did not use these tools on the project.
We ran week long sprints, starting with sprint planning on Monday mornings to review any unfinished stories from the previous sprint and bring them forward if necessary. We reviewed each story, identifying any further steps required, and assigned an estimation of effort based on the Fibonacci Sequence. On Friday afternoon, we closed off the current sprint with sprint reviews/demos and sprint retrospectives. This allowed us to identify areas which we could improve in the following weeks, making our workflow more streamlined and focused.
Weeks three and four focused on AWS. This involved standing up the environments with Terraform (to create VPCs, Security Groups, Routing Tables, EC2 instances, load balancers, S3 buckets, Elastic File System, Route53 DNS, and a PaaS RDS database) and using various Ansible roles, both developed by ourselves and downloaded from Ansible Galaxy (shout out to @geerlingguy who helped us out of many a tight spot) to configure the infrastructure. Week four ended with the setup of our Jenkins server for Continuous Integration.