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

01 · Проектирование

Основы архитектуры приложения

Заказчик
студия аренды съёмочного оборудования
Вы делаете
сервис расчёта стоимости и бронирований

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

Язык:

Маршрут

11 заданий

Время

18–22 ч

Бесплатно

первые 4

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

Уровень: от junior. Нужно уметь: менять небольшой проект на Python, запускать pytest, работать с Git

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

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

  • Выделять модули и задавать направления зависимостей
  • Защищать бизнес-правила и границы транзакций
  • Проверять код, в том числе предложенный ИИ-агентом

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

Работающее приложение сервиса аренды в вашем Git-репозитории: от одной функции расчёта цены до бронирований без конфликтов и доставки через внешнего партнёра. К нему — ваши тесты и записанные решения. Плюс отдельный проект, который вы сделаете сами, без подсказок.

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

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

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

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

  1. 1Чистая функция расчёта стоимостиОписывать маленькое бизнес-правило понятной функцией: что она принимает, что возвращает и когда сообщает об ошибке. Считать деньги без ошибок округления.25 мин
  2. 2Период как согласованное значениеДелать значение «период аренды», которое нельзя создать с концом раньше начала, и одинаково считать по нему длительность и пересечение дат.35 мин
  3. 3Жизненный цикл бронированияМенять статус бронирования только разрешёнными действиями — подтвердить, отменить, завершить — и не ломать объект запрещённой командой.45 мин
  4. 4Изменяющиеся правила ценыДобавлять скидки и наценки отдельными маленькими правилами, явно задавать порядок их применения и проверять каждое правило отдельно.45 мин

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

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

  1. 5Разделение перегруженного сервисаРазбирать большой сервис на бизнес-правила, порядок шагов и технические детали вроде базы и отправки писем, не ломая работающее поведение.1 ч
  2. 6Потребность приложения вместо API поставщикаОтделять приложение от сервиса рассылки: приложение просит «уведоми клиента», а формат и ошибки поставщика остаются в отдельном адаптере.45 мин
  3. 7Проверка абстракций, предложенных ИИЧитать код, который написал ИИ-агент, находить лишние слои и обёртки и удалять их, не меняя поведения приложения.50 мин
  4. 8Границы модулейДелить приложение на модули так, чтобы было видно, кто от кого зависит и почему, без циклических импортов, и записывать это решение в ADR — короткий документ о выборе.3 ч
  5. 9Бронирования и транзакцииНе давать двум клиентам забронировать одну камеру на одни даты, даже если они нажали кнопку одновременно. Понять, что именно должна защищать транзакция.4 ч
  6. 10Доставка с неизвестным исходомРаботать с ненадёжным сервисом доставки: сохранять заявку до вызова, безопасно повторять запрос и не создавать дублей, когда ответ потерялся.4 ч
  7. 11Финальная итерация: перенос архитектурных принциповновый проектСамостоятельно применить изученное в новом проекте — возвратах интернет-магазина: проверить возврат, выплатить деньги и после сбоя не выплатить их дважды.1,5 ч

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

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

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