Архитектурный подход к программированию

Архитектура — это принятие решений там, где появляется сложность. Если программа из 100 строк — архитектура не нужна. Когда система выходит за пределы одного часа работы одного человека — нужна.

Когда нужна архитектура

  • Сложность системы превышает порог понимания одним человеком.
  • Несколько разработчиков работают над общим кодом.
  • Требуется надёжность: восстановление после ошибок, повторные запуски, мониторинг.
  • Требуется развитие: новые фичи, замена компонентов.

Главные архитектурные решения

  1. Организация данных — самое важное. Какие сущности, какие связи, где живут.
  2. Обработка ошибок — как ловятся, логируются, восстанавливаются.
  3. Безопасность — куда складывать секреты, кто к чему имеет доступ.
  4. Именование — одна из сложнейших задач. Названия задают границы понимания.
  5. Связи между модулями — coupling/cohesion.

Принципы (по автору)

  • В архитектуре нет единственно правильного решения — есть набор возможностей.
  • Структура приложения — задел для архитектуры. Хорошая структура → простая архитектура.
  • Типовые архитектуры переносятся из проекта в проект — есть смысл их знать.
  • Изоляция, приватные поля, локальные структуры данных — то, что реально влияет на масштабируемость.

Связь структуры и архитектуры

Структура данных в основании модуля
    ↓
определяет, как модуль шарится между копиями
    ↓
определяет, можно ли размазать на потоки/машины/дата-центры
    ↓
это и есть архитектура

Антипаттерн: «архитектура» из паттернов на ровном месте

Application с 5 пользователями имеет:
- Hexagonal архитектуру с 4 портами
- Event Sourcing
- CQRS
- 12 микросервисов
→ это не архитектура, а cargo cult

🎓 Источники

  • 🎓 [Архитектурный подход к программированию] · 2018-09-25 · YouTube
    • «Архитектурная задача начинается с появлением сложности».
    • «Давать имена — одна из важнейших архитектурных задач».
    • Архитектура = принятие решений: данные, ошибки, безопасность.
  • 🎓 [Основная задача синьора — структура приложения] · 2026-05-16 · YouTube
    • Альтернативная позиция: структурный код не определяет архитектуру; её определяют низкоуровневые характеристики — идемпотентность, состояние, ссылки, локальные структуры данных в модулях.
  • 🎓 [Архитектурные принципы из курса Metarhia] · 2023-12-06 · YouTube
    • В Metarhia: autobinding в неймспейсы, мультипарадигменность, schema-first.

См. также