Архитектурный выбор
Архитектурные развилки и как их решать: монолит или микросервисы, выбор хранилищ, sync или async, MVC или WebFlux, ADR для фиксации решений, роль архитектора и AI-скиллы.
Развилки, которые встречаются на каждом новом проекте. По каждой — отдельная статья с чек-листом, критериями выбора, типовыми ошибками.
Статьи раздела
- Монолит, модульный монолит или микросервисы — чек-лист «6 баллов» на старте проекта, сравнение трёх вариантов на сквозном кейсе маркетплейса, сценарии перехода между ними без переписывания.
- PostgreSQL или MongoDB: как принять решение — десять критериев выбора реляционной vs документной БД, типичные антипаттерны (Mongo «потому что NoSQL модно», PG «потому что привычно»), сценарии где обе БД работают в одном сервисе.
- PostgreSQL или ClickHouse: когда добавлять OLAP — восемь критериев и чек-лист: где граница «аналитика в PG ещё ок» и когда пора заводить второе хранилище.
- Поиск: PostgreSQL FTS или Elasticsearch — что умеют tsvector и pg_trgm, где их потолок и когда нужен полноценный поисковый движок.
- Файлы: в базе данных или в object storage — граница по размеру и трафику, двухфазная загрузка и целостность «БД + S3».
- Между сервисами: синхронный вызов или события — критерии выбора на каждое взаимодействие, синхронная сага и RPC поверх Kafka как антипаттерны.
- Веб-стек: Spring MVC, WebFlux или виртуальные потоки — что Loom закрыл из аргументов WebFlux и где reactive всё ещё оправдан.
- ADR: как фиксировать архитектурные решения — формат, статусы, когда писать; итог каждой развилки выше стоит записи.
- Что делает архитектор — и какие задачи закрывают AI-скиллы — семь обязанностей роли и какие ucp-скиллы автоматизируют каждую.
Связанное
- Use Case Pattern — методология, переживает каждый из этих режимов без переписывания.
- Раздел про PostgreSQL — детали ACID, репликации, шардинга.
- Раздел про MongoDB — детали read/write concerns, replica set, sharded cluster.
- Модель C4 — как описывать систему после того, как архитектурный выбор сделан.
- AMQP vs Kafka — выбор брокера, если развилка sync/async решилась в пользу событий.