Перейти к основному содержимому

Проектирование — о разделе

Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed. Короткие фрагменты и диаграммы mermaid остаются в markdown; интерактив — в play.spirzen.ru.

Продолжение Проектирование и архитектуракак спроектировать систему — NFR, API, данные, распределёнка, надёжность. Паттерны GoF — в соседней папке.

Чистая архитектура: теория (2132)практика ASP.NET Core (2143)MediatR.

Теория данных (раздел 3)

Термины подраздела

ТерминКоротко
DDDDomain-Driven Design — bounded context, агрегаты
Contract-firstOpenAPI/AsyncAPI до кода
PACELCПри живой сети: latency vs consistency (Проектирование распределенных систем)
OutboxСобытие и запись в БД — одна транзакция (Saga)
Circuit BreakerПредохранитель на вызов зависимости (Инженерия устойчивости)
Ошибка / исключениеФатальный сбой среды vs ожидаемое отклонение в коде — Ошибки, исключения и отказоустойчивость

Стадии проектной документации (ГОСТ 2.103)

В российской практике конструкторская документация на ПО часто ведётся по ГОСТ 2.103 (стадии разработки), в дополнение к ГОСТ 34 для автоматизированных систем (Дополнительные виды проектной документации):

СтадияСодержание (упрощённо)
Техническое заданиеТребования к системе (в 2.103 не всегда как стадия КД, но связывается с ТЗ по 34)
Техническое предложениеВарианты решения, обоснование выбора
Эскизный проектПринципиальная структура, основные решения
Технический проектДетальная архитектура, интерфейсы, данные
Рабочий проектДокументация для реализации и сопровождения

На западных проектах роли те же по смыслу, но названия другие — Software Architecture Document, Software Design Document, OpenAPI-спецификации. См. виды документации.


Базовая теория (глава 4)

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

Вопрос при проектированииТеория
SOLID, слои, DIPSOLID · парадигмы
Агрегаты, наследование vs композицияООП — о разделе
Исключения в handler vs Circuit BreakerОшибки и отказоустойчивость
DI, версии пакетовЗависимости — о разделе
Слой persistence, lazy loadORM — о разделе
Асинхронные handler, outbox workerАсинхронность — о разделе

Рекомендуемый порядок

Мышление и качество

  1. Проектирование программных систем · лестница проектирования · принципы
  2. NFR · документация · сервисы и методы

Данные, API, масштаб

  1. Ошибки и исключения (теория) · БД · API и интеграции (три сквозных примера и маршрут) · пакетная работа с данными (batch/bulk/chunk при ETL и массовых загрузках) · теория очередей и брокеров · OAuth и webhooks · mTLS, JWS, AsyncAPI, outbox · Ричардсон · идемпотентность

    Теория до Проектирование баз данных: Основы БД · опорные темы · нормализация.

    Практика выбранной СУБД из кода — SQLite, PostgreSQL, MySQL, Microsoft SQL Server.

  2. OpenAPI · REST в инфраструктуре · ввод по API · 8 принципов RESTful API

  3. System Design — карта тем · 12 концепций распределённой архитектуры · масштабирование / Горизонтальное масштабирование · надёжность · инженерия устойчивости · SLA — договор · SLA — "девятки" · распределённые системы


Стили и эволюция

  1. Модульный монолит · события · CQRS · Event Sourcing · Saga · Strangler · паттерны перехода с монолита
  2. Микросервисные паттерны (девять компонентов продакшн-стека) · веб · GRASP и ADR

Практика архитектора

  1. Event Storming · оценка альтернатив · threat modeling

Системы с LLM и RAG

Корпоративный чат, copilot и поиск по базе знаний — те же инженерные задачи, что и у распределённого сервиса — контракт API, NFR, данные, отказоустойчивость. Удобный вертикальный каркас — Семь слоёв LLM-стека (источники → предобработка → модель → оркестрация → инференс → интеграция → приложение). Горизонтальные приёмы из этого подраздела к нему стыкуются так:

Задача проектированияГлава здесьСлой LLM-стека
Latency, SLA, деградацияNFR, SLA5 — инференс
REST, OAuth, webhooksAPI и интеграции6 — интеграция
Векторный индекс, схема метаданныхБД, векторные БД2 — данные
Gateway, rate limit, очереди12 концепций, брокеры5–6
Ошибки в коде vs устойчивость сервисаОшибки, исключения и отказоустойчивость, Инженерия устойчивости5–6
Угрозы и PIIthreat modeling, защита данных2, 5

Реализация и промпты — Разработка ИИ.


Все материалы


В подборках

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

ТехлидПаттерны проектирования — о разделе, Архитектура выполнения — о разделе, Роль и практика архитектора программного обеспечения, Микросервисы и интеграция — о разделе, Проектирование и архитектура — о разделе, Культура кода — о разделе.

Архитектура и проектирование ПОПаттерны проектирования — о разделе, Методы защиты пользовательских и корпоративных данных, Проектирование и архитектура — о разделе, Микросервисы и интеграция — о разделе, Архитектура десктопных приложений, Контейнеризация и оркестрация — о разделе.