Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Inżynieria Chaosu

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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.

Avatar for Michał Ślaski

Michał Ślaski

April 26, 2017
Tweet

More Decks by Michał Ślaski

Other Decks in Programming

Transcript

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

    • Testy obciążeniowe • Testy odpornościowe
  2. PLAN WYKŁADU • Co to jest MongooseIM? • Testy integracyjne

    • Testy obciążeniowe • Testy odpornościowe • Inżynieria Chaosu
  3. MONGOOSEIM • Komunikator dla gier on-line, social media, itp. •

    Zaprojektowany z myślą o dużych instalacjach
  4. MONGOOSEIM • Komunikator dla gier on-line, social media, itp. •

    Zaprojektowany z myślą o dużych instalacjach • System rozproszony, łatwo skalowalny
  5. 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
  6. 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
  7. 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
  8. ESCALUS % TEST CASE
 % Alice sends a chat message

    to Bob’s bare JID % Bob gets the message on both resources
  9. 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
  10. 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
  11. TESTY OBCIĄŻENIOWE • Wiele sesji użytkowników równocześnie • Każdy użytkownik

    wykonuje swój scenariusz • Scenariusze napisane są w escalusie
  12. TESTY OBCIĄŻENIOWE • Kompiluj scenariusz • Uruchom my_scenario • ID

    użytkowników od 1 do 100000 $ ./run.sh my_scenario 1 100000
  13. • 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.
  14. • 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
  15. 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
  16. TESTY ODPORNOŚCIOWE • W rozproszonym systemie
 losowo usuwamy maszyny wirtualne

    • Badamy zachowanie systemu na wypadek błędu • Technika Chaos Monkey
  17. 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
  18. GENEROWANIE PERTURBACJI API Gateway Persona- lization Randomly select 10% of

    requests to participate in experiment courtesy of Ali Basiri @ Netflix
  19. 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
  20. 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
  21. 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
  22. INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    if(shouldRoute == true) courtesy of Ali Basiri @ Netflix
  23. INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

    1% 1% 98% courtesy of Ali Basiri @ Netflix
  24. INŻYNIERIA CHAOSU API Gateway Persona- lization API Control API Exp

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