The inspiration for this blog post came from the fact that I wanted to shade some light on how we at R&D Solutions help our clients implement Continuous Delivery practices in their software projects. I’ll be talking a little bit about the process we’re following and what are the key steps we go through with our clients to make sure we’re all together successful.
The principles and methods of Continuous Delivery are rapidly gaining recognition as a successful strategy for business agility. Continuous Delivery turns IT from a cost center to a competitive advantage. For many enterprise organizations the question is no longer “why?”, but rather “how?” How do you start your Continuous Delivery journey, and how do you transform your organization to ensure sustainable results in long term?
We have been working with clients to help achieve business agility via DevOps and Continuous Delivery practices. We practice a proven and systematic approach to Continuous Delivery adoption, backed by implementation and support services. Our services model consists of three stages: Continuous Delivery Maturity Model Assessment – understand and analyze the current organization practices and processes and define desired target improvement level; Implementation – identify and integrate the toolchain required to achieve high level of automation across all aspects of the software development lifecycle: Infrastructure, Build, Deploy and Test Automation; Support – ongoing commitment to support client’s organization through the CD journey by empowering it with experience, guidance and implementation services
CD Maturity Model Assessment
Before we start a project we perform a CD maturity model assessment. We start with gathering information about the client project, development and release processes, understand his goals and high level project objectives. We work together to map the gathered knowledge to a CD Maturity Model Matrix and identify the CD current adoption level of the team. We use that information as a baseline for our further discussion and analysis to help identify the desired state of a CD adoption that would enable the team/ organization to meet its business objectives.
At this stage we focus on the following main categories:
Culture and Organization
Understanding the engineering teams culture is crucial for our plan tailoring approach we follow. We’re trying to understand how Dev, Ops and Test teams operate and collaborate, what methodologies the team(s) are following (Agile / Waterfall ), How their work gets prioritized, Is there any shared responsibilities for the product/service release etc.
Design and Architecture
Moving forward in the matrix we are looking also at the design and architecture decisions made about the project, e.g. what’s the branching and merging strategy used by the team, is there an API Management approach, whether database changes are kept under source control, Infrastructure as Code, whether the system is testable, etc.
Build and Deploy
Automating the build and the deployment process is crucial for the team to get speed in the software delivery process. Here, we’re interested in whether the team has scriptable builds, scheduled builds e.g. Nightly or any kind of CI builds, Is there a dedicated build servers, how the deployment is performed among different testing environment, is it documented, manual or automatic etc.
Testing and Verification
Testing the product or service that will be delivered to end customers is hard but very important process, especially where the expectation for quality are set high in our clients customers. For this category we want to understand whether you have any unit tests for the project, how the different testing environments are managed, do you have any automatic integration and component tests, are security and performance testing implemented etc.
Our Continuous Delivery Implementation services spreads across the four main pillars of Continuous Delivery: Infrastructure as code, Build, Deployment and Test automation.
Infrastructure as code
Having a way to provision various development environment configurations to respond to the project testing needs is critical capability of any delivery team! We use a Cloud or On Premise based tooling to implement this, depends on the specific client setup and setup and preferences. Having fully automated and repeatable process for provisioning various test environments facilitate agile and painless Quality Assurance process.
If the client doesn’t use Continuous Integration software already we work together to identify the tool that is right for the team. As a next step, the build process gets established – we have the project source code built, versioned and packaged as a distributable artifact.
The ability to be able deploy an application under different configuration environments to be tested is critical for the success of a project. We work together to craft the release process workflow that will serve as a backbone of the project Deployment pipeline, implement the necessary tooling and get the builds going through various environments. Once established, we work to fine and tune the test and the release steps.
The testing process is the effort that gives answer to the team whether the software being built fulfills the requirements and solve the problems it’s being built to address. Being able to measure the quality of the product continuously and keep fast pace of delivery is challenging initiative without high degree of automation across the four main pillars of CD. We work with our clients to remove the pain for them and support the dev team by automating the test process and integrating it with the deployment pipeline.
Gaining the business agility that the automated deployment pipeline provides requires significant effort, team discipline, skills and team dedication, we work with our clients to complement their development teams to ensure they are on the right track to success.
About the author:
Radoslav Minchev ( Rado ) is a senior-level DevOps/ALM expert and Microsoft certified .NET Framework developer. He is the founder and Managing Director of R&D Solutions. Rado is responsible for the company’s operations and vision. In the past he was the senior manager for global engineering services for one of the worldwide leaders in software components development, where has lead the company team of engineering architects, release, software and test automation engineers providing build automation, continuous integration and delivery for 10 product development teams worldwide.