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

Graceful degradation testing: тестирование част...

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

Graceful degradation testing: тестирование частичной недоступности

Graceful Degradation testing

Avatar for Frol Kryuchkov

Frol Kryuchkov

June 09, 2020

Other Decks in Programming

Transcript

  1. Graceful degradation — это ряд мер, которые направлены на улучшение

    доступности системы при отказе ее части
  2. В функциональных командах в монолитной архитектуре Из-за большого объема коммуникаций

    Time to market растет, при этом инженерная экспертиза распространяется естественно
  3. В кросс-функциональных командах За счет автономности команд как коммуникативных так

    и технических time to market падает, но страдает обмен экспертизой между командами
  4. 1. Отдать частичный результат, чтобы пользователь продолжать пользоваться сайтом и

    чтобы не спровоцировать цепочный отказ пользовательского запроса
  5. 2. Отказ внешней зависимости не должен выводить из строя сервис

    Чтобы не допустить каскадный отказ микросервисов
  6. public function testItemPage() { $this ->getReport() ->addPrecondition('Деградировать сервис u8r до

    503-ей ошибки.'); $serviceMock = $this ->resourceFactory() ->gracefulDegradation(); $serviceMock->degradeService('u8r', BEHAVIOR_CODE_503);
  7. public function testItemPage() { $this ->getReport() ->addPrecondition('Деградировать сервис u8r до

    503-ей ошибки.'); $serviceMock = $this ->resourceFactory() ->gracefulDegradation(); $serviceMock->degradeService('u8r', BEHAVIOR_CODE_503);
  8. public function testItemPage() { $this ->getReport() ->addPrecondition('Деградировать сервис u8r до

    503-ей ошибки.'); $serviceMock = $this ->resourceFactory() ->gracefulDegradation(); $serviceMock->degradeService('u8r', BEHAVIOR_CODE_503);
  9. public function testItemPage() { $this ->getReport() ->addPrecondition('Деградировать сервис u8r до

    503-ей ошибки.'); $serviceMock = $this ->resourceFactory() ->gracefulDegradation(); $serviceMock->degradeService('u8r', BEHAVIOR_CODE_503);
  10. 1. Read timeouts 2. 504 3. 500 4. To many

    requests 5. Invalid schema
  11. • Гарантию работоспособности системы при отказе некритических зависимостей • Повышение

    стабильности при overloaded • Повышение стабильности e2e-тестов
  12. • Узнали про технические и коммуникационные трудности микросервисной архитектуры •

    Рассмотрели причины аварий и их последствия • Рассмотрели, как последствия ведут к каскадным отказам • Узнали, что бывают proactive-методологии и reactive- методологии для решения каскадных отказов микросервисной архитектуры • Рассмотрели одно из техническое решение в Авито для тестированию not critical dependencies