Inżynieria Chaosu

Inżynieria Chaosu

Inżynieria Chaosu to stosunkowo młoda dyscyplina testowania systemów rozproszonych. Jej celem jest upewnienie się, że testowany system ma zdolność do radzenia sobie z różnego rodzaju perturbacjami, jakie mogą zaistnieć w produkcyjnym środowisku.

69639a461e92e590acdc1b554934bd8d?s=128

Michał Ślaski

April 26, 2017
Tweet

Transcript

  1. 2.
  2. 15.

    PLAN WYKŁADU • Co to jest MongooseIM? • Testy integracyjne

    • Testy obciążeniowe • Testy odpornościowe
  3. 16.

    PLAN WYKŁADU • Co to jest MongooseIM? • Testy integracyjne

    • Testy obciążeniowe • Testy odpornościowe • Inżynieria Chaosu
  4. 19.

    MONGOOSEIM • Komunikator dla gier on-line, social media, itp. •

    Zaprojektowany z myślą o dużych instalacjach
  5. 20.

    MONGOOSEIM • Komunikator dla gier on-line, social media, itp. •

    Zaprojektowany z myślą o dużych instalacjach • System rozproszony, łatwo skalowalny
  6. 21.

    MONGOOSEIM • Komunikator dla gier on-line, social media, itp. •

    Zaprojektowany z myślą o dużych instalacjach • System rozproszony, łatwo skalowalny • W sam raz dla urządzeń mobilnych lub IoT
  7. 23.

    TESTY INTEGRACYJNE • Budujemy złożone scenariusze
 - kilku użytkowników,
 -

    kilka sesji jednego użytkownika równocześnie,
 - inicjowanie i sprzątanie środowiska do testów
  8. 24.

    TESTY INTEGRACYJNE • Budujemy złożone scenariusze
 - kilku użytkowników,
 -

    kilka sesji jednego użytkownika równocześnie,
 - inicjowanie i sprzątanie środowiska do testów • Escalus - biblioteka do testów integracyjnych
 dla MongooseIM
  9. 25.
  10. 28.

    ESCALUS % TEST CASE
 % Alice sends a chat message

    to Bob’s bare JID % Bob gets the message on both resources
  11. 29.

    ESCALUS % TEST CASE
 % Alice sends a chat message

    to Bob’s bare JID % Bob gets the message on both resources % Bob replies to one of Alice’s resources
  12. 30.

    ESCALUS % TEST CASE
 % Alice sends a chat message

    to Bob’s bare JID % Bob gets the message on both resources % Bob replies to one of Alice’s resources % Alice receives the reply only on that resource
  13. 37.

    TESTY OBCIĄŻENIOWE • Wiele sesji użytkowników równocześnie • Każdy użytkownik

    wykonuje swój scenariusz • Scenariusze napisane są w escalusie
  14. 41.

    TESTY OBCIĄŻENIOWE • Kompiluj scenariusz • Uruchom my_scenario • ID

    użytkowników od 1 do 100000 $ ./run.sh my_scenario 1 100000
  15. 45.
  16. 47.

    • Implementujemy dwie funkcje init/0 i start/1 AMOC init() ->

    exometer:new(?MESSAGES_CT, spiral), exometer_report:subscribe(
 exometer_report_graphite,
 ?MESSAGES_CT,
 [one, count],
 10000), ok.
  17. 48.

    • Implementujemy dwie funkcje init/0 i start/1 AMOC init() ->

    exometer:new(?MESSAGES_CT, spiral), exometer_report:subscribe(
 exometer_report_graphite,
 ?MESSAGES_CT,
 [one, count],
 10000), ok. start(MyId) -> % connect user (using escalus) % fetch history % send some messages
 % wait
 % send some messages again
  18. 49.
  19. 50.
  20. 51.
  21. 56.

    CIĄGŁE STRES-TESTY • Koncepcja podobna do Travis CI + escalus

    • Narzędzie Tide + amoc • Używamy narzędzia docker-swarm
 do tworzenia środowiska testowego
  22. 57.
  23. 58.
  24. 62.

    TESTY ODPORNOŚCIOWE • W rozproszonym systemie
 losowo usuwamy maszyny wirtualne

    • Badamy zachowanie systemu na wypadek błędu • Technika Chaos Monkey
  25. 66.

    CHAOS MONKEY • Wymusza posiadanie planu awaryjnego (fallback) • Netflix

    regularnie stosuje CM na żywym systemie • Dzięki temu inżynierowie są wyczuleni
 na odporność systemów na błędy
  26. 74.

    GENEROWANIE PERTURBACJI API Gateway Persona- lization Randomly select 10% of

    requests to participate in experiment courtesy of Ali Basiri @ Netflix
  27. 78.

    INŻYNIERIA CHAOSU Chaos Engineering is the discipline of experimenting on

    a distributed system in order to build confidence in the system’s capability to withstand turbulent conditions in production. ENGINEERING CH∀OS courtesy of Ali Basiri @ Netflix
  28. 79.

    INŻYNIERIA CHAOSU • Build a Hypothesis around Steady State Behavior

    • Vary Real-world Events • Run Experiments in Production • Automate Experiments to Run Continuously Principles Of Chaos Engineering http://principlesofchaos.org courtesy of Ali Basiri @ Netflix
  29. 86.

    INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    Select 1% of requests for control Select 1% of requests for experiment courtesy of Ali Basiri @ Netflix
  30. 88.

    INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    if(shouldRoute == true) courtesy of Ali Basiri @ Netflix
  31. 89.

    INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    1% 1% 98% courtesy of Ali Basiri @ Netflix
  32. 90.

    INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    if(shouldFail == true) courtesy of Ali Basiri @ Netflix