Tidligere fortalte vi om Continuous Integration (CI). Lad os fortsætte med Continuous Delivery. Dette er et sæt af softwareudviklingsmetoder. Det hjælper med at sikre, at koden er klar til udrulning.
/ Pixabay / /
Historik
Udtrykket continuous delivery kunne ses allerede i fra 2001 i begyndelsen af listen over grundlæggende principper: "Prioritet er at løse kundens problemer gennem kontinuerlig levering af relevant software."
I 2010 udgav Jez Humble og David Farley om Continuous Delivery. Efter forfatternes hensigt supplerer CD-tilgangen og gør det lettere at forberede koden til udrulning.
Efter udgivelsen af bogen begyndte tilgangen at vinde popularitet og blev i løbet af få år næsten almennyttig. Ifølge , der blev udført blandt over 600 udviklere og IT-ledere i 2014, var 97% af de tekniske ledere og 84% af programmørerne bekendt med Continuous Delivery.
I dag er denne tilgang stadig en af de mest populære. Ifølge en undersøgelse fra 2018, der involverede IT-specialistfællesskabet DevOps and Jenkins Community, får den halvdelen af de mere end tusinde adspurgte respondenter.
Hvordan fungerer Continuous Delivery
Basis for CD er klarheden af koden til udrulning. For at udføre denne opgave bruges automatisering af softwareforberedelsesprocessen til udgivelse. Det skal være standardiseret for forskellige udviklingsmiljøer, hvilket hjælper med hurtigere at finde svagheder og optimere dem. For eksempel at fremskynde testning.
Et eksempel på Continuous Delivery-processen ser således ud:

Hvis de første to faser automatiseres af Continuous Integration-tilgangen, så er de næste to dækket af Continuous Delivery. Stabiliteten i processen sikres også gennem . De overvåger ændringer i infrastrukturen, databaserne og afhængighederne. Selve udrulningen kan automatiseres eller udføres manuelt.
Processen har følgende krav:
- Tilgængelighed af information om klarheden til produktion og beredskab til umiddelbar udgivelse (CD-værktøjer tester koden og giver mulighed for at vurdere effekten af ændringerne i udgivelsen).
- Fælles ansvar for det endelige produkt. Produktteamet — ledere, udviklere, testere — fokuserer på resultatet, ikke kun deres eget ansvarsområde (resultatet er en fungerende udgivelse, der er tilgængelig for brugerne af produktet).
I CD anvender man typisk , og til at indsamle kundernes meninger — princippet . En ny funktion frigives først til en lille gruppe brugere — deres erfaring med produktet hjælper med at finde fejl og bugs, som ikke blev opdaget under intern testning.
Hvad er fordelene ved
Continuous Delivery hjælper med at forenkle implementeringen af koden, hvilket positivt påvirker produktiviteten og reducerer risikoen for medarbejdernes følelsesmæssige udbrændthed. I sidste ende sænker det også de samlede udviklingsomkostninger. For eksempel hjalp CD et af HPs teams disse omkostninger med 40%.
Derudover — ifølge en undersøgelse fra 2016 (side 28 ) — løser virksomheder, der har implementeret CD, problemer med IT-sikkerhed 50% hurtigere sammenlignet med dem, der ikke bruger metoden. I nogen grad kan denne forskel forklares med brugen af automatiseringsværktøjer.
Endnu en fordel er en hurtigere frigivelse af versioner. I det finske udviklingsstudio den kontinuerlige levering med at øge hastigheden på kodekompilering med 25%.
Potentielle udfordringer
Det første og væsentligste problem er nødvendigheden af at omstrukturere de eksisterende processer. For at vise fordelene ved den nye tilgang bør man gradvist overgå til CD, startende med mindre ressourcekrævende applikationer.
Det andet potentielle problem er det store antal kodedele. Konsekvensen af «forkning» er hyppige konflikter og tab af meget tid. En mulig løsning er tilgangen .
. Især i nogle virksomheder opstår hovedproblemerne ved testning — det tager for meget tid. Testresultaterne skal ofte analyseres manuelt, men en mulig løsning kunne være at parallelisere testene i de tidlige faser af CD-implementeringen.
Det er også vigtigt at træne medarbejderne i at arbejde med de nye værktøjer — en grundlæggende indføring kan spare udviklerne tid og kræfter.

/ Flickr / /
Værktøjer
Lad os nævne nogle åbne værktøjer til Continuous Delivery:
- — server til kontinuerlig levering på Java og JRuby on Rails. Muliggør kontrol over hele leveringsprocessen: build—test—release. Værktøjet distribueres under Apache 2.0-licensen. På den officielle hjemmeside kan man finde .
- — en ramme til at skabe scripts, der automatiserer udrulning af applikationer på Ruby, Java eller PHP. Capistrano kan udføre kommandoer på en ekstern maskine ved at oprette forbindelse via SSH. Det fungerer sammen med andre værktøjer til kontinuerlig integration og levering, såsom CI-serveren Integrity.
- — et multiplatforms værktøj, der automatiserer hele udviklingscyklussen for applikationer. Gradle arbejder med Java, Python, C/C++, Scala osv. Der er integration med Eclipse, IntelliJ og Jenkins.
- — en platform til CD i Go. Drone kan implementeres on-premise eller i skyen. Værktøjet er bygget på containere og bruger YAML-filer til at administrere dem.
- — en platform til kontinuerlig levering af kode i multi-cloud systemer. Udviklet af Netflix, spillede ingeniører fra Google en stor rolle i udviklingen af værktøjet. Du kan finde installationsvejledningen .
Hvad du kan læse på vores virksomhedsbog
Kilde: habr.com
