01 · Проектирование
Основы архитектуры приложения
- Заказчик
- студия аренды съёмочного оборудования
- Вы делаете
- сервис расчёта стоимости и бронирований
Развиваете сервис от расчёта стоимости до конкурентных бронирований и сбоев внешних сервисов — и учитесь проводить границы, которые выдерживают новые требования.
Маршрут
11 заданий
Время
18–22 ч
Бесплатно
первые 4
около 2,5 ч работы с проверкой и рецензией
Уровень: от junior. Нужно уметь: менять небольшой проект на Python, запускать pytest, работать с Git
Начать бесплатно · PythonЧему научитесь
- Выделять модули и задавать направления зависимостей
- Защищать бизнес-правила и границы транзакций
- Проверять код, в том числе предложенный ИИ-агентом
Что будет к концу практикума
Работающее приложение сервиса аренды в вашем Git-репозитории: от одной функции расчёта цены до бронирований без конфликтов и доставки через внешнего партнёра. К нему — ваши тесты и записанные решения. Плюс отдельный проект, который вы сделаете сами, без подсказок.
Задания по порядку
Задания развивают один Git-репозиторий: следующее приходит через softpractice update поверх вашего принятого решения. Отдельный проект получает только задание с пометкой «новый проект». Код вы пишете локально, в своём редакторе. Под названием каждого задания — навык, который оно тренирует.
Задания 1–4 — бесплатно
Без подписки: каждое решение проходит тесты и получает рецензию по вашему коду.
- 1Чистая функция расчёта стоимостиОписывать маленькое бизнес-правило понятной функцией: что она принимает, что возвращает и когда сообщает об ошибке. Считать деньги без ошибок округления.25 мин
- 2Период как согласованное значениеДелать значение «период аренды», которое нельзя создать с концом раньше начала, и одинаково считать по нему длительность и пересечение дат.35 мин
- 3Жизненный цикл бронированияМенять статус бронирования только разрешёнными действиями — подтвердить, отменить, завершить — и не ломать объект запрещённой командой.45 мин
- 4Изменяющиеся правила ценыДобавлять скидки и наценки отдельными маленькими правилами, явно задавать порядок их применения и проверять каждое правило отдельно.45 мин
Дальше — по подписке
Подписка открывает остальные задания и весь каталог практикумов.
- 5Разделение перегруженного сервисаРазбирать большой сервис на бизнес-правила, порядок шагов и технические детали вроде базы и отправки писем, не ломая работающее поведение.1 ч
- 6Потребность приложения вместо API поставщикаОтделять приложение от сервиса рассылки: приложение просит «уведоми клиента», а формат и ошибки поставщика остаются в отдельном адаптере.45 мин
- 7Проверка абстракций, предложенных ИИЧитать код, который написал ИИ-агент, находить лишние слои и обёртки и удалять их, не меняя поведения приложения.50 мин
- 8Границы модулейДелить приложение на модули так, чтобы было видно, кто от кого зависит и почему, без циклических импортов, и записывать это решение в ADR — короткий документ о выборе.3 ч
- 9Бронирования и транзакцииНе давать двум клиентам забронировать одну камеру на одни даты, даже если они нажали кнопку одновременно. Понять, что именно должна защищать транзакция.4 ч
- 10Доставка с неизвестным исходомРаботать с ненадёжным сервисом доставки: сохранять заявку до вызова, безопасно повторять запрос и не создавать дублей, когда ответ потерялся.4 ч
- 11Финальная итерация: перенос архитектурных принциповновый проектСамостоятельно применить изученное в новом проекте — возвратах интернет-магазина: проверить возврат, выплатить деньги и после сбоя не выплатить их дважды.1,5 ч
Начните с первых 4 заданий бесплатно
Зарегистрируйтесь, установите CLI и скачайте starter-проект. Если формат подойдёт, подписка откроет продолжение.
Начать бесплатно · Python