If you’re a developer, then you’ve probably heard the acronym “CI/CD”: Continuous Integration / Continuous Deployment. When creating a new application we often start with the CI part by setting up some kind of an automated build pipeline. This pipeline can run all sorts of things, including:
- Test suites: ranging from fine-grain unit tests to end-to-end integration tests to other automation suites, these aim to validate that your code does what you expect it to do.
- Linting: ensures that your code is following your team’s development conventions, like consistent style / formatting.
- Builds: attempts to build your application in preparation for deployment.
At OMG, we add additional steps to the ones listed above to ensure that the features we deploy are “ROSy” - Redundant, Optimized, and Scalable. In order for your code to be deemed “ready for deployment”, all steps in the CI pipeline must successfully pass. It then moves through the CD pipeline.
So where do I begin?
All OMG engineers are able to run the full OMG Platform on their laptops through a network of Docker containers. These containers mimic the structure and network topology of our various cloud environments, with some minor differences. This facsimile is known as a dev environment, and a developer is free to read / write any data in their environment.
Some handy Bash scripts exist to expedite the process: entering a simple omg-dev start command at the beginning of your day is enough to get your environment up and running. An omg-dev update command ensures that your environment is up to date across all of our services, even ones you don’t directly interact with. Lastly, an appropriately named omg-dev burn-it-all command clears your environment back to square zero.
As we develop new features and push new code to Github, CI builds are automatically triggered to ensure that no regressions are found and that our code maintains a high standard of quality.
My feature works locally... now what?
Now we dive into the Continuous Deployment pipeline! Each small team of engineers has their own cloud environment where they can deploy and test changes. Every time a repo is updated by pushing code to a branch, a message is sent to a specific Slack channel. An engineer can then “react” to the message with a specific emoji when they’re ready to deploy those changes. That reaction kicks off a job that runs the CI pipeline followed by a CD pipeline to deploy it to their environment.
Figure 1: A few of our custom deployment emoji. Our environments are named after animals, so reacting with a specific animal runs a CD job to deploy code to that environment.
Because our staging environments are structured just like our production environment, this makes testing on production-like environments a one-click action! A developer can test their changes as soon as they are ready without worrying about the intricacies of deployments; likewise, a site-reliability engineer can update the deployment pipeline without impacting a developer’s work cadence.
“Controlled”, not “Continuous”
A similar process exists to deploy changes to production. Once code goes through our quality control processes, it’s then merged into the master branch of the repository. Like before, it’s a one-click process to deploy the changes to production.
In a true “Continuous Deployment” fashion, that code would be deployed as soon as it is merged into the master branch. That’s not always the best idea, however, as certain changes necessitate waiting for the “right time” in favor of the “right now.” With this process we can control the rollout of a feature to minimize any possible impact to our customers, while still keeping manual deployment work to an absolute minimum.
Our engineers at OMG are some of the brightest in the industry, and we’ve developed tools to let us focus on what we do best: rapidly delivering high-value features for our customers. #OMGRocks
Christian Ayala - OMG’er #148
Connect with me on LinkedIn
OrderMyGear is an industry-leading sales tool, empowering dealers, distributors, decorators, and brands to create custom online pop-up stores to sell branded products and apparel. Since 2008, OMG has been on a mission to simplify the process of selling customized merchandise to groups and improve the ordering experience. With easy-to-use tools, comprehensive reporting, and unmatched support, the OMG platform powers online stores for over 3,000 clients generating more than $1 billion in online sales. Learn more at www.ordermygear.com.
Media Contact: Hayley Bell | firstname.lastname@example.org | 214-396-2110