continuous delivery whitepaper - levi9 · pdf filecontinuous delivery whitepaper ... ,...

6
Copyright © Levi9 IT Services 2016 1 Continuous Delivery Whitepaper Our highest priority is to satisfy the Customer through early and Continuous Delivery of valuable software. Principle #1, Agile Manifesto 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 the development teams and, even worse, to end users. Furthermore, lack of collaboration between the software development and IT Operations teams generally results in integration and deployment errors and finger- pointing. Continuous Delivery can solve all of that and more. It can help IT organizations to become lean and agile. It can help them to continuously adapt software according to the user feedback and to stay ahead of changing market conditions, while improving the quality and speed of delivery. Continuous Delivery makes the delivery of the software, from the hands of the developers to production environment a repeatable, reliable, visible and largely automated process with well understood and quantifiable risks. Continuous Delivery creates an organized 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.

Upload: dinhkhue

Post on 06-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 1

ContinuousDeliveryWhitepaperOur highest priority is to satisfy the Customerthrough early and Continuous Delivery of valuablesoftware.

Principle#1,AgileManifesto

Releasingsoftwareisoftenalong,difficultandriskyprocess.Defectsand integration issues pop-up atthe very last moment and causedissatisfaction to thedevelopment teams and, evenworse,toendusers.Furthermore,lackof collaborationbetween thesoftware development and ITOperations teams generallyresults in integration anddeployment errors and finger-pointing.Continuous Delivery can solveallofthatandmore.ItcanhelpITorganizationstobecomeleanandagile. It can help them tocontinuouslyadaptsoftwareaccordingtotheuserfeedbackandtostayaheadofchangingmarketconditions,while improvingthequalityandspeedofdelivery.ContinuousDeliverymakes the delivery of the software, from the hands of the developers to productionenvironment a repeatable, reliable, visible and largely automated process with wellunderstood and quantifiable risks. Continuous Delivery creates an organized evolution ofthesoftwaredevelopmentprocess.

HowtoAchieveThisSayingthatitisallaboutpractices,toolsandpeoplewouldnotbesayinganythingnew.Practices such asVersion Control andContinuous Integration have been in existence forquitesometime.

Page 2: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 2

Practices such as Test Automation, Infrastructure Automation, Automated Deploymentand Continuous Monitoring have developed significantly over the last few years. Thecompletesetofthesepractices,fullyintegrated,wecallContinuousDelivery.

Source code and configuration changes are checked-in to aVersion Control System, andeach check-in (potentially) triggers a Continuous Integration build. Each integration isverifiedbyanautomatedbuildandbyunitandintegrationteststodetectcomponentandintegration errors as quickly as possible. This approach leads to a reduced number ofintegrationproblems,andallowstheteamstodevelopsoftwaremorerapidly.Ifthebuildisbroken, all ongoing activities stop until the problem is solved and the build becomesreleasableagain.Test Automation as a practice that enables automated execution of test scripts andcomparisonofactualwithexpectedresults.TestAutomationencompassesunit,integration,functional, performance and security tests and reduces the need for manual tests to aminimum. This requires not only skills from both testers as well as developers and theircontinuousteamwork,butalsothatqualityisembeddedinthearchitectureofthesoftwareitself.Infrastructure Automation enables automated provisioning and configuration of hostingenvironmentsandformsthebridgebetweenContinuousIntegrationandTestAutomation.With modern cloud and container possibilities, this enables us to quickly spin-up a testenvironment fromthecode, runour testsanddestroy theenvironmentwhenautomatedtestsarefinished.What’smore,weareabletorunasmanytestenvironmentsasweneedandeasedependenciesbetweentheteamsandbetweendifferentsoftwaremodules.

Page 3: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 3

Finally, the so called “last mile” of the deployment pipeline is covered by AutomatedDeployment.Thispartoftheprocesscanbefullyorsemi-automated.Fullautomationofthedeployments is usually used in the case of test environments, while in the case ofacceptanceorproductionenvironmentwepotentiallywant tokeepanadditional levelofcontrol,whichincludesamanualstepwhereanoperatorselectstheapplicationversionandthedeploymentenvironment.Thereby Continuous System and Application Monitoring enables a quick response tooutagesanddecreases time to recover.Most importantly, tomakeContinuousDeliveryasuccess, the Development, Test and IT Operations teams need to work together as onedeliveryteamfromtheverystart.

AdoptingContinuousDeliveryAtLevi9wehaveestablishedaContinuousDeliveryMaturityModelallowingustohelpourcustomerstoadoptContinuousDeliverypracticesinapragmaticandgradualmanner.Whenengagingwithacustomer,weinitiallyperformanassessmentofthecurrentstatus.This step is quantifiable, to show to what extent you have already adopted the variousContinuousDeliverypractices.Asaresultoftheassessment,adecisionneedstobemade;whatareyourshortand longgoals, i.e. which benefits the introduction of some of the Continuous Delivery practicesshouldachieveforyou.Thismustbedonerealisticallyandpragmatically;a‘bigbang’isnotalways better or cost-effective.We aim for quick wins first and work with developmentteamsonenabling“moredifficult”aspectslaterintheprocess.Based on the assessment and the pragmatic ambition, a clear plan is created whereimprovements are prioritized and evaluations are planned for re-assessing the valueachievedbytheimprovementsascomparedwiththesetgoals.OuraimistointroducetheelementsofContinuousDeliverygraduallyand tomeasure thebenefitsofeach step.TheapproachwetakeaffectstheSoftwareDevelopmentprocess(initswidestsense),andmayresultinrecommendationsforimprovementsinthesoftwarearchitectureorchangesintheorganizationalaspectofthesoftwaredevelopmentprocess.Withthisapproachweaimistoreducethetime-to-marketandminimizetheriskwhichispartofthereleaseprocess.Theplanisfurthersub-dividedinfivesteps.Asthefirststep,weaimtohaveallthesourcecode and application configuration versioned in the source code repository. Thereby weestablish clear procedures related to versioning of the code, define and implement abranchingandtaggingstrategy,whichgivesmoretransparencyofthedevelopmentteams’work.

Page 4: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 4

InthesecondstepweestablishContinuousIntegration.Thisisdonebyusingintegratedandautomatedtoolingsuchasthecontinuousintegrationserver,artifactrepositoryandsourcecode quality server. This enables us to continuouslymonitor the technical quality of thesoftwareandworkontheareasidentifiedastechnicaldebt.Furthermore,thisstepenablesustooptimallytakecareofdependencies,andpotentiallyusesoftwaretechniquessuchasfeaturetogglesthatwouldenableadded-valuetothebusiness(forinstanceA/BTestingoffeaturesinproduction).Asthethirdstep,weestablishAutomatedDeploymentfromtheartifactrepositoryservertothevariousapplicationenvironments.Asthefourthstep,wetackleisInfrastructureProvisioningandConfigurationManagement.Thisstepisusedtoscripttheenvironmentsandapplications,describeconfigurationsinthecodeenablingustoautomaticallyprovisionfullyconfiguredenvironmentsanytimeweneedthem.Wealwaysstartfromatestenvironmentfirstandgraduallypromotetoacceptanceandproduction.InthefinalfifthstepweestablishContinuousMonitoringandsetupLogManagement.Thisisenabledby thepreviousactions in the software itself (establishingmonitoringhooks inthe application) and in the configuration (collecting monitoring resources). The sameprinciplesapplytologmanagement,whichenablessecureaccessofthedevelopmentteamstotheapplicationandsystemlogs.

Page 5: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 5

ContinuousDeliveryMaturityLevel

Initial Novice Intermediate Advanced

VersionControl Sourcecode UnittestsApplicationconfigurationcode

DatabaseschemaFunctionaltestsandtestdataClearbranchingandmergingstrategyEmbeddingtraceability

InfrastructureconfigurationcodeMainbranchalwaysdeployableAutomatedreleasenotes

Integration Manualorscriptedbuilds Scheduledautomatedbuilds(nightly)Dependencymanagement

Continuousintegrationofsourcecodeandunittests(commitbased)Artifactrepository

CIbuildclusterCIorchestratedinfrastructureprovisioningContinuousintegrationofacceptancetests

Quality Manualtesting TestmanagementAutomatedunitandintegrationtests

AutomatedfunctionaltestsStaticcodeanalysisFacilitatedpeerreviews

AutomatedacceptancetestsAutomatednon-functionaltests(performance,security)Testcluster

Deployment ManualManualdatabaseschemachanges

ScriptedSameprocessacrossdifferentenvironments

AutomatedDeploymentpipelineGatedautomatedpromotions

OrchestrateddeploymentsOne-clickdeploymentsContinuousdeploymentstoproduction

Infrastructure PhysicalManualprovisioningandconfiguration

VirtualHighlyavailable,redundantwithfail-over

CloudAutomatedprovisioningInfrastructureasaCode

Self-serviceforexperimentationContainerbasedinfrastructureNetworkautomation

Monitoring Nomonitoring Systemlevelmonitoring ApplicationlevelmonitoringLogmanagementReal-timecentralizedlogsmonitoring

ApplicationperformancemonitoringAnomalydetectionDynamicscaling

Architecture Tightlycoupled De-coupledCoveredwithunittests

ServiceorientedFitforpurposeframeworksTestableend-to-endEnablesmonitoring

ComponentbasedScalableMicro-services

Organization WaterfallapproachSilostructure

IterativeapproachDirectcollaborationRequirementsmanagement

AgileLean

Multi-functionalteamsDevOpsTechnicaldebtaddressedregularly

Page 6: Continuous Delivery Whitepaper - Levi9 · PDF fileContinuous Delivery Whitepaper ... , performance and security tests and reduces the need for ... Quality Manual testing Test management

Copyright©Levi9ITServices2016 6

RecommendedToolingBasedonourextensiveexperience,wehavecompileda toolset thatenablesus toestablishend-to-endContinuous Delivery. This toolset is supported by real-life examples, knowledge and experience withinstallation,configurationandintegrationintoacoherentdeploymentpipeline.

Category Java,PHP,Android .NETVersionControlSystem Git

Git,TFS

ContinuousIntegration Jenkins,Bamboo,Nexus,Maven,Gradle

TeamCity,TFS,NuGet

TestAutomationandCodeQuality

Selenium,TestNG,Cucumber,RESTAssured,soapUI,JMeter

SonarQube,Phabricator,Crucible

Selenium,TestNG,ReSharper,FxCop,ReviewAssistant

AutomatedDeployment Jenkins,Liquibase

OctopusDeploy,RedGate

InfrastructureAutomationandConfigurationManagement

Puppet,VMware,Amazon,Docker VMware,Amazon,OpenStack,Azure,Puppet,PowerShellDSC

ContinuousMonitoring Zabbix,AppDynamics,Graylog,Logstash,ElasticSearch,Kibana

Zabbix,SCOM

TeamCollaboration Jira,Confluence

Jira,Confluence,TFS

ConclusionIn its veryessence,ContinuousDelivery is the implementationof leanprinciples. Itdefines “Done”asreleased to production, which means being able to reap business benefits. It enables organizations tobecome truly agile. It provides fast feedback and requires a prompt response from thewhole team. Itincreases 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 developsoftware. It embeds quality, shortens release cycle times, reduces the defect rate and increases thefrequency of delivery, which results in better customer focus, faster time-to-market and improvedreliabilityofthedeliveredsolution.

Version Control

Continuous Integration

Artefact Repo

Infrastructure Automation

Automated Deployment

Continuous Monitoring

Test Automation