Levi9 Whitepaper Continuous...

6
Whitepaper Continuous Delivery Maturity Model 30 September 2014 WHITEPAPER Whitepaper Continuous Delivery Maturity Model 1 Continuous Delivery Maturity Model Releasing software is often a long, difficult and risky process. Defects and integration issues pop-up at the very last moment and cause dissatisfaction to end users. Furthermore, lack of collaboration between the software development and IT operations teams generally results in deployment errors and finger-pointing. Continuous Delivery can solve all of that and even more. Continuous Delivery can help IT organisations to become lean and agile. It can help them to continuously adapt software according to user feedback and to stay ahead of changing market conditions, while improving the quality and speed of delivery. Continuous Delivery makes the delivery of software, from the hands of the developers to production a repeatable, reliable, visible and largely automated process with well understood quantifiable risks. Continuous Delivery creates an organised evolution of the software development process. How to Achieve This Saying that it is all about practices, tools and people would not be saying anything new. Practices such as Version Control and Continuous Integration have been in existence for quite some time. New practices such as Test Automation, Infrastructure Automation and Automated Deployment and Monitoring have developed significantly over the last few years. The complete set of these practices, fully integrated, we call Continuous Delivery. Source code and configuration changes are checked-in to a Version Control system and each check-in (potentially) triggers a Continuous Integration build. Each integration is performed by an automated build and verified by unit tests to detect integration errors as quickly as possible. This approach leads to a reduced number of integration problems, and allows the teams to develop software more rapidly. If the build is broken, all ongoing activities stop until the problem is solved and the build becomes releasable again. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Principle #1, Agile Manifesto

Transcript of Levi9 Whitepaper Continuous...

Page 1: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

WHITEPAPER

Whitepaper Continuous Delivery Maturity Model �1

Continuous Delivery Maturity Model Releasing software is often a long, difficult and risky process. Defects and integration issues pop-up at the very last moment and cause dissatisfaction to end users. Furthermore, lack of collaboration between the software development and IT operations teams generally results in deployment errors and finger-pointing.

Continuous Delivery can solve all of that and even more. Continuous Delivery can help IT organisations to become lean

and agile. It can help them to continuously adapt software according to user feedback and to stay ahead of changing market conditions, while improving the quality and speed of delivery. Continuous Delivery makes the delivery of software, from the hands of the developers to production a repeatable, reliable, visible and largely automated process

with well understood quantifiable risks. Continuous Delivery creates an organised evolution of the software development

process.

How to Achieve This Saying that it is all about practices, tools and people would not be saying anything new. Practices such as Version Control and Continuous Integration have been in existence for quite some time. New practices such as Test Automation, Infrastructure Automation and Automated Deployment and Monitoring have developed significantly over the last few years. The complete set of these practices, fully integrated, we call Continuous Delivery.

Source code and configuration changes are checked-in to a Version Control system and each check-in (potentially) triggers a Continuous Integration build. Each integration is performed by an automated build and verified by unit tests to detect integration errors as quickly as possible. This approach leads to a reduced number of integration problems, and allows the teams to develop software more rapidly. If the build is broken, all ongoing activities stop until the problem is solved and the build becomes releasable again.

Our highest priority is to satisfy the customer

through early and continuous delivery of

valuable software. Principle #1, Agile Manifesto

Page 2: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

Whitepaper Continuous Delivery Maturity Model �2

Test Automation as a practice enables automated execution of test scripts and comparison of actual with expected results. Test Automation encompasses unit, integration, functional, performance and security tests and reduces the need for manual tests to a minimum. This requires skills from both testers as well as developers and their continuous teamwork. Infrastructure Automation enables automated provisioning and configuration of hosting environments and forms the bridge between Continuous Integration and Test Automation. Finally, the so called “last mile” of the deployment pipeline is covered by Automated Deployment. This part of the process can be fully automated, by provisioning a virtual test environment to run automated tests, but it can also be semi-automated in the case of one-click deployment, where an operator selects the application version and the deployment environment. System and Application Monitoring enables a quick response to outages and decreases time to recover.

Most importantly, to make Continuous Delivery a success, the development, test and IT-operations teams need to work together as one delivery team from the very start.

Adopting Continuous Delivery We have established a Continuous Delivery Maturity Model allowing our customers to adopt Continuous Delivery practices in a pragmatic and incremental approach.

The initial step is an assessment of the current status. This step is quantifiable, to show to what extent you have already adopted the various Continuous Delivery practices. The second step is to decide what goals and benefits you would like to achieve, both in the short and long term. This must be done realistically and pragmatically, higher is not always better or cost-effective. Based on the assessment and the pragmatic ambition, a concrete plan is created (step 3) where improvements are prioritised and evaluations are planned for re-assessing the value achieved by the improvements as compared with the set goals. Our approach is to introduce elements of Continuous Delivery in an agile manner, by measuring the benefits of each step and re-evaluating the goals.

The approach we take, not only affects the software development process (in its widest sense) but may also result in recommendations for architecture and the organisational setup. The aim will always be to reduce time to market, and take the risk out of the release process.

Page 3: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

The Continuous Delivery Maturity Model

Whitepaper Continuous Delivery Maturity Model �3

Continuous Delivery

Initial Novice Intermediate Advanced

Version control Source code Unit tests Application Configuration code

Database Schema Infrastructure configuration code Main branch always deployable Automated release notes

Integration Manual or scripted builds

Scheduled (nightly) automatic builds Dependency management

Continuous integration of source code and unit tests (commit based) Artifact repository

CI Build Cluster CI orchestrated infrastructure provisioning Continuous integration of acceptance tests

Quality Manual testing Test management Automated unit and integration tests

Automated functional tests Static code analysis Facilitated peer reviews

Automated acceptance tests Automated non-functional tests (performance, security) Test cluster

Deployment Manual Manual database schema changes

Scripted Same process across different environments

Automated Deployment pipeline Gated automated promotions

Orchestrated deployments One click deployments Continuous deployments to production

Infrastructure Physical Manual provisioning and configuration

Virtual Cloud Automated provisioning Infrastructure as code

Self-service for experimentation Container based infrastructure Network automation

Monitoring No monitoring System level monitoring

Application level monitoring Log management Real-time centralised log monitoring

Application performance monitoring Anomaly detection Dynamic scaling

Architecture Tightly coupled De-coupled Covered with unit tests

Service oriented Fit for purpose frameworks Testable end-to-end Enables monitoring

Component based Scalable

Organisation Waterfall approach Silo structure

Iterative approach Direct collaboration Requirements management

Agile Lean

Multi-functional teams DevOps Technical debt addresses regularly

Page 4: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

Recommended Tooling Based on our extensive experience, we have compiled an integrated toolset that enables us to establish Continuous Delivery end-to-end. This toolset is supported by real-life examples, knowledge and experience with installation, configuration and use in various projects.

The value of Continuous Delivery in your organisation In its very essence, Continuous Delivery is the implementation of lean principles. It defines “Done” as released into production and reaping business benefits. It enables organisations to become truly agile. It provides fast feedback and requires a prompt response from the whole team. This increases quality since the defects are found early in the process, while they are still easy to fix.

Continuous Delivery automates, accelerates and integrates all of the processes needed to develop software. This shortens release cycle times, reduces the defect rate and increases the frequency of delivery. This results in better customer focus, faster time to market and improved reliability of the delivered solution.

For further information please contact us via e-mail: [email protected]

Category Java, PHP, Android .Net

Version control system Git Git, TFS

Continuous integration Jenkins, Bamboo, Nexus, Maven, Gradle

TeamCity, TFS, NuGet

Test Automation and Code Quality

Selenium, TestNG, FitNesse, soapUI, JMeter, SonarQube, Phabricator

Selenium, TestNG, ReSharper, FxCop, Review Assistant

Automated deployment Capistrano, RunDeck, Liquibase Octopus Deploy, RedGate

Infrastructure Automation and Configuration Management

Puppet, VMWare, Amazon, OpenStack, Azure

VMWare, Amazon, OpenStack, Azure, Puppet, PowerShell DSC

Monitoring Zabbix, AppDynamics, Logstash SCOM, Zabbix

Collaboration Jira, Confluence Jira, Confluence, TFS

Whitepaper Continuous Delivery Maturity Model �4

About the author

Damir Solajic is the Delivery Director and Continuous Delivery Evangelist within Levi9 IT Services. He has worked as a Software Developer, Service Line Manager and Teaching Assistant across a variety of technologies. His focus is on automating and optimising end-to-end software delivery by implementing effective software engineering principles.

Page 5: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

Levi9 IT Services, a Dutch nearshore IT services company Levi9 Global Sourcing is a Dutch nearshore IT service company with headquarters in Amsterdam. Levi9 has 4 delivery centres in central and Eastern Europe, with over 500 highly skilled and committed IT specialists. Founded in 2005, Levi9 is currently one of the best performing near-shore IT service providers in the Dutch market, with exceptional client satisfaction.

Clients Levi9 is the technology partner for businesses where IT has a strategic value. Over 80% of our work is performed on software systems that generate revenue for our clients.

ServicesOur service portfolio covers all aspects of the software development lifecycle: from architecture, technical design to development, testing and IT operations.

Whitepaper Continuous Delivery Maturity Model �5

Continuous Deployment

Infrastructure Automation

Cloud Management

System Management

IT"Operations

Agile"Testing

Manual"Testing

Automated Testing

Mobile

UX

PHP

Microsoft

Agile"Software"

Development

Java

Performance Review

“Second Opinion”

Architectural"Concept and

Design

Architectural"Assessment

Architectural"Service

Page 6: Levi9 Whitepaper Continuous Deliverynews.levi9.com/download/64774/levi9whitepapercontinuousdelivery.pdf · Whitepaper Continuous Delivery Maturity Model 30 ... Quality Manual testing

Whitepaper Continuous Delivery Maturity Model 30 September 2014

Delivery models We provide our services through 3 delivery models:

Team as a Service (TaaS) This is a remote secondment model that provides add-on capacity for the IT departments of our clients. Our IT professionals become part of our client's R&D, and as such become fully integrated into the processes and teams of our clients. Levi9 provides more than just capacity: we take responsibility for the staffing and quality of the team, we provide continuity and reliability of delivery, and we pro-actively manage the satisfaction of both our clients and our team members. Furthermore, we provide added value through process and technology innovation, for instance in the areas of Test Automation, Continuous Delivery and Distributed Scrum.

Projects We execute projects, either based on Scrum, or according to detailed upfront requirements. We accept projects based either on fixed price-fixed date, or on time & material.

Maintenance and Support We perform application maintenance and support of individual systems or complete application landscapes, based on Service Level Agreements. We use ASL and ITL as our standard methods.

Our Clients About Us

Donald Leckie, Director Web Engineering TomTom: “Levi9 is involved in the vast majority of TomTom's core development programs, including doing active work on a number of TomTom's strategic platforms. Levi9 has helped in the maintenance work of fairly complex systems in TomTom's landscape. It's that depth of domain knowledge and transferable skills that play an important part in TomTom's sourcing strategy.

Jurrie van Rooijen, IT Director Bol.com: “The Levi9 team members are pro-active, take initiative in the technical area and are profoundly interested in our shop. They are very dedicated and, like us, work to achieve a better shop. That is very valuable for us.”

Janneke Niessen, CIO Improve Digital: “Levi9 is a great partner, that provides us with a motivated and dedicated technical team that maintains a high pace of delivery while retaining the flexibility our business demands. Across software development, quality assurance and technical operations teams, Levi9 helps us build the quality solutions our clients demand.”

Whitepaper Continuous Delivery Maturity Model �6