Skok na naderwanym bungee, czyli agile bez automatyzacji

38
SKOK NA NADERWANYM BUNGEE, CZYLI AGILE BEZ AUTOMATYZACJI Witold Bołt Team Leader [email protected] Barłomiej Zięba Software Architect [email protected]

description

Slajdy z prezentacji przeprowadzonej w ramach konferencji InfoShare 2014, 22 maja 2014 r. w Gdańsku. Prowadzący prezentacje: Witold Bołt i Bartłomiej Zięba.

Transcript of Skok na naderwanym bungee, czyli agile bez automatyzacji

Page 1: Skok na naderwanym bungee, czyli agile bez automatyzacji

SKOK NA NADERWANYM BUNGEE, CZYLI AGILE BEZ AUTOMATYZACJI

Witold BołtTeam Leader

[email protected]

Barłomiej ZiębaSoftware Architect

[email protected]

Page 2: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Kilka słów o tym co większość z Was już wie?

Page 3: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 4: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 5: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 6: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 7: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 8: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 9: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 10: Skok na naderwanym bungee, czyli agile bez automatyzacji
Page 11: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 12: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wprowadzenie

Page 13: Skok na naderwanym bungee, czyli agile bez automatyzacji

Przykład:Projekt „green field”

Kiedy zaczynasz od zera, możesz wszystko zrobić dobrze? Albo i nie...

Page 14: Skok na naderwanym bungee, czyli agile bez automatyzacji

Green-field project

Aplikacja biznesowe do generowania dokumentówTechnology stack: Java EE, JSF, Hibernate, MS SQLMały zespół: 2 x developer + 1 x testerSCRUM, 1 tygodniowe sprinty – łączenie 5 sprintówok. 60 MD pracy, 7500 LOC + 7500 LOC testów455 CI builds

Page 15: Skok na naderwanym bungee, czyli agile bez automatyzacji

Środowisko wytwórcze

Page 16: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wyzwania i problemy

Klient zewnętrzny ma dostęp „read” do wszystkiegoKonfiguracja środowiska jednym z dostarczanych produktów

Integracja z systemami klienta: 2 x consume, 1 x provideNiestabilna infrastruktura linii – zmieniliśmy datacenter w trakcieNiestabilne testy Selenium WebdriverMS SQL 2012

Page 17: Skok na naderwanym bungee, czyli agile bez automatyzacji

Przykład:Projekt typu „legacy”

Co zrobić gdy stoi za nami kupa ... wcześniejszych doświadczeń, sukcesów,

słusznych decyzji, trafnych wyborów i nie tylko?

Page 18: Skok na naderwanym bungee, czyli agile bez automatyzacji

Projekt „legacy”

Projekt bankowy rozwijany od latWiele starego kodu w różnych technologiachSporo nowego kodu Java EESkomplikowana struktura środowisk testowych

Page 19: Skok na naderwanym bungee, czyli agile bez automatyzacji

Było

Page 20: Skok na naderwanym bungee, czyli agile bez automatyzacji

Jest

Page 21: Skok na naderwanym bungee, czyli agile bez automatyzacji

Jest

Niestabilna infrastruktura środowisk integration, QA i preliveBlokada organizacyjna na poziomie release„One repo to rule them all” -> code split, repo split , nexus!Wiele elementów systemu (kontenery aplikacji, ESB itp.)Wsparcie w zespole wewnętrznym, warsztatyGitflow, relalizowany na (i przez) Jenkinsie2 poziomy reguł SonaraDokumentacja z kodu, info dla monitoringu – na wiki

Page 22: Skok na naderwanym bungee, czyli agile bez automatyzacji

Wzorce i antywzorce automatyzacji

Kilka praktycznych porad...

Page 23: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: Niestabilne środowisko / testy

Słaby sprzęt / infrastruktura?Niska wydajność i dostępność?Częste faile testów z powodów „losowych”?

Środowisko CI to system produkcyjny!

Page 24: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Jenkins per projekt

Wiele projektów? Systemów? Zespołów?Wiele środowisk CI!Wydajność, stabilność, pewność...Skomplikowane zarządzanie? Zautomatyzuj to!

Page 25: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Wersjonuj WSZYSTKO

Skrypt administracyjnePliki konfiguracyjneBaza danychDefinicja jobów CI, konfiguracja workflow

... WSZYSTKO co się da trafia do SCM!

Page 26: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: Sonar overkill

Cel: zero naruszeń w Sonarze?Kary dla programistów, którzy naruszają reguły?Blokowanie commitów?Sztywne granice odnośnie code coverage, rules complience, itd.?NIE!

Page 27: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Power to the people!

Oddzielny dział/zespół rządzący środowiskiem CI?Specjalne pozwolenie na wykonanie builda?Wniosek o odświeżenie środowiska?

Programiści i testerzy rządzą!

Page 28: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: Zmieniamy wszystko na raz!

Stan obecny – wszystko robimy ręcznie?Co chcemy osiągnąć w jednym kroku? Wszystko automatycznie!

NIE!Małe kroki, walidacja, mierzymy korzyści!

Page 29: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: „za wcześnie na automatyzację”

„Póki co nie ma czego testować... Pomyślimy o testach później!”„Automatyczny deployment teraz to strata czasu – jak będą testy UAT to zrobimy.” NIE! Zacznij tak szybko jak to możliwe.

Page 30: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Hello World!

Testuj infrastrukturę CI!Mini-projekt „hello world” – czy przechodzi poprawnie cały proces?Czy każdy rozumie proces?Czy każdy otrzymuje odpowiedni feedback?

Page 31: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: te testy zawsze failują - spoko

„Spoko, te 6 testów zawsze failuje...”„Nie ma problemu – te testy nie działają bo baza nie ma danych...”Akceptacja dla błędów to źródło wielkiego zła!Co zrobić? Wywal popsute testy albo je napraw!

Page 32: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Chodzi o informacje!

Propaguj informacje!Lampy, odgłosy, ekrany, maile, SMS, IM, spotkania poranne... cokolwiek co działa dla Ciebie.

Informacja, z której nikt nie korzysta jest bezużyteczna!

Page 33: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Szybki feedback negatywny

Build & package

Unit tests

Integration tests

Deploy

Automated functional tests

Dziel duże joby na kawałkiW pierwszej kolejności uruchamiaj:

To co działa szybkoTo co ma dużą szansę się wywalić

Zespół powinien szybko wiedzieć, że jest źle – o ile jest ;)

Page 34: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO NOT: ręczne poprawki po automatach

Build się nie udał?! Spokojnie – umiem to naprawić... ssh, cp, rm, vim, deploy.sh, DONE!

Zamiast ręcznie poprawić popsuty build – popraw automat!

Page 35: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Refactoring linii produkcyjnej

Czy wszystkie narzędzia, które mamy są nam potrzebne?

Czy osiągamy korzyści z naszych procesów?

Czy wszystko jest poprawnie zintegrowane?

Czy coś można zrównoleglić?

Czy coś jeszcze można automatyzować?

Page 36: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: ADD = Automation Driven Design

Projektuj z myślą o automatyzacjiWybieraj rozwiązania, które dają się automatyzować i wersjonować

Page 37: Skok na naderwanym bungee, czyli agile bez automatyzacji

DO: Rozwijaj się w kierunku automatyzacji

Warto się rozwijać w obszarze automatyzacji procesów!Warto inwestować w automatyzację!

Do dzieła!

Page 38: Skok na naderwanym bungee, czyli agile bez automatyzacji

Dzięki!

Witold Boł[email protected]

Bartłomiej Zię[email protected]

Online:www.facebook.com/jitsolutions.gdynia

www.jitsolutions.pl