SlideShare une entreprise Scribd logo
1  sur  38
SKOK NA NADERWANYM BUNGEE,
CZYLI AGILE BEZ AUTOMATYZACJI
Witold Bołt
Team Leader
wbolt@jitsolutions.pl
Barłomiej Zięba
Software Architect
bzieba@jitsolutions.pl
Wprowadzenie
Kilka słów o tym co większość z Was już wie?
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Wprowadzenie
Przykład:
Projekt „green field”
Kiedy zaczynasz od zera, możesz wszystko
zrobić dobrze? Albo i nie...
Green-field project
Aplikacja biznesowe do generowania dokumentów
Technology stack: Java EE, JSF, Hibernate, MS SQL
Mały zespół: 2 x developer + 1 x tester
SCRUM, 1 tygodniowe sprinty – łączenie 5 sprintów
ok. 60 MD pracy, 7500 LOC + 7500 LOC testów
455 CI builds
Środowisko wytwórcze
Wyzwania i problemy
Klient zewnętrzny ma dostęp „read” do wszystkiego
Konfiguracja środowiska jednym z dostarczanych produktów
Integracja z systemami klienta: 2 x consume, 1 x provide
Niestabilna infrastruktura linii – zmieniliśmy datacenter w
trakcie
Niestabilne testy Selenium Webdriver
MS SQL 2012
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?
Projekt „legacy”
Projekt bankowy rozwijany od lat
Wiele starego kodu w różnych technologiach
Sporo nowego kodu Java EE
Skomplikowana struktura środowisk testowych
Było
Jest
Jest
Niestabilna infrastruktura środowisk integration, QA i prelive
Blokada 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, warsztaty
Gitflow, relalizowany na (i przez) Jenkinsie
2 poziomy reguł Sonara
Dokumentacja z kodu, info dla monitoringu – na wiki
Wzorce i antywzorce
automatyzacji
Kilka praktycznych porad...
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!
DO: Jenkins per projekt
Wiele projektów?
Systemów? Zespołów?
Wiele środowisk CI!
Wydajność, stabilność,
pewność...
Skomplikowane
zarządzanie?
Zautomatyzuj to!
DO: Wersjonuj WSZYSTKO
Skrypt administracyjne
Pliki konfiguracyjne
Baza danych
Definicja jobów CI,
konfiguracja workflow
... WSZYSTKO co się da
trafia do SCM!
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!
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ą!
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!
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.
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?
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!
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!
DO: Szybki feedback negatywny
Build & package
Unit tests
Integration tests
Deploy
Automated
functional tests
Dziel duże joby na kawałki
W pierwszej kolejności
uruchamiaj:
To co działa szybko
To co ma dużą szansę się
wywalić
Zespół powinien szybko
wiedzieć, że jest źle – o ile
jest ;)
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!
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ć?
DO: ADD = Automation Driven Design
Projektuj z myślą o
automatyzacji
Wybieraj rozwiązania,
które dają się
automatyzować i
wersjonować
DO: Rozwijaj się w kierunku automatyzacji
Warto się rozwijać w
obszarze automatyzacji
procesów!
Warto inwestować w
automatyzację!
Do dzieła!
Dzięki!
Witold Bołt
wbolt@jitsolutions.pl
Bartłomiej Zięba
bzieba@jitsolutions.pl
Online:
www.facebook.com/jitsolutions.gdynia
www.jitsolutions.pl

Contenu connexe

Similaire à InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji

Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
kraqa
 

Similaire à InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji (20)

university day 1
university day 1university day 1
university day 1
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
ANSIBLE W PRAKTYCE
ANSIBLE W PRAKTYCEANSIBLE W PRAKTYCE
ANSIBLE W PRAKTYCE
 
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
 
Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Open your project
Open your project Open your project
Open your project
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test..."Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
 
4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev...
4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev...4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev...
4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev...
 
Ciągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I NarzędziaCiągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I Narzędzia
 
Scam, scum, sacrum
Scam, scum, sacrumScam, scum, sacrum
Scam, scum, sacrum
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznych
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 

InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji

  • 1. SKOK NA NADERWANYM BUNGEE, CZYLI AGILE BEZ AUTOMATYZACJI Witold Bołt Team Leader wbolt@jitsolutions.pl Barłomiej Zięba Software Architect bzieba@jitsolutions.pl
  • 2. Wprowadzenie Kilka słów o tym co większość z Was już wie?
  • 10.
  • 13. Przykład: Projekt „green field” Kiedy zaczynasz od zera, możesz wszystko zrobić dobrze? Albo i nie...
  • 14. Green-field project Aplikacja biznesowe do generowania dokumentów Technology stack: Java EE, JSF, Hibernate, MS SQL Mały zespół: 2 x developer + 1 x tester SCRUM, 1 tygodniowe sprinty – łączenie 5 sprintów ok. 60 MD pracy, 7500 LOC + 7500 LOC testów 455 CI builds
  • 16. Wyzwania i problemy Klient zewnętrzny ma dostęp „read” do wszystkiego Konfiguracja środowiska jednym z dostarczanych produktów Integracja z systemami klienta: 2 x consume, 1 x provide Niestabilna infrastruktura linii – zmieniliśmy datacenter w trakcie Niestabilne testy Selenium Webdriver MS SQL 2012
  • 17. 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?
  • 18. Projekt „legacy” Projekt bankowy rozwijany od lat Wiele starego kodu w różnych technologiach Sporo nowego kodu Java EE Skomplikowana struktura środowisk testowych
  • 19. Było
  • 20. Jest
  • 21. Jest Niestabilna infrastruktura środowisk integration, QA i prelive Blokada 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, warsztaty Gitflow, relalizowany na (i przez) Jenkinsie 2 poziomy reguł Sonara Dokumentacja z kodu, info dla monitoringu – na wiki
  • 23. 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!
  • 24. DO: Jenkins per projekt Wiele projektów? Systemów? Zespołów? Wiele środowisk CI! Wydajność, stabilność, pewność... Skomplikowane zarządzanie? Zautomatyzuj to!
  • 25. DO: Wersjonuj WSZYSTKO Skrypt administracyjne Pliki konfiguracyjne Baza danych Definicja jobów CI, konfiguracja workflow ... WSZYSTKO co się da trafia do SCM!
  • 26. 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!
  • 27. 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ą!
  • 28. 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!
  • 29. 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.
  • 30. 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?
  • 31. 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!
  • 32. 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!
  • 33. DO: Szybki feedback negatywny Build & package Unit tests Integration tests Deploy Automated functional tests Dziel duże joby na kawałki W pierwszej kolejności uruchamiaj: To co działa szybko To co ma dużą szansę się wywalić Zespół powinien szybko wiedzieć, że jest źle – o ile jest ;)
  • 34. 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!
  • 35. 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ć?
  • 36. DO: ADD = Automation Driven Design Projektuj z myślą o automatyzacji Wybieraj rozwiązania, które dają się automatyzować i wersjonować
  • 37. DO: Rozwijaj się w kierunku automatyzacji Warto się rozwijać w obszarze automatyzacji procesów! Warto inwestować w automatyzację! Do dzieła!