continuous delivery whitepaper - levi9 · pdf filecontinuous delivery whitepaper ... ,...
TRANSCRIPT
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.
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.
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.
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.
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
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