Continuous DeploymentTitas Norkūnas / @varsketiz
Assembla – Produktas
~ 350.000 Projektų
~ 350.000 Kodo repozitorijų
~ 850.000 Registruotų vartotojų
~ 5.000.000 Valdomų užduočių
Assembla – Komanda
● 40 Žmonių (20 Inžinierių)
● 20 Šalių
● 15 Laiko zonų
● 163 Diegimai į produkciją balandį
Assembla – Komanda
Assembla – Komanda
Aš
Daugiausia dirbu su šiuo kolega
Kiek iš Jūsų esate girdėję apie Continuous Deployment?
Kaip dažnai diegiate į produkciją?
Apie ką čia bus:
● Kodėl verta
● Dėl ko nerimauti nereikėtų
● Kaip tai pasiekti
● Svarbu (bet nebūtina) ir dažnos
problemos
● Kaip sekėsi mums
Kodėl verta
Agile manifestas #1:
"Mūsų aukščiausias prioritetas yra
patenkinti kliento poreikius, anksti ir
nuolat pristatant vertę kuriančią programinę įrangą."
Agile manifestas #7:
"Pagrindinis progreso įvertinimas yra
veikianti programinė įranga."
Kodėl verta
Agile manifestas #10:
"Paprastumas – menas mažinti
nereikalingus darbus – yra būtinas."
Kodėl verta
"Minimalus veikiantis produktas - tai
toks produktas, kuris leidžia išmokti
maksimalų kiekį patvirtintos
informacijos įdedant mažiausiai
pastangų."
Kodėl verta
Ar norėtum čia dirbti?
● Github
● Amazon
● Heroku
● Etsy
● ... <ir taip toliau> ...
Kodėl verta
Kodėl verta
Ar norėtum čia dirbti?
● Github
● Amazon - diegimai kas 11 sek.● Heroku
● Etsy
● ... <ir taip toliau> ...
Nauda
● Pristatysi vertę kaip galima greičiau
● Kasdien matysi pažangą
● Būsi informuotas visada
● Gausi greitą grįžtamąjį ryšį
● Dirbsi aukščiausios klasės aplinkoje
Nerimauti nereikėtų
● Ar tai nėra pavojinga?
● Kainuos daug daugiau!
● Suprastės kokybė.
● Tai kaubojiškas procesas.
Ar tai nėra pavojinga? – Ne.
● Neliks "žmogiškojo faktoriaus"
● Bus mažiau pakeitimų diegimuose
● Galėsi greit rasti ir ištaisyti problemą
Kainuos daug daugiau! – Ne.
● Automatizuoti reikės tik kartą
● Greitai išbandysi naujas idėjas
● Nebereikės jokių aplinkelių
Suprastės kokybė. – Ne.
● Slėpk kas neparuošta -
atskirk diegimą nuo
pristatymo
● Nebeskubėk, kad
spėtum į sprintą
Kaubojiškas procesas! - Ne.
● Reikės standartizuoti aplinkas
● Reikės standartizuoti migracijas
● Reikės standartizuoti procesą
Kaip tai pasiekti
● Continuous mentalitetas
● Tinkama nuolatinė integracija
● Diegimo automatizavimas
● Metrikos ir įspėjimai
Vienintelė taisyklė norintiems diegti nuolatos – laikyk
pagrindinę šaką diegtiną.
Continuous mentalitetas
● Nebandyk sutaupyti pusvalandžio
pažeisdamas diegtinumo principą
● Nemanyk, kad žinai viską, kas
vyksta tavo projekte
Ką reiškia - diegtiną?
Automatiniai testai sėkmingi
Automatiniai testai sėkmingi, kodas peržiūrėtas ir
ištestuotas QA
Automatiniai testai sėkmingi, kodas peržiūrėtas ir
ištestuotas QA bei dalies vartotojų
Nuolatinė integracija
Šaka →
Pagr. Šaka →
2?1
Pagr. Šaka →
Šaka →
Nuolatinė integracija
Pagr. Šaka →
1 ?
3
Šaka →
2
Pagr. Šaka →
Šaka →
Nuolatinė integracija
Per ankstyva integracija yra blogis.
Diegimo automatizavimas
● Lengva – diek vienu paspaudimu
● Jokios rizikos – jei yra problemų,
grįžk prie veikiančios versijos
● Nuoseklu – be staigmenų
● Atsekama – kas, ką, kada, kur
Lengva – vienu paspaudimu
Jokios rizikos
Nuoseklu – be staigmenų
Atsekama – kas, ką, kada
Metrikos ir įspėjimai
● Realaus laiko
● Stebėk svarbiausias verslo metrikas
● Turėk aplikacijos metrikas vienoje
vietoje
● Būk įspėjamas pagal anomalijas, o
ne absoliučius skaičius
Verslo metrikos
Aplikacijos metrikos
Anomalijos
Svarbu (bet nebūtina)
● Greiti testai ir diegimai
● Automatizuota konfigūracija
● Greitas inžinierių įvedimas
● Vieninga migracijos strategija
Greiti testai ir diegimai
Automatizuota konfigūracija
Greitas inžinierių įvedimas
Vieninga migracijos strategija
Continuous keičia žaidimo taisykles. Kaip tai paveikia
kitus komandos narius?
Kaip sekėsi mums?
Diegimų evoliucija
Frustration
Diegimų evoliucija
Diegimų evoliucija
Diegimų evoliucija
LOL Atostogos
Diegimų evoliucija
Diegimų evoliucija
Dažnos problemos
● Kaip diegti duomenų bazės
schemos pakeitimus be trikdžių?
● Kokybės Užtikrinimo komanda
testuoja rankiniu būdu
● "Nepritaikoma dideliems
projektams"