diekime į produkciją kasdien – kaip tai pasiekti

59
Continuous Deployment Titas Norkūnas / @varsketiz

Upload: agile-lietuva

Post on 01-Dec-2014

423 views

Category:

Documents


3 download

DESCRIPTION

Tito Norkūno pranešimas "Diekime į produkciją kasdien – kaip tai pasiekti" skaitytas Agile dienoje 2013 gegužės 9 d. Programinio kodo diegimas į produkcijos aplinką – nuo karto per mėnesį, iki dešimt kartų per mėnesį, iki dešimt kartų per savaitę, iki dešimt kartų per dieną. Kaip tai pasiekėme dirbdami keturiuose žemynuose išskirstytoje komandoje, be nemalonaus poveikio vartotojams, nuolat gerindami produkto kokybę ir išlaikydami kompanijos augimą.

TRANSCRIPT

Page 1: Diekime į produkciją kasdien – kaip tai pasiekti

Continuous DeploymentTitas Norkūnas / @varsketiz

Page 2: Diekime į produkciją kasdien – kaip tai pasiekti
Page 3: Diekime į produkciją kasdien – kaip tai pasiekti

Assembla – Produktas

~ 350.000 Projektų

~ 350.000 Kodo repozitorijų

~ 850.000 Registruotų vartotojų

~ 5.000.000 Valdomų užduočių

Page 4: Diekime į produkciją kasdien – kaip tai pasiekti

Assembla – Komanda

● 40 Žmonių (20 Inžinierių)

● 20 Šalių

● 15 Laiko zonų

● 163 Diegimai į produkciją balandį

Page 5: Diekime į produkciją kasdien – kaip tai pasiekti

Assembla – Komanda

Page 6: Diekime į produkciją kasdien – kaip tai pasiekti

Assembla – Komanda

Daugiausia dirbu su šiuo kolega

Page 7: Diekime į produkciją kasdien – kaip tai pasiekti

Kiek iš Jūsų esate girdėję apie Continuous Deployment?

Page 8: Diekime į produkciją kasdien – kaip tai pasiekti

Kaip dažnai diegiate į produkciją?

Page 9: Diekime į produkciją kasdien – kaip tai pasiekti

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

Page 10: Diekime į produkciją kasdien – kaip tai pasiekti

Kodėl verta

Agile manifestas #1:

"Mūsų aukščiausias prioritetas yra

patenkinti kliento poreikius, anksti ir

nuolat pristatant vertę kuriančią programinę įrangą."

Page 11: Diekime į produkciją kasdien – kaip tai pasiekti

Agile manifestas #7:

"Pagrindinis progreso įvertinimas yra

veikianti programinė įranga."

Kodėl verta

Page 12: Diekime į produkciją kasdien – kaip tai pasiekti

Agile manifestas #10:

"Paprastumas – menas mažinti

nereikalingus darbus – yra būtinas."

Kodėl verta

Page 13: Diekime į produkciją kasdien – kaip tai pasiekti

"Minimalus veikiantis produktas - tai

toks produktas, kuris leidžia išmokti

maksimalų kiekį patvirtintos

informacijos įdedant mažiausiai

pastangų."

Kodėl verta

Page 14: Diekime į produkciją kasdien – kaip tai pasiekti

Ar norėtum čia dirbti?

● Github

● Amazon

● Heroku

● Linkedin

● Etsy

● ... <ir taip toliau> ...

Kodėl verta

Page 15: Diekime į produkciją kasdien – kaip tai pasiekti

Kodėl verta

Ar norėtum čia dirbti?

● Github

● Amazon - diegimai kas 11 sek.● Heroku

● Linkedin

● Etsy

● ... <ir taip toliau> ...

Page 16: Diekime į produkciją kasdien – kaip tai pasiekti

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

Page 17: Diekime į produkciją kasdien – kaip tai pasiekti

Nerimauti nereikėtų

● Ar tai nėra pavojinga?

● Kainuos daug daugiau!

● Suprastės kokybė.

● Tai kaubojiškas procesas.

Page 18: Diekime į produkciją kasdien – kaip tai pasiekti

Ar tai nėra pavojinga? – Ne.

● Neliks "žmogiškojo faktoriaus"

● Bus mažiau pakeitimų diegimuose

● Galėsi greit rasti ir ištaisyti problemą

Page 19: Diekime į produkciją kasdien – kaip tai pasiekti

Kainuos daug daugiau! – Ne.

● Automatizuoti reikės tik kartą

● Greitai išbandysi naujas idėjas

● Nebereikės jokių aplinkelių

Page 20: Diekime į produkciją kasdien – kaip tai pasiekti

Suprastės kokybė. – Ne.

● Slėpk kas neparuošta -

atskirk diegimą nuo

pristatymo

● Nebeskubėk, kad

spėtum į sprintą

Page 21: Diekime į produkciją kasdien – kaip tai pasiekti

Kaubojiškas procesas! - Ne.

● Reikės standartizuoti aplinkas

● Reikės standartizuoti migracijas

● Reikės standartizuoti procesą

Page 22: Diekime į produkciją kasdien – kaip tai pasiekti
Page 23: Diekime į produkciją kasdien – kaip tai pasiekti

Kaip tai pasiekti

● Continuous mentalitetas

● Tinkama nuolatinė integracija

● Diegimo automatizavimas

● Metrikos ir įspėjimai

Page 24: Diekime į produkciją kasdien – kaip tai pasiekti

Vienintelė taisyklė norintiems diegti nuolatos – laikyk

pagrindinę šaką diegtiną.

Page 25: Diekime į produkciją kasdien – kaip tai pasiekti

Continuous mentalitetas

● Nebandyk sutaupyti pusvalandžio

pažeisdamas diegtinumo principą

● Nemanyk, kad žinai viską, kas

vyksta tavo projekte

Page 26: Diekime į produkciją kasdien – kaip tai pasiekti

Ką reiškia - diegtiną?

Page 27: Diekime į produkciją kasdien – kaip tai pasiekti

Automatiniai testai sėkmingi

Page 28: Diekime į produkciją kasdien – kaip tai pasiekti

Automatiniai testai sėkmingi, kodas peržiūrėtas ir

ištestuotas QA

Page 29: Diekime į produkciją kasdien – kaip tai pasiekti

Automatiniai testai sėkmingi, kodas peržiūrėtas ir

ištestuotas QA bei dalies vartotojų

Page 30: Diekime į produkciją kasdien – kaip tai pasiekti
Page 31: Diekime į produkciją kasdien – kaip tai pasiekti

Nuolatinė integracija

Šaka →

Pagr. Šaka →

Page 32: Diekime į produkciją kasdien – kaip tai pasiekti

2?1

Pagr. Šaka →

Šaka →

Nuolatinė integracija

Page 33: Diekime į produkciją kasdien – kaip tai pasiekti

Pagr. Šaka →

1 ?

3

Šaka →

2

Pagr. Šaka →

Šaka →

Nuolatinė integracija

Page 34: Diekime į produkciją kasdien – kaip tai pasiekti

Per ankstyva integracija yra blogis.

Page 35: Diekime į produkciją kasdien – kaip tai pasiekti

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

Page 36: Diekime į produkciją kasdien – kaip tai pasiekti

Lengva – vienu paspaudimu

Page 37: Diekime į produkciją kasdien – kaip tai pasiekti

Jokios rizikos

Page 38: Diekime į produkciją kasdien – kaip tai pasiekti

Nuoseklu – be staigmenų

Page 39: Diekime į produkciją kasdien – kaip tai pasiekti

Atsekama – kas, ką, kada

Page 40: Diekime į produkciją kasdien – kaip tai pasiekti
Page 41: Diekime į produkciją kasdien – kaip tai pasiekti

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

Page 42: Diekime į produkciją kasdien – kaip tai pasiekti

Verslo metrikos

Page 43: Diekime į produkciją kasdien – kaip tai pasiekti

Aplikacijos metrikos

Page 44: Diekime į produkciją kasdien – kaip tai pasiekti

Anomalijos

Page 45: Diekime į produkciją kasdien – kaip tai pasiekti

Svarbu (bet nebūtina)

● Greiti testai ir diegimai

● Automatizuota konfigūracija

● Greitas inžinierių įvedimas

● Vieninga migracijos strategija

Page 46: Diekime į produkciją kasdien – kaip tai pasiekti

Greiti testai ir diegimai

Page 47: Diekime į produkciją kasdien – kaip tai pasiekti

Automatizuota konfigūracija

Page 48: Diekime į produkciją kasdien – kaip tai pasiekti

Greitas inžinierių įvedimas

Page 49: Diekime į produkciją kasdien – kaip tai pasiekti

Vieninga migracijos strategija

Page 50: Diekime į produkciją kasdien – kaip tai pasiekti

Continuous keičia žaidimo taisykles. Kaip tai paveikia

kitus komandos narius?

Page 51: Diekime į produkciją kasdien – kaip tai pasiekti

Kaip sekėsi mums?

Page 52: Diekime į produkciją kasdien – kaip tai pasiekti

Diegimų evoliucija

Page 53: Diekime į produkciją kasdien – kaip tai pasiekti

Frustration

Diegimų evoliucija

Page 54: Diekime į produkciją kasdien – kaip tai pasiekti

Diegimų evoliucija

Page 55: Diekime į produkciją kasdien – kaip tai pasiekti

Diegimų evoliucija

Page 56: Diekime į produkciją kasdien – kaip tai pasiekti

LOL Atostogos

Diegimų evoliucija

Page 57: Diekime į produkciją kasdien – kaip tai pasiekti

Diegimų evoliucija

Page 58: Diekime į produkciją kasdien – kaip tai pasiekti

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"

Page 59: Diekime į produkciją kasdien – kaip tai pasiekti