Raise the next level of automation
Our cloud services business forced us to implement a fully automated build- and testing pipeline to get new code rapidly into production.
Developing and distributing software in small DevOps teams raise new challenges on stability, performance and responsibility for everybody for faster delivery cycles. To reach these goals you have to think about more streamlined processes. Manual testing and deployments are no longer sufficient to fulfill the fast contineous integration and contineous delivery to reach out true agility.
One of the main goals of such an automated contineous integration and contineous delivery process is to enable teams to develop and fast release new features into production with very short release cycles, lower costs and risks.
Typical CI/CD pipeline structures
Commit & Build automation
Execute tests automatically
Monitoring and information automation
The development, test, and operations teams have to work closely together to create a streamlined and standardized release process.
Automation is the key
After the developer has finished the work and committed the changes into the version control system, the automated build pipeline starts building the binaries to create the deliverables. The new features are tested by unit tests immediately. This is the most direct feedback cycle that informs the development team about the quality of their software code.
Tests should cover all aspects of software development, like performance, edge cases, failures, security and stability. Manual testing activities should be limited to the minimum. What can be automated, should be automated.
After the tests passed successfully, the deployment of the new feature is initiated immediately. If you trust your test cases, there is no reason to hold the new feature from getting deployed into production automatically. If you run a scalable infrastructure, that is based on a container management component, like Kubernetes for Docker or AMI images of Amazon Webservices, you should be able to install your new features, without of any downtime of your services.
This level of automation is about enabling your development to bring new features to production, one by one, quickly and reliably. Every individual feature needs to be tested before it gets released to rollout.
When you run larger teams, that develop new features in a higher frequency, you might get production releases multiple times a day. In such cases, it is highly recommended to have an automated information process in place, that informs all stakeholders about changes in the dedicated stages. We are using Slack with several channels to inform the different people right in time.
At Buildsimple we implement contineous delivery and contineous integration by design. No service will get it into production without the existence of a fully automated build pipeline and information process.