
Об архитектуре для разработчиков (by Simon Brown)

Микросервисы, архитектура, devops и agile
Провел очередной тренинг по DevOps. Ниже представлено разделение обязанностей между сопровождением и остальной организацией глазами участников. Это — реальность, это — то, как сейчас функционируют их компании.
Вертикальная черта символизирует барьер в передаче информации, знаний и артефактов. Один из способов повысить эффективность организации — размыть эту черту.
Системный подход в основе DevOps говорит о том, что локальная оптимизация может привести к глобальной деградации. Поэтому, планируя изменения, мы должны смотреть на организацию как целостную систему, не упуская из внимания стратегическое планирование, маркетинг и продажи, административные функции, планирование, работу с требованиями и дизайном, разработку, поставку, эксплуатацию, поддержку и т.д.
У архитектуры множество определений. Одно из наиболее емких — представление о компонентах системы и их взаимосвязях между собой. В качестве компонентов могут выступать как достаточно крупные куски системы, например, интернет-банк, мобильный банк, смс-банк, процессинг, так и более мелкие, — компонент по работе с карточными лимитами, модуль конвертации валют, компонент уведомлений.
Разработчикам, явно или неявно, приходится проводить анализ архитектуры для того, чтобы понять, в каком месте системы необходимо добавить новую функциональность, с чем будем взаимодействовать новый компонент или на работу каких компонентов может повлиять тот, в который мы вынуждены внести изменения.
Водопадный подход максимально пытался обеспечить целостность архитектуры за счет BDUF/BRUF (Big Design Upfront/Big Requirement Upfront). Это были два грандиозных по своим масштабам этапа — сбор требований и проектирование, плавно перетекающее в детальный дизайн. Выхлопом этапов были железобетонные требования и нерушимый, крепкий как скала дизайн.
В Agile все несколько иначе — мы работаем короткими итерациями, каждая из которых включает в себя и уточнение требований и дизайн и тестирование. BDUF/BRUF не подходит ни под каким углом.
Как же при таком подходе обеспечить целостность архитектуры системы?