← Все практикумы

08 · Устойчивость

Устойчивый сервис: внешние вызовы и перегрузка

Заказчик
«Партер», билетный сервис
Вы делаете
сервис, который зависит от медленного и иногда отказывающего партнёра

Даёте операциям бюджет времени, ограничиваете повторы и обращения к лежащей зависимости, принимаете нагрузку по объявленным пределам и подтверждаете каждое решение виртуальными часами и счётчиками.

Маршрут

6 заданий

Время

15–20 ч

Бесплатно

первые 2

около 5 ч работы с проверкой и рецензией

Уровень: от middle до senior. Нужно уметь: писать асинхронный код на Python (async/await, asyncio), понимать HTTP-статусы, писать тесты pytest и работать с Git

Начать бесплатно · Python

Чему научитесь

  • Давать операции один бюджет времени и честно отвечать, когда он кончился
  • Повторять так, чтобы не уронить партнёра
  • Принимать нагрузку по объявленным пределам и отказывать быстро

Что будет к концу практикума

Билетный сервис в вашем Git-репозитории: операции с объявленными гарантиями в `limits.toml`, собственные сценарии и тесты под виртуальными часами и записанные решения с ценой каждого предела.

Задания по порядку

Задания развивают один Git-репозиторий: следующее приходит через softpractice update поверх вашего принятого решения. Отдельный проект получает только задание с пометкой «новый проект». Код вы пишете локально, в своём редакторе. Под названием каждого задания — навык, который оно тренирует.

Задания 1–2 — бесплатно

Без подписки: каждое решение проходит тесты и получает рецензию по вашему коду.

  1. 1Бюджет времени операцииДавать операции один бюджет времени от прихода запроса, отдавать зависимости только остаток и честно говорить клиенту, что сервис не успел.2,5 ч
  2. 2Повтор, который не роняет партнёраПовторять только исходы, после которых вторая попытка может удаться, разводить повторы во времени и начинать попытку, только если она успевает в остаток бюджета.2,5 ч

Дальше — по подписке

Подписка открывает остальные задания и весь каталог практикумов.

  1. 3Долгий отказ зависимостиОграничивать обращения к лежащей зависимости общим для всех запросов знанием: признаки и порог, редкие пробы в объявленном бюджете и быстрый честный ответ без обращения.2,5 ч
  2. 4Перегрузка на входеДержать обещание под перегрузкой: объявленные пределы работы и ожидания, отказ на входе до работы с подсказкой, когда повторить, предел на клиента и свой предел у брони.3 ч
  3. 5Горячие данныеБеречь источник под горячей нагрузкой: кэш с объявленной свежестью, одно обращение на ключ при промахе, честный ответ ожидающих и решения, которые кэшу не доверяют.3 ч
  4. 6День релиза: пределы как системаПересмотреть свои решения как систему: отличать свою очередь от молчания зависимости, решить, что отдавать при её недоступности, и доказать цену счётчиками.3,5 ч

Начните с первых 2 заданий бесплатно

Зарегистрируйтесь, установите CLI и скачайте starter-проект. Если формат подойдёт, подписка откроет продолжение.

Начать бесплатно · Python