CI/CD — How to level up your development flow

“Releasing software is too often an art; it should be an engineering discipline.”
― David Farley
You may have ended up here because you are already using CI/CD, but just in case let’s clarify a few key concepts.
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
Continuous Delivery (CD) is the natural extension of CI, an approach in which teams ensure that every change to the system is releasable, and are able release any version with the push of a button.
Continuous Deployment removes the manual interaction in CD allowing shipping features faster.

At Beamly we develop and manage multiple sites for well-known brands such as Max Factor, Rimmel London and Covergirl. Ensuring quality and stability in our products is a top priority, and CI/CD allows us to do so.
Let’s take a look at the tools that we use.
GoCD
GoCD is an open-source Continuous Integration and Continuous Delivery system.
In fits our need really well and has great features — one of my favourites is the Value Stream Map (VSM) that helps you visualize your CI/CD workflow.
VSM allows you to see all the steps in the CI/CD process, from making a change in the code up until it’s deployed to production. This allows you to understand at a glance all the pieces that take part in the flow.

Terraform
Terraform allows defining infrastructure as code, making it pretty easy to maintain and replicate configurations. You can manage resources of differents providers like AWS, Azure, Kubernetes, MySQL… and always having the code under version control. One of the best things about terraform is the ability to preview the changes that you are about to make using the terrafom plan command.
Something to watch out for:
With terraform, you’re able to create as many abstraction layers as you want, which can help you build infrastructure in no time. However sometimes it’s better to copy some of the code instead to replicate infrastructure. That way you can avoid ending up with a big black box of magic.
Beamly

In Beamly we use Terraform and GoCd together to manage our CI/CD workflow.
This is thanks to our platform team which has developed a gocd provider for terraform.
On top of that they have created some tools that allow the developers to replicate delivery flows (environments, pipelines, AWS resources …) for our applications with just a few lines of code.
The combination of these tools allows us to manage our infrastructure with fewer pain points for developers making our daily work easier and happier.
Conclusion
Hopefully this post will give you some overview on how we do things at Beamly and how you can improve your development workflow.
If you enjoyed reading this, we’d love to hear from you. And by the way, we’re growing our Product & Engineering team! If you’re passionate about creating cutting-edge consumer experiences and building scalable solutions, come join us by visiting https://www.beamly.com/#section-join-us.