Дискуссия об изменениях архитектуры в инженерии

Я начал писать это с вопроса «Архитектура умерла?», который показался мне несколько кликбейтским, поэтому я подумал, что лучше сместить акцент на что-то более полезное для тех из нас, кто работает в отрасли. Чтобы было ясно, я не думаю, что роль архитектуры в инженерии мертва, но, без сомнения, она значительно изменилась за последние 30 лет.

Моя позиция по этому поводу менялась несколько раз за эти годы, но в конечном итоге я пришел к выводу, что архитектура по-прежнему является полезной дисциплиной, но то, как мы думаем об этом и как она представлена ​​в организации, изменилось.

Мы больше не строим богато украшенные соборы, чтобы команды могли уходить и строить в соответствии со спецификациями. Мы задаем направление, расширяем возможности команд и организуем игровое поле для достижения наилучшего результата.

Была ли архитектура ущербной как дисциплина?

Мой «хороший» ответ на этот вопрос заключается в том, что в архитектуре нет ничего плохого — она соответствовала ограничениям того времени. 30 лет назад решение проблем с программным обеспечением было сложным, дорогим и трудоемким. Было трудно создавать и тестировать вещи быстро, даже аспекты проблемы требовали полных решений, созданных с нуля, и было легко ошибиться.

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

Но, если честно, всегда были проблемы.

Мой «не очень приятный» ответ заключается в том, что, хотя создание программного обеспечения было сложнее во многих отношениях, роль архитектуры родилась из нисходящего, командно-административного подхода и подхода к предварительному планированию. Но хуже всего то, что он поощрял башни из слоновой кости, инженерные производственные линии и привлекал эгоизм… он помещал архитектора в привилегированное уединение и удалял его от фактов и практических вопросов инженерного мира.

Так что, хотя это может и было необходимо, у меня всегда были проблемы. Я бы также сказал, что многие из этих проблем все еще существуют сегодня в некоторых местах, но есть роль архитектуры. Просто это была не та роль.

Почему он изменился?

Темпы технологических изменений за последние 30 лет были невероятными — как в самих технологиях, так и в социотехнических практиках. Некоторые из изменений, которые изменили лицо инженерии, включают следующее:

  • Вычислительная мощность увеличилась и стала доступной, что позволяет значительно сократить время компиляции.
  • Виртуализация, а затем облачные вычисления изменили простоту развертывания изменений
  • Программное обеспечение с открытым исходным кодом позволило массово обмениваться возможностями в кодировании, ускоряя нашу способность создавать новые вещи и решать новые проблемы новыми способами.
  • Интернет оказал несколько воздействий, но именно здесь он ускорил возможность делиться и повторять код и методы.
  • Непрерывная интеграция и автоматическое тестирование означают, что у нас гораздо более быстрые циклы обратной связи при создании, тестировании и развертывании.
  • Гибкие и бережливые практики доставки заставили нас по-другому задуматься о расширении возможностей и потоке

Сочетание этих и многих других факторов означает, что мы можем создавать, изменять и развертывать вещи гораздо более плавно, и мы получаем наилучшие результаты, размещая решения ближе к знаниям.

Это означает, что управление сверху вниз, командование и контроль, а также предварительное планирование гораздо менее необходимы и дают худшие результаты.

Какой должна быть архитектура?

После всего этого вы можете подумать, что архитектура — это ужасное, ненужное зло, которое мы должны полностью искоренить, но я действительно думаю, что у нее есть место… это просто другое место с другим набором поведения.

В наши дни дисциплина сводится не столько к архитектуре собора, сколько к разработке игры. Если бы это был футбол, это было бы больше похоже на согласование правил игры, поле, на котором мы играем, возможно, формирование команды и, возможно, даже небольшое обучение или помощь в более мелких деталях.

Направление

Первый аспект роли — дать направление или установить целевое состояние. Это должны быть не подробные инструкции, а скорее видение того, куда мы должны двигаться. Без путеводного огня будет трудно двигаться в правильном направлении.

Что делает это одним из самых интересных аспектов, так это то, что я вижу роль архитектуры, которую принимают несколько человек на игровом поле. Конечно, может быть корпоративный архитектор, архитектор решений или технический архитектор, который занимается архитектурой, но каждый, кто участвует в разработке, несет ответственность за архитектуру, просто с разным набором ограничений и на разных уровнях точности.

Заборы

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

В Oakbrook мы применяем подход «свобода с заборами» — иногда эти заборы являются жесткими правилами, но иногда они являются рекомендациями. В любом случае эти ограждения нуждаются в планировке и настройке направления — это один из ключевых аспектов архитектуры.

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

Договоренность

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

Мы можем облегчить доставку возможностей с ценностью для клиентов, используя обратный маневр Конвея. Таким образом, архитектор может помочь с тем, как мы организуем команды, чтобы обеспечить наилучшую синергию развития возможностей с созданием ценности для клиентов.

Консультативный

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

С этой целью хорошая архитектурная функция обеспечивает руководство, обучение, советы и активное обучение более широким инженерным усилиям, чтобы помочь им достичь своих целей. Эта поддержка должна быть руководством-слугой — помогать команде устранять когнитивные барьеры и преодолевать технические трудности.

Подведение итогов

В целом роль архитектуры важна и ценна. Это не то, что было и не то, что многие думают. Это должна быть не роль башни из слоновой кости, а роль лидера-слуги, которую принимают многие в организации.