Continuous Delivery

597 views
542 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
597
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Przedstawić sięSkąd pomysł na prezentację? – problem do rozwiązania. Jestem inżynierem – rozwiązuję problemy
  • Co to jest webdeploy? Zapytać ludzi na SaliCo to jest push?Rozwiązanie kiepsko się skalowało wraz ze wzrostem skomplikowania solution
  • Krótko bardzo kto to TrevorSkąd jest cytat: Władca Pierścieni: Frodo do Gildora (na zdjęciu Elrond)
  • Architekt się załamał nad moją nieodpowiedzialnością
  • Następnie przyszła porcja teorii w postaci znakomitej książkiKolejne założenia: deployment na każde środowisko ma być wykonywany zgodnie z tą samą procedurą a deployowane mają być dokładnie te same binaria.
  • build
  • agile software development is all about mutually reinforcing hierarchical feedback loops
  • Ostatnim elementem układanki jest implementacja potoku.PowerShellWindowsSchedulerMetadane – która wersja wdrożona na które środowisko?
  • one uniform repeatable manual deployment process for all environments is better than three separatate automated processes for each environment
  • Wiele plikow bat. Bardzo ograniczony język. Skomplikowna składania, szczególnie pętli. Brak łatwego sposobu oporowania na strukturach danych wyższego poziomu takich jak tablice i rekordy – niezbędne do obsługi metadatanychGlowna pętla w DeployAll iteruje po wszystkich plikach pasujących do wzorca nazwy.Każdy plik referuje params (ładuje zmienne określające parametry wszystkich aplikacji), przepisuje wartości zmiennych aplikacji X do zmiennych wspólnych i wywołuje common.bat.Parametry aplikacji są wczytane z pliku metadanych. Pętla iteruje po aplikacjach i dla każdej wywołuje Deploy
  • Import-CSVKonwertuje CSV na listę anonimowych obiektów, nazwy properties w nagłówku. Invoke-CommandWykorzystuje WS-Management via WinRM (http/s, xml). Transportuje zserializowany blok skryptu do zdalnego hosta, wykonuje go i zwraca wyniki.Natywne wsparcie dla serializacji XML w PSAutentykacja Windows, CredSSP
  • ForEach – jak połączenie foreach oraz .Select. Iteruje po obiektach wykonując operację. Zwraca wynik operacji.Inne: sort-object, group-object
  • it is easier to break your system by changing a single line of configuration then it is by changing a single line of code
  • Kolejnym z fundamentów continous delivery jest zarządzanie konfiguracją. Konfiguracja musi być wersjonowana.Nasze podejście: konfiguracja w VCS, dodawana do paczki wdrożeniowej.Podział wg. dwóch ortogolalnych kryteriów: zmienności względem środowiska i względem aplikacji/procesuPodczas deplojmentu, spośród wszystkich plików konfiguracyjnych wybierane są te właściwe dla danej kombinacji środowiska i aplikacjiPrzykładyHelpers:appSettings file=DirectoryJunction (mklink /J – directory hard link)
  • Środowisko: DEV, TEST, PROD, DR. Nazwany zbiór maszyn na który deplojowana jest aplikacjaRola: nazwany zbiór aplikacji deplojowany wspólnie na wybrene maszyny. Jednostka deplojmentuMaszyna: fizyczny lub wirtualny serwerKompromis pomiędzy elastycznością (możliwością deplojowania wszystkiego wszędzie), a zwięzłością i łatwością zarządzania
  • MSBuild – skrypt pakujący. W starym TFS także skrypt budującyPS – wszędobylski klej spajający rozwiązanieWebDeploy – mechanizm paczkowania. Alternatywnie – NuGet lub OpenWrap. WebDeploy łatwy dla aplikacji webowych – buduje odpowiednie paczki na bazie projektu Web ApplicationCurl – download paczek, komunikacja z trackerem RCPackaging tool – brak wsparcia dla podpisu cyfrowego ootb. Dodatkowo zipuje bez koniecznosci instalowania 3rd party toolRC tracking – mały tool a cieszy
  • Co to jest webdeploy? Zapytać ludzi na SaliCo to jest push?Rozwiązanie kiepsko się skalowało wraz ze wzrostem skomplikowania solution
  • See the state & deploy
  • Continuous Delivery

    1. 1. DEPLOYMENT AUTOMATION& CONTINUOUS DEPLOYMENT Szymon Pobiega
    2. 2. ONLY WEB APPLICATIONSMANUAL SERVER CONFIGURATIONONLY SIT ENVIRONMENT PUSH MODEL SPECIAL BUILD
    3. 3. GO NOT TO THE ELVES ARCHITECTS FOR http://bit.ly/AqFnOfCOUNSEL, FOR THEY WILL SAY BOTH NO AND YES
    4. 4. http://bit.ly/z5Fpp3
    5. 5. DEPLOYMENT AUTOMATION& CONTINUOUS DEPLOYMENT Szymon Pobiega
    6. 6. HOW LONG WOULD IT TAKE YOURORGANIZATION TO DEPLOY A CHANGETHAT INVOLVES JUST ONE SINGLE LINE OF CODE? Mary Poppendieck
    7. 7. FEEDBACK
    8. 8. WAIT NO CHECK VERSION OF LATEST BUILD NEW? YES RUN INTEGRATIONUPDATE RC STATE TESTS DEPLOY
    9. 9. REPEATABILITY
    10. 10. PS C:PowerShell>COMMON.BAT PARAMS.BAT DEPLOY_A.BAT APPS.CSV DEPLOY.PS1 DEPLOY_B.BAT DEPLOY_C.BAT DEPLOY-ALL.PS1 DEPLOY_ALL.BAT
    11. 11. PS C:PowerShell> Import-CSV Invoke-Command
    12. 12. PS C:PowerShellLINQ>PS C:$a = $b ` var a = b| ForEach-Object { 2 * $_ } ` .Select(x=> 2*x)| Where-Object { $_ -gt 0 } ` .Where(x=> x>0)| Select-Object -Unique ` .Distinct()| Select-Object -Skip 1 ` .Skip(1)| Select-Object -First 2 .Take(2);
    13. 13. CONFIGURATION MANAGEMENT
    14. 14. ENV + ENV APPSHARED APP
    15. 15. ENVIRONMENTS , ROLES & MACHINES PRODUCTION TESTING CI WEB-1 TEST-1WEB-2 CI-1 TEST-2 WEB-3APP-1
    16. 16. WEB APPS AND SCHEDULED JOBSAUTOMATIC SERVER CONFIGURATIONPULL MODEL EVERY BUILD CREATES RC VERSION-CONTROLLED CONFIG PACKAGE SECURITY
    17. 17. 2 WORKWEEKS TO IMPLEMENTSAVED 1 WORKWEEK DURING FIRST MONTH PRODUCTION DEPLOYMENT BY BA PRODUCTION DEPLOYMENT EVERY WEEK
    18. 18. PROPER ENVIRONMENT DESIGN POWERSHELL SCRIPTINGEVENT SOURCING ARCHITECTURE
    19. 19. ZERO-DOWNTIME DEPLOYMENTMONITORING & INSTRUMENTATION VM PROVISIONING
    20. 20. THANK YOU SZYMON@POBIEGA.COMSIMON-SAYS-ARCHITECTURE.COM @SZYMONPOBIEGA

    ×