So, you’ve done your research and, as we all know, DevOps is a great system — especially when used in tandem with a production methodology like Agile. Some people would even say that it’s a match made in heaven that offers a wide range of benefits, resulting in faster, more reliable releases and improved overall efficiency. It’s okay, we don’t have to sell all that to you again. Still, despite all the good stuff that you’re quite rightly anticipating, we’re now faced with a very important question: How do we get started?
DIY vs. Out-of-the-box
In looking for a place to begin, a quick scan of the technologies and services out there will reveal that there are two main types of solution available:
Whilst it’s very tempting to go for the fast option with an out-of-the-box package, you’ll also quickly find limits in terms of options and customisation. On the other hand, DIY solutions can go to the other extreme and be intimidating — precisely because of all the options and the array of tasks that come with owning and maintaining a pipeline built for your particular needs and processes.
AWS DevOps tools
The DevOps tools provided by Amazon Web Services (AWS) fall squarely in the DIY domain and, while it may offer full control of your pipeline, getting started with it can also be a daunting task for businesses that are new to DevOps or have a smaller team.
As an attempt to make the process as smooth as possible, 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 type of solution inevitably means that starting up with your DevOps pipeline will require more time and experimentation before you’re operational. As a result, you might be tempted to go with a ready-made pipeline that you can just start using right away but hesitate for fear that the ownership, maintenance, and customization of the pipeline will be out of your hands.
Once you’ve been using DevOps for a while, it’s likely that you’ll be spoiled by the benefits you get from your pipeline. You’ll want to have the flexibility to further optimise, automate and evolve your system, 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.
Use our CI/CD AWS CloudFormation template.
Thing first thing you can do is to make use of our CI/CD AWS CloudFormation template to get started 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.
Decouple your dependencies.
There are undoubtedly many different and valid approaches to designing your DevOps pipeline. However, 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.
DevOps pipeline sequence
Here is how our pipeline looks like. Let’s break it down and explain the sequence it goes through.
Step 1: Deliverable User Stories
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.
Step 2: Pull Request
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.
Step 3: Code Review
Next in the pipeline, we have a Manual Approve step which is labelled 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.
Step 4: QA and testing
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.
Step 5: Deployment
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 when something goes wrong on the production pipeline.
And that’s all there is to it!
Get started with DevOps!
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.