Once you’ve explored the benefits of DevOps practices and have come to the conclusion that adopting DevOps is the next step to bring forward your software development, you are now faced with a very obvious and overwhelming question: How and where do we start?

There are a lot of technologies and services on the market, both out-of-the-box and do-it-yourself. There is an obvious trade-off between starting fast with an off-the-shelve solution and customizing, owning, and maintaining a pipeline built for your needs and processes.

Amazon Web Services (AWS) offers the latter and while it may offer full control of your pipeline, it also can be a daunting task for businesses that are new to DevOps or have a smaller team. Amazon Web Services supports and enables DevOps by providing tools to build, store and deploy applications. Whether you are already using AWS or not, you can create and integrate a DevOps pipeline and automate steps in your software release processes in a way that best fits you.

Opting for this solution means starting up with your DevOps pipeline will require more time and experimentation before you’re operational, so you might be tempted to go with a ready-made pipeline that you can just start using. By doing this, the ownership, maintenance, and customization of the pipeline will be out of your hands.

When you get spoiled by the benefits of a DevOps pipeline, you’ll want to have the flexibility to further optimize, automate and evolve your pipeline, which is something an off-the-shelf solution cannot offer. So, which solution should you go with and which benefits are you willing to compromise on?

The truth is – you shouldn’t have to compromise - and you don’t need to.

You can use our CI/CD CloudFormation template to start with the AWS DevOps tools and have an operational pipeline quickly. We have done the grunt work, thought it through, created a template, and tested it across many projects.

The template offers a customizable setup which brings this solution closer to an off-the-shelf option while keeping all the customizability and control of a do-it-yourself option.

There are different approaches to designing your DevOps pipeline. Our experience shows that one of the best ways to do it is to dynamically create new pipelines for each new feature branch. This way the pipelines are templated using CloudFormation and are deployed for each feature.

The main argument for this is decoupling dependencies between both developers and features, enabling each new feature being developed to independently move through the pipeline steps and reach production.

Here is how our pipeline looks like. Let’s break it down and explain the steps it goes through.

The development process starts with breaking down the backlog into deliverable User Stories. The developers then branch out from the master branch and create a new branch for that user story.

When it’s time to submit it, the developers create a pull request which is intercepted by a CloudWatch Event and triggers a Lambda function that creates a CodePipeline through a CloudFormation template. The pipeline automatically starts testing and building the application and notifies the developers when it has finished or failed.

Next in the pipeline, we have a Manual Approve step which is labeled as Code Review and this gets approved when the Pull Request status is approved. Then, based on the build in step 1 through the Serverless framework, a unique development environment is created for the application which is identical to the production one.

QA is then notified through SNS that a new User Story is ready for testing along with the review URL and a link to the Manual Approval step in the CodePipeline. If QA rejects the User Story, the developer commits a new change on the same branch, and the pipeline restarts from the beginning. If it is approved it triggers a Lambda function that merges the branch into the master branch and deletes the resources provisioned by the pipeline along with the CodePipeline stack resources.

The production pipeline gets triggered when there is a new change on the master branch. It consists of a “Test and Build” phase and a “Deploy” phase. Developers and QA are notified through SNS when there is a new deployment or something goes wrong on the production pipeline.

Now that we’ve covered why this is one of the best options for your business and how you can get the best of both worlds, it’s time to take action and get it up and running.

Contact us to set up your pipeline and kick-start your DevOps journey.

You’ve made the right decision, here’s how DevOps fits with your Scrum process.

Let's Work

Drop us a line