PCG logo

Fixing Integration roadblocks with CI/CD and AWS

A flock of sheep blocking the road in front of a motor home - Miracle Mill

Most people working in software development will recognise the particular nightmare scenario that plays out when trying to fit large blocks of code together. One development team might have been working on a sexy new version of an application for six months whilst another has been keeping the old one up-to-date with periodic fixes and enhancements. With launch day fast approaching, how do you stay on target and avoid getting stuck in the roadblock of “integration hell”?

Such a scenario was a regular occurrence when waterfall production modelsExternal Link were the standard. Releases might even be years apart and the end of a project cycle would frequently be accompanied by intense periods of work and, yes, lots and lots of stress. Production management systems such as agileExternal Link evolved as a direct attempt to improve on these toxic and inefficient work environments by dividing projects into smaller and more manageable chunks.

A major consequence of agile for development teams was that they would now work in much shorter cycles and publish their code as often as possible. As these improvements gained popularity and software developers emerged from the dark tunnels of waterfall production, the concept of Continuous Integration and Continuous Development or Deployment (or CI/CDExternal Link for short) also found its way into the light. This system seeks to automate the integration process using a combination of technical and procedural tools. Where agile focuses on processes and the acceleration of delivery, CI/CD concentrates more on life-cycles and tools that can make automation easier and more efficient.

Fortunately for the busy (and often over-worked), modern software developer, cloud services such as AWS provide a wide range of sophisticated tools to help implement the CI/CD philosophy. The ever-useful and insightful developer blog at AWS outlines a solution using the following range of tools for development, testing and deployment:

  • AWS CodeCommitExternal Link – A fully-managed source control service that hosts secure Git-based repositories. CodeCommit makes it easy for teams to collaborate on code in a secure and highly scalable ecosystem, and is commonly used to create a repository to store the application and deployment codes.
  • AWS CodeBuildExternal Link – A continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy, on a dynamically created build server.
  • AWS CodeDeployExternal Link – A fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.
  • AWS CodePipelineExternal Link – A continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. It can create an end-to-end pipeline that fetches the application code from CodeCommit, builds and tests using CodeBuild, and finally deploy using CodeDeploy.
  • AWS CloudWatch EventsExternal Link – An AWS CloudWatch Events rule is created to trigger the CodePipeline on a Git commit to the CodeCommit repository.
  • Amazon Simple Storage Service (Amazon S3External Link) – An object storage service that offers industry-leading scalability, data availability, security, and performance. A typical solution would use an S3 bucket to store the build and deployment artifacts created during the pipeline run.
  • AWS Key Management Service (AWS KMSExternal Link) – AWS KMS makes it easy for you to create and manage cryptographic keys and control their use across a wide range of AWS services and in your applications. It can be used to make sure that the build and deployment artifacts stored on the S3 bucket are encrypted at rest.

Whilst such a list of tools is undoubtedly comprehensive, it can also be quite daunting to visualise a complete solution, and to implement all the processes required to make it work. Each service by itself can take a significant amount of time (and coffee) to become familiar with, never mind fitting them all together and integrating them in the most effective and elegant way that will satisfy the discerning systems architects. This is where the experience and expertise of PCG can come in useful.

Case Study: Holler Country

Spike Diamond is a UK based publisher known for online publications such as Holler Country, an online magazine covering news and insight from the world of country music. While working on Holler Country, Spike Diamond reached out to PCG with the goal to make their release management more efficient and automate the deployment through all stages of development.

PCG made an analysis and recommended applying predefined templates for an AWS DevOps pipeline, which creates a new CodePipelineExternal Link using CloudFormationExternal Link for each feature branch. The implemented pipelines remove the manual steps in release management and, as a result, features are deployed more frequently with high quality.

It was measured that automating the previously manual steps freed up to 25% of the time from the developers’ workload, that can instead be spent on developing new features. You can read more in our case study about how AWS DevOps automates release management.

Would you like to find out how we can help you to make similar savings? Talk to us so we can find the solution that improves your production processes across the board.

Services Used

Continue Reading

AWS Lambda
The Rise of Serverless Architecture

An investigation into the transformative journey of serverless computing, from its emergence to present trends like AI, IoT and edge computing. Explore the past, present, and future of this innovative paradigm.

Learn more
How to get started with AWS DevOps tools

A detailed guide to getting started with AWS DevOps tools, comparing out-of-the-box and DIY solutions, and offering insights into optimizing pipelines for efficiency and control.

Learn more
Using Architecture Diagrams for better cloud development

Discover the power of Architecture Diagrams in enhancing collaboration and efficiency within cloud software development teams. In the fast-paced world of cloud software development, effective collaboration and clear communication are crucial for a team's success. By offering a visual representation of a software system's design and structure, Architecture Diagrams (ADs) enable team members to work more efficiently, reduce potential issues, and maintain alignment.

Learn more
Cloud Development
Definitions of Done in cloud application development

Inconsistent development standards can be frustrating and harm quality. Read about DoD checklists that can benefit both your business and end-users.

Learn more
See all

Let's work together

United Kingdom
Arrow Down