ci:cd co to? po co? jak? - jerzy wickowski · sposoby konfiguracji - problem ii nowe Środowisko...
TRANSCRIPT
CI/CD - CO TO? PO CO? JAK?
JERZY WICKOWSKIPROGRAMUJĘ 10 LAT .NET I INNE CLEAN CODE REFAKTORING DEVOPS
JerzyWickowski.pl
CI/CD - CO TO? PO CO? JAK?
AGENDA
▸ WPROWADZENIE POJĘĆ
▸ SPOSOBY KONFIGURACJI CI
▸ IMPLEMENTACJA CONTINOUS DEPLOYMENT
▸ PYTANIA
JerzyWickowski.pl
WPROWADZENIE POJĘĆ
WPROWADZENIE POJĘĆ
INTEGRACJA
▸ Ręczna
▸ Build
▸ Test
▸ Automatyczna
▸ Build Scripts
JerzyWickowski.pl
BUILD SCRIPTS
BAT CAKE EXE PS1
JerzyWickowski.pl
WPROWADZENIE POJĘĆ - CONTINOUS INTEGRATION
CONTINOUS INTEGRATION
▸ Jak?
▸ Commit do repo
▸ Trigger server CI
▸ Run integration
▸ Po co?
▸ Automatyczne tworzenie paczki
JerzyWickowski.pl
PACZKA
BINARKI OBRAZKI FILMY MUZYKA + DEPLOY SCRIPT
JerzyWickowski.pl
DEPLOY SCRIPT
PRZYGOTOWUJE KOPIUJE MIGRUJE INSTALUJE
JerzyWickowski.pl
CONTINOUSDEPLOYMENT DELIVERY
JerzyWickowski.pl
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT
ŚRODOWISKA
PACZKA
DEV TEST STAGING PROD
JerzyWickowski.pl
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT
ŚRODOWISKA A DEPLOY SCRIPTS
DEV TEST STAGING PROD
DEPLOY SCRIPTS A
DEPLOY SCRIPTS BPACZKA
JerzyWickowski.pl
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT
RÓŻNICA POMIĘDZY CONTINOUS DELIVERY A DEPLOYMENT
DEV TEST
PROD
AUTOMATIC DEPLOYMENT
MANUAL DELIVERY
STAGING
JerzyWickowski.pl
WPROWADZENIE POJĘĆ - PODSUMOWANIE
PODSUMOWANIE
▸ Continous Integration
▸ Continous Delivery
▸ Dontinous Deployment
▸ Build Scripts
▸ Deploy Scripts
▸ Package
JerzyWickowski.pl
SPOSOBY KONFIGURACJI
REFAKTORINGPROBLEM I
SPOSOBY KONFIGURACJI - PROBLEM I
REFAKTORING
REPO CI SERVER
FOO.CSPROJ
TEST.DLL
BUILD FOO.CSPROJ TEST TEST.DLL
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM I
REFAKTORING
REPO CI SERVER
BAR.CSPROJ
UNITTEST.DLL
BUILD BAR.CSPROJ TEST UNITTEST.DLL
ZMIANA! ZMIANA!
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM I
REFAKTORING ROZWIĄZANIE
REPO CI SERVERBAR.CSPROJ
UNITTEST.DLL RUN BUILD
RUN TESTBUILD
SCRIPTS
BEZ ZMIAN!
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM I
BUILD SCRIPTS
▸ Nie zmieniamy konfigracji CI
▸ Lokalne buildy
▸ Wersjonowanie
▸ Budowanie starszej wersji
JerzyWickowski.pl
NOWE ŚRODOWISKOPROBLEM II
SPOSOBY KONFIGURACJI - PROBLEM II
NOWE ŚRODOWISKO
PACZKA CDPLIKI
DEPLOY SCRIPT APP-DEV
RUN APP-DEV
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM II
NOWE ŚRODOWISKOPACZKA
CDPLIKI
DEPLOY SCRIPT APP-DEV
RUN APP-DEV
DEPLOY SCRIPT APP-TEST
ZMIANA!ZMIANA!
RUN APP-TEST
JerzyWickowski.pl
PACZKA
SPOSOBY KONFIGURACJI - PROBLEM II
NOWE ŚRODOWISKO
CDPLIKI
DEPLOY SCRIPTS DEPLOY APP +
PARAMETRY
RUN APP -DBNAME ‘DEVDB’
BEZ ZMIAN!
RUN APP -DBNAME ‘TESTDB’
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM II
DEPLOY SCRIPTS
▸ Nie zmieniamy kodu
▸ Lokalny deploy
▸ Wersjonowanie
▸ Budowanie starszej wersji
▸ Infrastructure as a code
JerzyWickowski.pl
NOWE APIPROBLEM III
SPOSOBY KONFIGURACJI - PROBLEM III
NOWE API
▸ Zmiany
▸ Kod źródłowy
▸ Build skrypty
▸ Deploy skrypty
▸ Server CI
▸ Rozwiązanie
▸ CI config as a code
▸ YAML
JerzyWickowski.pl
SPOSOBY KONFIGURACJI - PROBLEM III
YAML
▸ Konfiguracja CI
▸ Ograniczamy
▸ Build scripts
▸ Deploy Scripty
▸ Wersjonowanie
▸ Budowanie starszej wersji
JerzyWickowski.pl
EVERYTHING AS CODE
BUILD AS A CODE DEPLOY AS A CODE INFRASTRUCTURE AS A CODE CI CONFIG AS A CODE
SPOSOBY KONFIGURACJI - PODSUMOWANIE
SRP DLA CI
▸ Build Script - wie o kodzie i wie jak budować
▸ Deploy Script - wie o paczce i wie jak deplojować
▸ CI - wie kiedy
▸ CD - wie gdzie deplojować
JerzyWickowski.pl
CONTINUOUS DEPLOYMENT
CONTINUOUS DEPLOYMENT
CO TO?
PROD
AUTOMATIC DEPLOYMENT
MANUAL DELIVERY
STAGING
JerzyWickowski.pl
CONTINUOUS DEPLOYMENT
ZALETY
▸ Szybkie dostarczanie
▸ Stabilne release
▸ Szybki feedback
▸ Wymusza dobre praktyki
JerzyWickowski.pl
ZMIANA SPOSOBU MYŚLENIA
BRANCZE
KTÓRY DEPLOJOWAĆ? GIT FLOW? RELEASE BRANCH? TYLKO MASTER!
KOD W REPO NIE MUSI DZIAŁAĆ, ALE NIE MOŻE NIC PSUĆ!
Człowiek mądry
CONTINUOUS DEPLOYMENT - BRANCZE JerzyWickowski.pl
CONTINUOUS DEPLOYMENT - BRANCZE
ZMIANY BEZ PSUCIA
▸ Nowa funkcjonalność
▸ Zmiana istniejącego kodu
▸ if (false) { newCode(); }
▸ else { oldCode(); }
▸ A duży refaktoring?
JerzyWickowski.pl
REFAKTORING TO ZBIÓR MAŁYCH KROKÓW POPRAWIAJĄCYCH STRUKTURĘ KODU
Martin Fowler
CONTINUOUS DEPLOYMENT - BRANCZE JerzyWickowski.pl
BRANCH PER ABSTRACTION
INTERFEJS IMPLEMENTACJA STRATEGIA IOC
SWITCH CONFIG
JSON XML CSV
CONTINUOUS DEPLOYMENT - FEATURE SWITCH
FEATURE SWITCH - CYKL ŻYCIA
DODAJ SWITCH
USUŃ SWITCHPRACUJ
JerzyWickowski.pl
BIZNESOWYFEATURE SWITCH
CONTINUOUS DEPLOYMENT - FEATURE SWITCH
FEATURE SWITCH DASHBOARD
dev test prod
feature1 V V V
feature2 X V V
Feature3 V V X
JerzyWickowski.pl
CONTINUOUS DEPLOYMENT - FEATURE SWITCH
DODATKOWE ZALETY SWITCHY
▸ Wyłączanie bugów
▸ Optymalizacja świąteczna
▸ Deploy, a release
▸ Testy A/B
JerzyWickowski.pl
ROLLBACK
V1.0 V1.0
V1.1 V1.1
V1.0
V1.2 V1.2
Rollback ASAP as possible
CONTINUOUS DEPLOYMENT
BRAMKI
▸ CI - Unit testy, analiza statyczna
▸ Test - Testy integracyjne, UI testy, api test
▸ Staging - wydajność, deploy
JerzyWickowski.pl
DOWNTIMEZERO
RELEASE
RELEASE
GREEN BLUE DEPLOYMENT
JerzyWickowski.pl
MONITORING
BŁĘDY SERWERA BŁĘDY KLIENTA WYDAJNOŚĆ ZGŁOSZENIA UŻYTKOWNIKÓW
RELEASE
CANARY DEPLOYMENT
JerzyWickowski.pl
RELEASE
CANARY DEPLOYMENT
JerzyWickowski.pl
RELEASE
CANARY DEPLOYMENT
JerzyWickowski.pl
RELEASE
CANARY DEPLOYMENT
JerzyWickowski.pl
RELEASE NOTESBACKLOG
NIE CHODZI O TO BY ZŁAPAĆ KRÓLICZKA, ALE BY GONIĆ GO!
Skaldowie
CI/CD - CO TO? PO CO? JAK? JerzyWickowski.pl
PROŚBA
PROSZĘ O OPINIĘ
▸ Email: [email protected]
▸ Blog: jerzywickowski.pl
▸ Instagram: jerzywickowski_pl
▸ YouTube, Twitter, Facebook
JerzyWickowski.pl
JerzyWickowski.pl
PYTANIA?DZIĘKUJĘ