DevOps promises faster, automated, integrated software development, from planning to deployment and beyond. But setting it up requires a culture change and can be complex: the wide range of tools can be overwhelming. Where to begin?
Our expert technologists at Cyber-Duck teamed up with our client, Fitch Learning, for a DevOps Masterclass to reveal how you can capitalise on the benefits of DevOps right from the start.
What is DevOps?
Sylvain Reiter, our deeply experienced CSO, kicked off with a quick definition of DevOps. It’s a set of tools, principles, and processes that unify the entire software development cycle. Its key strength is that it bridges the gap between development and IT operations teams.
DevOps emerged from the rise of cloud-based technologies. Now that we can spin out virtual machines in seconds, DevOps slashes the time between requesting a change and that change being deployed into your live environment. Then, with automation, DevOps can strip out human error, boosting velocity while supporting security and compliance.
The process from planning to code, build, test, deploy, operate, and back to plan makes an infinity loop known as the DevOps loop.
When do you need DevOps?
Matthew Munro, DevOps Manager at our client Fitch Learning (part of Fitch Group), then ran us through his context and showed how DevOps has transformed his team’s way of working. Matt runs the development team at Fitch Learning while also managing internal stakeholders and product owners, plus external partners. He needs to build trust with all these parties, but discrepancies in environments, delays to releases, and incorrect use of technology meant simple questions were becoming complex issues.
Matt’s LAMP stack was needing more and more expert support and interventions day-to-day, which was making it difficult for him to add new features and keep up with the fast-changing digital landscape.
Time for DevOps – and Cyber-Duck – to the rescue. We helped Fitch review the whole development lifecycle and make a plan. Matt explained how he gave Cyber-Duck full ownership of the code repository and deployment pipeline. Cyber-Duck was able to migrate to AWS and start working in Agile sprints to improve his platforms. It was great to hear Matt saying how much calmer and confident his entire team has been since Cyber-Duck helped Fitch implement DevOps, and the difference it’s made to the wider marketing team and stability of the websites.
DevOps team culture
Then Indira, our Senior Project Manager, explained how she integrates DevOps day to day. Indira’s role is to ensure good delivery of projects, on time and within budget.
Indira emphasised it starts with good communication: everyone needs visibility on the whole process because everyone owns the delivery process.
The DevOps loop mirrors the cycle of activities from the brief to scoping, planning, development, testing, deployment, UAT, and signoff. DevOps makes sure this happens in a fast, streamlined way, within every sprint. Yes, Indira says, it takes some work upfront to configure the pipeline, but once that’s done, automated alerts and notifications give visibility to the whole team, allowing all parts of the organisation to align closely and collaborate effectively.
DevOps tools and methodology
Sylvain then gave us an overview of the plethora of tools that can support your DevOps process. Yes, he said, it can look intimidating. So start by considering how information can flow through the DevOps loop and choose tools that can talk to each other, that your team can get comfortable with, and that suit your ecosystem. Now you’re ready to shift to DevOps.
DevOps stage 1: Plan
First off, you’ll identify any large modules or components, break down your user stories and focus on delivering value to users.
You’ll map out your services, set your redundancy level and costs, and log any scaling requirements. Sylvain’s key tip? Give yourself plenty of time in the planning stage before your sprint starts, so you can gather all the information you need.
Finally, he ran us through some tools like ClickUp, Notion, and Azure DevOps to help define your requirements, priorities, and infrastructure.
Stage 2: Code
Next, you’ll need to manage your source code.
Git repository lets multiple developers work on the same application simultaneously.
Then, Sylvain explained why we recommend following the GitFlow process – it’s great for projects that have a scheduled release cycle – and how container tools like docker let everyone share the same configuration as the live server.
Stage 3: Build
Now you want to compile your code and get it online. Gareth then took us through how the DevOps automated pipeline can install dependencies, compile code and maintain consistency across your releases. He shared some of the tools that can help, like Jenkins, Buddy, BitBucket, and GitHub, and noted that Azure and AWS now have a quite comprehensive pipeline and build tools too.
Stage 4: Test
In any dev pipeline, you’ll want to test your application. And that, Gareth revealed, is where continuous integration comes in. As you build and test your app, build pipeline tools can trigger automated tests and notify the team if it passes or fails. These automated tests can range from unit tests to fully integrated features. This is where DevOps delivers major value over time. As your app gets more complex, having these regression tests becomes increasingly important – you don’t want something you built five years ago breaking when you launch a new feature. Automated continuous integration reduces human error and frees up your developers from bug-hunting so they can build new features instead.
For web projects, browser testing is important, and this can be automated too.
There is a range of tools that QA engineers can use to test what a user sees, mainly based on a Selenium WebDriver. Screenshot comparisons can help identify variances between releases, some even with automated video playback of issues so you don’t have to reproduce them manually.
Stage 5: Deploy
Now it’s time to deploy. There are two pieces here: your infrastructure and your app.
At Cyber-Duck, Gareth said, we tend to use infrastructure as code – scripts and configuration tools to keep your environments and servers consistent. This means you can scale swiftly too – when you need to spin up a new environment, for example, to set up in a new region, you simply rerun the code. You can also spin up temporary environments as a cost-effective way to create sandboxes to test your release.
In your release plan, you’ll want a good Git workflow, a run book that lays out all the scripts you’re running and who’s responsible for each.
The release plan will need these to be shared with the whole team, so everyone knows what’s happening and when. Finally, you’ll need a rollback plan (in case things don’t work out) and change control documentation.
There are lots of tools that can remove deployment headaches, like Terraform and Puppet or Ansible depending on the stack, plus tools from your cloud platform.
Stage 6: Operate
Great! You’re deploying. Now you need to monitor your infrastructure to make sure your memory doesn’t run out or to flag if a database goes down.
Gareth ran us through how to set up triggers to notify your team if something’s not right.
Performance optimisation can help hone your code and scale your infrastructure up and down as traffic demands (for example, if you need less capacity overnight), while security reviews can run automated pen tests and scan your docker containers. You can set triggers to alert your organisation when a new CMS patch is released and implement security policy as code so people in your team have the correct access. And don’t just monitor the homepage, Gareth advises – something that’s often overlooked is the pages underneath. Tools like Sentry can aggregate logs and notify your team when there’s a glitch.
Finally, it was back to Sylvain for three key takeaways.
Firstly, the goal of using DevOps tools is to boost collaboration through good planning and communication.
Secondly, the right tools can automate and measure performance.
And finally, continuous improvement is the goal. You’re never done – and that mindset and culture change will take time. So align on your goals, start your journey and begin optimising your product. Improve one step at a time – and you’ll soon be well on your way.
If you’d like to talk through your DevOps setup, or you’d like to explore making the shift to DevOps, book a virtual coffee with Gareth and Sylvain today – we’re ready to help.