Skip to main content

Self-service DevOps: speeding up environment availability

20 Dec 2017

| Author: James Ward

Share

Self-service DevOps: speeding up environment availability

How often have you worked on projects where the developers have had to wait days, or even weeks, to get a new test environment set up, slowing down delivery into production significantly?

At IndigoBlue, we work closely with clients to establish good DevOps practices. One such practice is to empower developers to be able to provision their own test environments. A client I've been working with has put in place some great automation in this area.

The client provides personal fitness mobile apps. The apps use a set of backend RESTful endpoints in order to offer personalised gym-free workouts to users and then to submit details of their completed workouts. The backend is implemented in Ruby on Rails and deployed as a set of Docker containers managed by Kubernetes.

They have five multi-disciplinary Scrum teams working on new features with frequent releases involving mobile and backend changes. They currently use short-lived feature branches to enable each team to develop stories independently. Each workstream needs to be able to integration test their small incremental changes quickly before merging.

They have developed tooling which enables developers to easily setup/refresh test environments on demand. The list of backend components to deploy, and their versions, can be fine-tuned with ease. The backend components are populated with representative production data ready for testing. The environments are deployed on a dedicated shared Kubernetes test cluster hosted in Amazon AWS, using namespaces to cleanly separate each environment. The tool can be invoked using a Jenkins job but they've also used hubot to make it as easy to run as sending a Slack message.

Once changes are tested, they are merged into the development branch, subjected to automated testing via a Continuous Integration pipeline and deployed into a shared staging environment containing the ongoing work of all the teams for final pre-release testing.

What’s really key is how much time and frustration all of this automation saves for all concerned, while also allowing expertise to be redirected towards other important areas.

Developers also co-ordinate amongst themselves to release their own changes into deployment by running a Jenkins job. No Ops team involvement is required for provisioning test environments or rolling out releases, freeing up their time to focus on improving the tooling and managing the DevOps infrastructure.

DevOps Consulting

DevOps consulting

Find out how our consultancy helps your organisation scale up with confidence to meet ever-growing business and customer demand.

Find out more

Subscribe to receive our email updates

Author

Author profile image

James Ward

James is a highly experienced Agile Coach and Development Manager with a strong technical background in Development and DevOps. He has extensive Agile transformation experience pragmatically leveraging Scrum, Kanban and Lean principles in both small and large organisations.

CONTACT US

How can we help your organisation?

+44 (0)20 7692 4832

How will we use the information about you?

When you complete this form and submit your details, you are trusting us with your personal data. Our Privacy Notice informs you of what personal data we collect, why we collect it, and of your rights in relation to your data. By pressing submit, you indicate that you have read and accepted the terms of our Privacy Notice and that you consent to our processing of your personal data as described in the Privacy Notice.