Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Критерии выбора

Законы архитектуры

  • Everything in software architecture is a trade-off. Любое решение является компромиссом.
    • Нет плохих решений - есть цели и контекст бизнеса (пример: сделать самолет военный, гражданский)
  • Вопрос “почему” является важнее вопроса “как
    • Библиотеки и фреймворки - детали реализации, которые должны быть скрыты.
  • Закон Конвея — «Организации проектируют системы, которые копируют структуру коммуникаций в этой организации»

Критерии

  • Сложность
    • Обоснована ли сложность архитектуры для вашего домена?
    • И наоборот, не слишком ли стиль прост для вашего домена? В этом случае вы рискуете получить систему с нераспознаваемой структурой, так как архитектура не позволит правильно управлять зависимостями.
    • Гибкое тех решение должно быть открытым и усточивым для будущих изменений, но сбалансированное и без overenginering
  • Асинхронный обмен сообщениями и итоговая согласованность
    • Асинхронный обмен сообщениями может использоваться для разделения служб и повысить надежность (так как сообщения могут отсылаться повторно) и масштабируемость.
    • Но он также усложняет работу с итоговой согласованностью и может приводить к дублированию сообщений.
  • Взаимодействие между сервисами
    • Так как приложение можно разбить на отдельные сервисами, есть риск, что обмен данными между службами приведет к неприемлемому уровню задержек или перегрузке сети (например, в архитектуре микрослужб).
  • Управляемость
    • Насколько тяжело управлять приложением, выполнять мониторинг, развертывать обновления и т. д.?
  • Слабая связность, сильная целостность
    • Ни одну из текущих ИС не нужно будет дорабатывать под новое подключение ИС к шине сообщений

TODO объединить с атрибутами качества ?

Арх решение

  • Компромис бизнес проблем, целей и тех решения с учетом дальнейшего развития
  • Анализ вариантов
  • Порядок (пирамида) проработки архитектуры решения
    1. Функциональная(use case, ПЗ, БТ)
    2. Информационная(модель данных, предметная область, сущность, связи)
    3. Прикладная(взаимодействия компонентов)
    4. Интеграционная(РИПВ)
    5. Технологическая(инфраструктура, ИБ)