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

07 · Архитектура

Слои, порты и сборка

Заказчик
сервисная служба, заявки на ремонт офисной техники
Вы делаете
сервис, который принимает одно действие через разные входы

Проводите границу операции, собираете приложение для HTTP и пакетного входа, управляете настройками и ресурсами, честно сообщаете исход после сбоя и подключаете второй канал уведомлений по проверяемому договору.

Маршрут

6 заданий

Время

14–20 ч

Бесплатно

первые 2

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

Уровень: middle. Нужно уметь: писать сервис на Python с базой и HTTP, писать тесты pytest, работать с Git

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

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

  • Отделять действие приложения от формы, в которой его прислали
  • Собирать зависимости в одном месте и закрывать ресурсы на любом пути
  • Проверять несколько реализаций одним договором

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

Сервис регистрации заявок в вашем Git-репозитории: одна операция под двумя формами, пакетным файлом и прямым вызовом, общая сборка, два канала уведомлений, собственные проверки договора и записанные решения.

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

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

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

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

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

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

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

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

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

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

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