Här ska det bytas till en sökruta

CI/CD – How automation makes the software development fast, efficient and reliable

Published: 2020-02-12

Structured, error-free, cost-effective – these are essential qualities in successful software development. Automation helps to move the process to another level. Continuous delivery, continuous integration, and continuous deployment are three DevOps strategies that are part of the automated development process. The goal is to build, test, deploy, and release software updates in the fastest way with as little bugs as it is possible and reduce the cost of bugs by adopting “fail fast, fail early” approach: the sooner the bug will be found, the cheaper is to fix it.

That was then

In ancient times, which in digital terms means around 15-20 years ago, software developers would create applications mainly in the waterfall model. During development, consultants used subversion system to keep tracking the changes in the code, and after some phase was done, the version of the application was sent to the IT. IT, who is always so focused on stability and reliability, would create then an environment where the code could be deployed. The new version was launched on it.

Many times, there were differences between IT infrastructure (server setup) and settings used by developers. It was one of the reasons why this process could take several weeks. Each change in the software had to be validated by IT and many times also by the Security team. The method of communication between the teams took, of course, additional time and application could be published with some delay.

This is now

Nowadays, this process of software deployment is much faster and due to the automation of many subprocesses much more stable and secure. Automation eliminates human error External link. which is still the main reason for failure. But there are also challenges. How to avoid a situation where sometimes hundreds of developers who work on the same application check-in their code day to day, hour to hour and after some time they realize that after merging it will not work together? With help comes Continuous Integration. It is a methodology which demands from developers to check-in, merge and then build their code as fast as certain part of code is ready, even several times per day.

Continuous integration of small code changes to the shared repository and autoamatically tests it, turning big changes into small ones. This makes it possible to solve them in an easier and faster way. After tests are done successfully, there is a need to deploy a working application on either test/pre-prod or production environment.

Continuous Delivery and Deployment

The process of making changes to the code is continuous, and every hour, every minute or sometimes every second a new version is created. How to make it all work then? The response lays in Continuous Delivery or Continuous Deployment both called CD. When the process of accepting changes and acceptance tests are made manually, we can say there is continuous delivery. Someone is informed that a working, already tested application is waiting for final approval and after performing additional check and tests that person needs to approve the version manually. Continuous Deployment scenario is achieved when the full automation comes into the picture.

Must-have tools

There are many tools in the market which can help the team of developers to implement CI/CD into their project. AWS provides the team of developers with a platform to share the code, build the changes automatically, test the application, notify about the results and automatically do either deploy on production or rollback when tests failed.

  • Code Pipeline is a workflow management tool where all configurations for other CI/CD tools are set. You can easily create the whole workflow and manage it using one unified dashboard with all necessary details about the state of the process, parameters set and logs. You can create the pipeline either from web console manually or using code as in Infrastructure-as-a-Code approach.

  • When deploying the CI/CD pipeline in AWS, you can choose which versioning control system to choose. AWS supports storing files in S3, GitHub,CodeCommit (AWS internal, managed source control code repository service) or git-compatible repository.

  • AWS Code Commit is a tool that provides developers with control on versioning in their code as well as it is done in GitHub. Price is an advantage over the private Github repository because in CodeComit private repos are free. There is also Free Tier which makes it free of charge for some period.

  • AWS Code Star External link. is the managed platform with a useful wizard which lets developers create a fully working and secure CI/CD pipeline within minutes. AWS CodeStar supports many popular programming languages, including Java, JavaScript, PHP, Ruby, and Python.

Automated builds = keys to success

When you choose to automate the process, you make it easy to control the state of the software. Even before you deploy any new changes, you can check if they may have some errors – that means you are able to deploy the current version of the software to production. Testing becomes easy-peasy. What is essential, it is safe, and safety is everything in the process of development. It means you can eliminate risks way before breaking your software, detect the issues on an early stage, and all the fixes can be done quickly. Thanks to that the team is also less concerned about looking for potential errors. At the same time, it has more focus on the development of the software. The automation allows you to have a fast feedback loop, avoid ‘integration hell’ and increase both transparency and visibility. As a result, you improve quality and testability, which translates to higher satisfaction and confidence of both clients and the team.


Posted by: Wojtek Kubiak

Wojtek Kubiak

Cloud Unit Leader Poland

Make sure all fields are filled with valid information

Thank you, your message has been sent