Системная архитектура

Оригинальное название: system architecture

Коротко

Общее устройство программной системы: из каких частей она состоит, за что отвечает каждая, как они обмениваются данными и на чём работают.

Что такое «Системная архитектура»

Архитектура — это решения, которые дорого менять потом. Выбор движка, способ хранения данных, деление на модули, схема интеграций с внешними сервисами, размещение на серверах. Ошибку в вёрстке исправят за час, а переход с одной базы на другую или выделение модуля в отдельный сервис может занять месяцы. Поэтому эти решения стараются принимать осознанно и до начала активной разработки.

Термин не стоит путать с информационной архитектурой. Та описывает, как организован контент для человека: разделы, навигацию, названия. Системная архитектура описывает устройство программы и инфраструктуры.

Какие вопросы она решает

  • Из каких компонентов состоит система и где проходят их границы.
  • Один монолит или несколько отдельных сервисов.
  • Где хранятся данные и кто ими владеет.
  • Как система переживёт рост нагрузки, сбой сервера или внешнего сервиса.
  • Как обеспечивается безопасность и как устроена выкладка.

Пример: схема интернет-магазина

Браузер → CDN (картинки, стили)
        → nginx → PHP-FPM (1С-Битрикс) → MariaDB
                    ├→ Redis (кеш, сессии)
                    ├→ 1С (каталог и остатки, обмен раз в час)
                    ├→ платёжный шлюз (оплата, уведомления)
                    └→ CRM (заявки через вебхук)

Даже такая простая схема отвечает на важные вопросы. Если 1С недоступна, магазин продолжает работать на последних выгруженных остатках. Если CRM не принимает заявки, их нужно сохранять и отправлять повторно. Кеш снимает нагрузку с базы при наплыве посетителей.

Как фиксируют решения

Схему системы удобно рисовать по модели C4: от общего контекста к контейнерам, компонентам и коду. Отдельные решения записывают в коротких документах ADR: что выбрали, какие были варианты и почему отказались от остальных. Через год такой документ объяснит новому разработчику, почему всё устроено именно так, и сэкономит спор о том, не переписать ли всё заново. Проектирование архитектуры — первый этап заказной разработки, от него зависят сроки и стоимость дальнейших работ.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение