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

  • 310