How To Set Up Your Delivery Pipeline For Success | 4 Rules
What was delivery pipeline again?
People call it delivery pipeline because it allows code to flow through a consistent sequence of stages where each stage is designed to test the code from a different perspective. By employing this process, it ensures everything is tested and verified, which provides more confidence in the code as it progresses through the pipeline.
You can imagine, each stage in the pipeline is either about building or testing the code, and along the way, it must have the necessary automation not only to save time and mistakes but also to provision, deploy and configure righteous environments. Many enterprises have taken initiatives for a reason which we will elaborate in this article, but the common goal is to strive for unattended delivery process that eliminates or minimizes human intervention that traditionally costed businesses expensive error, delay and loss on usability.
Why do we need such system?
For many enterprises around the world, continuous delivery is key to enabling them to deliver software / applications much more frequently, while greatly reducing the time between conceptualization and the delivery of production-ready software.
Through completing agile oriented projects, here is what we think is the 4 priorities we should always communicate to customers while helping them build delivery pipeline.
1. Measurable Goals
2. Custom Automation
3. Choosing the Right Tools
Regardless of methodology, it is important to keep in mind that we need to achieve goals without negatively affecting the experiences of your customers or incurring financial loss. In the process of building a scaled agile team with flowing delivery pipeline, its success will depend on taking baby steps such as getting the right tools and infrastructure in place, and building out an automation environment that enables the DevOps team to collaborate, build, test, and deliver changes and features that actually work. That is why it is best to break it down and have measurable goals to make sure every team is heading towards the right direction.
Smart Automation is always custom and it should be
We all wish that automation is the answer for any company to get past all hideous manual work, but there is no one simple formula that works for everybody.
Why? – because each organization has different teams, skillsets, tools and features they need to deliver.
For example, many tasks, especially in application deployment, environment provisioning, and configuration are still manual or semi-scripted that leads to error prone production. So, in most enterprise environments, releases still require a mixture of manual and automated tasks to be coordinated across teams, thus we think automation should always be custom.
To overcome this problem, many companies seek improvements via DevOps and continuous delivery initiatives. Those initiatives usually involve introducing continuous integration, continuous testing, release automation, test automation, on-demand provisioning. The ultimate goal is to integrate these efforts together to create an end-to-end pipeline that can orchestrate the appropriate execution of development, configuration, deployment, and testing steps led by the DevOps team.
Choose the right tools that match your objectives
Obviously, a streamlined and highly automated process to solve everyone’s headache remains the end goal. And it's critical that your team decides to implement the appropriate tools that match your operation style. Let’s ensure the technology you choose can unify the management and technical tracks of your release by achieving visibility, supporting collaborative planning alongside task execution.
Since automation is the essence of CD not just functional test, but an end to end automation of the pipeline, there are tools used at every stage of the process, up until deployment. These tools, such as version control, unit testing, CI, build automation, quality check, etc, help accomplish the objectives of each stage in a comprehensive way.
Retest the test to achieve quality
In agile world, quality is everyone’s responsibility. A developer’s responsibility doesn’t end at checking in his code. Likewise, a QA engineer doesn’t stop at testing scenarios, opening bug cases at just the code level. Developers, testers, project managers and everyone responsible for each stage has to collectively strive for the correct functioning of the delivered software.
So how do we do that? By retesting.
But traditional methods are no longer practical when releases accelerate from once every quarter, to once every week now in modern engineering world where we compete the win sophisticated consumers.
The amount of effort required to cover basic regression testing quickly grows to an unmanageable. Rather than hiring more testers, the wise decision here is automation where testers and developers work together to identify repetitive tests and automate them.
While it's vital to test the functional aspects of the code, security, performance, and so on, you also need to keep a close eye on the business value. Quality isn't just about how well the software works technically; it also means delivering what the end user wants.
The benefits of an automated software delivery pipeline
• With automation, a pipeline removes the need for expensive and error-prone manual tasks.
• Cross-team monitoring can detect any code that is not fit for delivery and reject the code as early as possible.
• A pipeline provides visibility into and builds confidence in the code as it progresses through successive stages where the testing and production happen simultaneously.
Have your dedicated team create and maintain the pipeline using tools
• Software Container – Jboss, Tomcat
• Version Control and Source-code management: Git, Fisheye and Subversion.
• Build: Ant, Rake, Maven, and Gradle.
• Continuous integration (CI): Jenkins, Bamboo and Travis-CI.
• Configuration management: Ansible, SaltStack, Chef, and Puppet.
• Database: Orcle, MySQL, Luquidbase
• Deployment and provisioning: IBM® UrbanCode® Deploy, Bamboo, and Chef.
• Deployment Automation: Java Secure, Fabric
• Testing frameworks: xUnit, Behave, Soap UI and Selenium.
• Issue Tracking and Ticketing: JIRA, Greenhopper
• Monitoring: Cloudkick, Zabbix
We introduced you to the popular tools supporting Continuous Delivery one by one, but this isn't all.
It is important that you carefully assess which tools are best for you after management and delivery team come to an agreement on objectives.
Hope you are setting your pipeline building for success.
For any inquiries or questions on how we help our clients transform their operation and build their successful pipeline, please contact us through contact form.