Принципы, которые должен знать архитектор ПО
97 принципов из одноимённой книги-сборника — сжатая мудрость десятков практикующих архитекторов. От коммуникации до технического долга.
Бизнес и коммуникация
- Не ставьте своё резюме выше интересов клиента. Технологии ради технологий — предательство доверия.
- Возможно, ваша главная проблема не в технологиях. Люди, процессы, бюджет — часто важнее кода.
- Общение — король, ясность и лидерство — его верные слуги. Без коммуникации архитектура мертва.
- Вы ведёте переговоры чаще, чем вам кажется. Каждое согласование — переговоры.
- Всем заправляет бизнес. Технические решения обслуживают бизнес-цели.
- Подготовьте убедительное экономическое обоснование. Без цифр ваше решение — мнение.
Простота и сложность
- Снижайте неотъемлемую сложность, устраняйте второстепенную. Боритесь с тем, что создано вами.
- Простота лучше универсальности. YAGNI: вам не понадобится.
- Простое должно быть простым. Не усложняйте простые вещи ради «архитектурной чистоты».
- Не мудрствуйте. Сложность — не признак мастерства.
- Лучшее — враг хорошего. Не стремитесь к идеальной архитектуре.
- Масштаб — враг успеха. Растущая система требует растущей дисциплины.
- Не создавайте решения «на перспективу». Решайте сегодняшние проблемы.
Проектирование и код
- Производительность приложения определяется его архитектурой. Не оптимизациями постфактум.
- Создание архитектуры — искусство баланса. Компромиссы неизбежны.
- Архитектурные компромиссы — осознанный выбор между противоречивыми требованиями.
- Приготовьтесь выбрать два из трёх. Быстро, дёшево, качественно — выберите два.
- Одна строка рабочего кода стоит 500 строк спецификации. Код — истина.
- Программирование — часть процесса проектирования. Архитектор, не пишущий код, теряет связь с реальностью.
- Архитектор должен быть практиком. Иначе его решения — фантазии.
- Архитектор — прежде всего разработчик. Не должность, а роль.
- Проектируйте только то, что можете запрограммировать. Абстракции без реализации опасны.
- Начните с ходячего скелета. Работающий прототип лучше идеальной схемы.
- Лучшие программы не строят — их выращивают. Архитектура эволюционирует.
Требования и предметная область
- Ищите истинный смысл требований. За каждым требованием — потребность.
- Разберитесь в предметной области. Без доменных знаний архитектура оторвана от жизни.
- Изучите профессиональный жаргон. Ubiquitous language — общий язык с заказчиком.
- Чётко определённые задачи решаются качественно. Размытые требования — размытый результат.
- Сомневайтесь в допущениях — особенно в собственных. Ваши убеждения — главный источник ошибок.
- Когда видите единственное решение — спросите других. Единственность — признак неполноты анализа.
- Правила диктует контекст. Универсальных решений не существует.
Данные и инфраструктура
- В основе всего — данные. Код меняется, данные остаются.
- База данных как Крепость. Защищайте целостность данных.
- Управляйте не только кодом, но и данными. Схема, миграции, версионирование.
- Архитектор должен разбираться в оборудовании. Железо определяет ограничения.
- Выбирайте инфраструктуры, хорошо сочетающиеся с другими. Интеграция — ключ к масштабированию.
- Небоскрёбы не масштабируются. Монолитная архитектура имеет пределы.
- Обеспечьте непрерывную интеграцию. CI — не опция, а необходимость.
Качество и технический долг
- Сбои неизбежны. Проектируйте устойчивость, а не отсутствие сбоев.
- Используйте количественные критерии. Без метрик нет управления качеством.
- Думать о производительности никогда не рано. Поздняя оптимизация — переписывание.
- Не забывайте о производительности. Но не оптимизируйте преждевременно.
- Проверяйте решения на прочность по ключевым характеристикам. Тестируйте нефункциональные требования.
- Расплатитесь по техническим кредитам. Долг растёт с процентами.
- «Срезание углов» сейчас обойдётся слишком дорого потом.
- Уделяйте пристальное внимание поддержке и сопровождению. Система живёт дольше, чем пишется.
- Ваша система станет унаследованной — учитывайте это при проектировании.
Люди и команда
- Предоставьте разработчикам независимость. Микроменеджмент убивает архитектуру.
- Поддерживайте разработчиков. Архитектор — не контролёр, а помощник.
- Не контролируйте — наблюдайте. Дайте команде свободу в рамках ограничений.
- «Я» в архитектуре не существует. Архитектура — продукт команды.
- Делитесь знаниями и опытом. Архитектор-одиночка — бутылочное горлышко.
- Найдите и удерживайте энтузиастов. Один увлечённый стоит десятерых равнодушных.
- Ответственное руководство важнее внешнего впечатления.
- Отвечайте за свои решения.
- У программной архитектуры есть этические аспекты.
Мышление архитектора
- Встаньте! Меняйте перспективу, смотрите на систему с разных точек.
- Посмотрите с высоты 300 метров. Детали замыливают картину.
- Руководствуйтесь неопределённостью. Планируйте для неизвестного.
- Пробуйте, прежде чем сделать выбор. Прототипируйте архитектурные решения.
- Время меняет всё. Сегодняшнее правильное решение — завтрашний антипаттерн.
- Не спешите решать задачи. Дайте проблеме «отлежаться».
- Записывайте свои обоснования. Почему принято именно это решение — важно.
- Осознавайте последствия изменений. Взмах крыла бабочки в архитектуре.
- Освойте новый язык. Новый язык — новый способ мышления.
- Учитесь у архитекторов зданий. Физические ограничения дисциплинируют.
- Боритесь с повторениями. DRY — на уровне архитектуры.
- Добро пожаловать в реальный мир. Теория и практика — разные вещи.
- Остерегайтесь «хороших идей». Не каждая идея должна быть реализована.
- Всё будет не так, как задумано. Готовьтесь к изменениям.
Антипаттерны
- Не увлекайтесь архитектурными метафорами. «Система как живой организм» — красиво, но бесполезно.
- Патология шаблонов. Шаблон ради шаблона — вред.
- Решений на все случаи жизни не существует. Silver bullet нет.
- Сделать наспех и сбежать — преступление. Передача непродуманной архитектуры — саботаж.
- «Архитектор ПО» пишется со строчной буквы. Не культивируйте эго.
- Неоднородность побеждает. Гомогенные системы — миф.
- Проблемы могут быть больше, чем их отражение в зеркале. То, что вы видите — не вся картина.
- Повторное использование зависит не только от архитектуры. Культура и процессы важнее.
- Бизнес и недовольный архитектор. Если архитектор недоволен — он строит неправильную систему.
- Для пользователя интерфейс — это и есть система. Архитектура не видна пользователю — и это нормально.
Связанные статьи на сайте
- C4 Model: документируем архитектуру за 4 шага
- Модульный монолит или микросервисы: спектр решений
- ADR: как вести архитектурные решения
- Справочник архитектурных паттернов ИТ-систем
- Архитектурные роли в ИТ
Что дальше
- Кеширование: паттерны, стратегии, реализации — как архитектурные принципы применяются в кешировании: инвалидация, TTL, Cache-Aside
Связанные статьи: Архитектурные роли в ИТ: кому какие принципы важнее