Sep 16, 2020 Namiko
Establishing a successful delivery pipeline | 4 Rules
What was delivery pipeline again?
People call it a 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. Employing this process 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 an unattended delivery process that eliminates or minimizes human intervention that traditionally costs businesses expensive error, delay, and loss of usability.
Why do we need such system?
For many enterprises worldwide, continuous delivery is critical to enabling them to deliver software/applications much more frequently while significantly reducing the time between conceptualization and the delivery of production-ready software.
Through completing agile-oriented projects, here is what we think are the four priorities we should always communicate to customers while helping them build a delivery pipeline.
- Measurable Goals
- Custom Automation
- Choosing the Right Tools
Regardless of methodology, it is important to keep in mind that we need to achieve goals without negatively affecting our customers’ experiences or incurring a financial loss. In the process of building a scaled agile team with a 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 work. That is why it is best to break it down and have measurable goals to ensure every team is heading in 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 to deliver.
For example, many tasks, especially in application deployment, environment provisioning, and configuration, are still manual or semi-scripted, leading 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.
Many companies seek improvements via DevOps and continuous delivery initiatives to overcome this problem. Those initiatives usually involve introducing continuous integration, continuous testing, release automation, test automation, and on-demand provisioning. The ultimate goal is to integrate these efforts 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
A streamlined and highly automated process to solve everyone’s headaches remains the end goal. And your team must decide to implement the appropriate tools that match your operation style. Let’s ensure the technology you choose can unify your release’s management and technical tracks by achieving visibility and supporting collaborative planning alongside task execution.
Since automation is the essence of CD, not just a functional test but an end-to-end pipeline automation, tools are used at every stage of the process until deployment. These tools, such as version control, unit testing, CI, build automation, quality check, etc., help accomplish the objectives of each stage comprehensively.
Retest the test to achieve quality
In the agile world, software quality assurance 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 the modern engineering world where we compete for the win, sophisticated consumers.
The amount of effort required to cover basic regression testing quickly grows 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: Oracle, 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 the 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 operations and build their successful pipeline, please contact us through the contact form.
Establishing a successful delivery pipeline | 4 Rules
Stay in touch with Us
What our Clients are saying
We asked Shift Asia for a skillful Ruby resource to work with our team in a big and long-term project in Fintech. And we're happy with provided resource on technical skill, performance, communication, and attitude. Beside that, the customer service is also a good point that should be mentioned.
Quick turnaround, SHIFT ASIA supplied us with the resources and solutions needed to develop a feature for a file management functionality. Also, great partnership as they accommodated our requirements on the testing as well to make sure we have zero defect before launching it.
Jienie Lab ASIA
Their comprehensive test cases and efficient system updates impressed us the most. Security concerns were solved, system update and quality assurance service improved the platform and its performance.