Анализ компромиссов
Тема дорожной карты · Software Architecture
Анализ компромиссов — это ключевой навык для архитектора, который позволяет оптимизировать атрибуты качества, такие как производительность, надежность и масштабируемость, и одновременно понимать, что мы теряем в процессе. Этот процесс важен для принятия обоснованных решений, которые улучшают архитектуру системы. Один из наиболее эффективных методов анализа — это метод ATAM (Architecture Tradeoff Analysis Method), разработанный SEI (Software Engineering Institute). Этот метод позволяет оценивать архитектурные решения относительно различных сценариев использования атрибутов качества, что делает будущие обсуждения более конструктивными и менее рекурсивными.
Как это работает
Для каждого крупного архитектурного решения важно перечислить 2-3 альтернативы. Затем для каждой из этих альтернатив следует оценить её производительность относительно топ-3-5 сценариев атрибутов качества. Например, можно оценить производительность в контексте 'p95 latency под 200ms', 'горизонтальное масштабирование до 100 инстансов', 'восстановление от любого single-node-отказа за <60s'. После этого можно выбрать альтернативу, которая лучше всего соответствует приоритетным атрибутам качества. Задокументированный анализ компромиссов, выполненный в формате ADR (Architecture Decision Record), позволяет будущим читателям оценить, действует ли выбранный компромисс до сих пор или требует пересмотра.
Когда применять
Анализ компромиссов следует применять для принятия высокоставочных решений, таких как выбор базы данных, стратегии облачного региона, решение между монолитной архитектурой и микросервисами, а также выбор системы сообщений. Вместе с тем, для низкоставочных решений, где стоимость анализа превышает стоимость ошибки, можно обойтись без проведения формального анализа компромиссов.
Типичные ошибки
- Нет задокументированных альтернатив — если в документации указан только выбранный вариант, будущие читатели не смогут понять, какие альтернативы были отвергнуты и почему. Это может привести к повторению тех же ошибок в будущем.
- Атрибуты качества как буллет-пойнты — без конкретных сценариев оценка основана на ощущениях, что может привести к субъективным и необъективным решениям.
- Анализ компромиссов без follow-up — если выбранная альтернатива оказалась неверной, но система никогда не пересматривает свои решения, это может привести к накоплению ошибок. Задокументированные решения требуют регулярного пересмотра и оценки.