To są przecież podstawowe rzeczy
#0
Kim jest
ten facet
na scenie?
Piotr Stapp
- Mam dość unikalne nazwisko - łatwo zapamiętać ;)
- CEO @ Dotnetomaniak
- VP @ devWarsztaty
- Software Architect @ Demant
- Autor poznajkubernetes.pl
- M.Sc (distction) Oxford Brooks University in Web Tech
- M.Sc. Warsaw University of Technology in Computer Science
- Oraz ......
#1
Rzemieślnik
i
inżynier
Kto to budował?
Rzemieślnik
- Umie powtarzać wzorce
- Bardzo dobry rzemieślnik potrafi dopasowywać wzorce
- Wybitny rzemieślnik potrafi tworzyć wzorce
Architekt
- Rozumie używane wzorce
- Przeciętny inżynier rozumie prawa użyte we wzorcach
- Dobry inżynier umie łączyć wzorce i je weryfikować
#2
Jak tworzyć
dobre aplikacje (rozproszone)?
Pomysł #1
Pomysł #1 - rezultat
Pomysł #2 - historia + exp!
Pomysł #2 - wynik
Junior DEV:
Pomysł #3 - copy BIG ONES
Pomysł #3 - wynik
Pomysł #4
Pomysł #4 - wynik
A na poważnie?
12 factor app
- Metodologia dwunastu aspektów
- Może być stosowana do aplikacji napisanych w każdym języku programowania
- Może być stosowana do aplikacji wykorzystujących dowolną kombinację usług wspierających (bazy danych, kolejki, cache pamięci etc).
Ale czy można im ufać?
- Stworzyli ją deweloperzy, którzy bezpośrednio byli zaangażowani w tworzenie i wdrażanie setek aplikacji na platformie Heroku
- Dodatkowo pośrednio byli świadkami produkcji, działania i skalowania setek tysięcy aplikacji
- Metodologia jest podsumowaniem ich doświadczeń i obserwacji aplikacji typu SaaS
I. Codebase
Jedno źródło kodu śledzone systemem kontroli wersji, wiele wdrożeń
II. Zależności
Jawnie zadeklaruj i wydziel zależności
III. Konfiguracja
Przechowuj konfigurację w środowisku
IV. Usługi wspierające
Traktuj usługi wspierające jako przydzielone zasoby
V. Buduj, publikuj, uruchamiaj
Oddzielaj etap budowania od uruchamiania
VI. Procesy
Uruchamiaj aplikację jako jeden lub więcej bezstanowych procesów
VII. Przydzielanie portów
Udostępniaj usługi przez przydzielanie portów
VIII. Współbieżność
Skaluj przez odpowiednio dobrane procesy
IX. Zbywalność
Zwiększ elastyczność pozwalając na szybkie uruchamianie i zatrzymywanie aplikacji
X. Jednolitość środowisk
Utrzymuj konfigurację środowisk jak najbardziej zbliżoną do siebie
XI. Logi
Traktuj logi jako strumień zdarzeń
XII. Zarządzanie aplikacją
Uruchamiaj zadania administracyjne jako jednorazowe procesy
Podsumowanie
Uruchamiaj zadania administracyjne jako jednorazowe procesy
Podsumowanie
-
12factor to standard umożliwiający stworzenie dobrych jakościowo aplikacji.
-
Aplikacje 12factor są łatwo przenaszalne - można je hostować wszędzie niezależnie od technologii.
Podsumowanie c.d.
- 12Factor + np: Kubernetes = <3
- 12Factor + np: Kubernetes = wdrażanie wszędzie
- 12Factor + "the new big thing" = easy :)
#3
Ile serwerów
minimalnie potrzebuje nasza aplikacja?
Pomysł #1
Pomysł #1
Pomysł #2
Pomysł #3
3.... 2.... 1
M/M/c queue
czyli
Erlang–C model
Matematyka :)
- Pw - czas oczekiwana
- A - intensywność ruchu
- N - Ilość agentów
Opublikowane w 1917 roku przez A.K. Erlang
DEMO!
Podsumowanie czyli a jak się nie da?
- Dobry orkiestrator na ratunek (np: Kubernetes - sorry)
- Albo dobra infrastruktura PaaS
- A w nim:
- auto skalowanie
- auto tworzenie nowych "serwerów"
- auto monitorowanie zużycia, czasu, kolejki itp.
- A mają te dane => wzorek czeka :)
#4
Czy aplikacja żyje i ma się dobrze czy może już umarła i jest w piekle?
Aplikacje kiedyś (i czasem dziś)
Aplikacje 2014 - *
A na serio
Pomysł #1
Pomysł #2
Health check
Jakie rodzaje
- Czy aplikacja żyje?
- Czy usługi zależne żyją?
- Czy "domenowo" aplikacja pracuje dobrze?
Podsumowując: czy to wystarcza?
- NIE!!!!
- Znów potrzeba czegoś co to obsłuży
- Możemy wybrać:
- Wybrać/użyć coś PaaS
- Zbudować coś sami
- Użyć orkiestratora np: Kubernetes
- Zrobić miks :)
#5
Jak dokonać migracji bazy danych o godzinie 13:15 jedząc lunch w bezpieczny sposób?
Pomysł #1
Pomysł #2
Pomysł #2
A gdyby tak?
- Dodaję zmianę w schemacie DB
- Robię wdrożenie zmiany DB
- Jak:
- już wszystko przeszło;
- czyli jest na UAT/produkcji;
- czyli stary kod działa z nową wersją schematu;
- czyli jestem pewien zmiany
to dopiero używam nowej wersji schematu
Podsumowując
- Włączamy myślenie :)
- Pamiętamy że NoSQL to nie rozwiązania problemów z SQL
- Stosujemy regułę trzech wersji (acz pewnie nazywa się inaczej)
- W NoSQL są inne sposoby :)
#6
Jak odszukać logi które dotyczą request z 15:31:00:001?
Pomysł #1
Pomysł #1
Pomysł #2
Problem
Rozwiązanie
Podsumowanie czyli "ale jak???"
- Używać GUID od początku ścieżki
- Jak się da to już w SPA :)
- Przekazywać go zarówno po HTTP jak i kolejkach
- Uważać na zagnieżdżenia (albo dodać informację o nich)
- Najprościej w HTTP Header
Koniec?
Jeszcze nie ;)
To są przecież podstawowe rzeczy
By Piotr Stapp
To są przecież podstawowe rzeczy
- 305