Рубрики
Uncategorized

Итеративная архитектура программного обеспечения

Долгое время я хотел написать об этой теме, но, честно говоря, структурирует, как я работаю F … с меткой архитектуры, Agile, DevOps.

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

Я думаю, что ответы были довольно интересными (это займет несколько минут, чтобы посмотреть на них, полностью рекомендуется!) И мне очень понравилось обсуждение в этой теме.

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

Причина итерации вашей программной архитектуры

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

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

Самые заметные требования, когда говорят о архитектуре программного обеспечения Перекрестные функциональные требования и бюджет . Или определяя его по-другому: Как архитектура собирается работать и сколько денег я собираюсь потратить на него.

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

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

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

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

Что такое конкурентное преимущество, и мы увидим, почему оптимизирует процесс понимания, определения, создания и улучшения вашей архитектуры.

Какие требования?

Но сначала нам нужно поговорить о требованиях.

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

Есть три основных направления для рассмотрения, когда вы решите разработать архитектуру:

Область бизнеса (то, что)

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

Разрешает ли моя архитектура бизнес-функциональность?

Если ваша архитектура на самом деле не выполняет какое-либо деловое дело, это просто необычное изображение.

Моя архитектура напоминает мой нынешний бизнес?

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

Техническая зона (как)

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

Ведет ли моя система, как и ожидалось?

Обычно вы ответите Да Если ваш бизнес не нужно понимать, как система ведет себя, чтобы удовлетворить бизнес-требования.

Моя система наблюдается?

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

Моя система утилизируется?

Легко построить, тестировать и развернуть?

Организационная область (Тот, кого)

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

Моя архитектура представляет, как команда должны работать вместе?

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

Уполномочивает ли архитектура доверия к командам?

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

Итализация в архитектуре

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

  • Итерация доставки
  • Обзор BluePrint.
  • Обзор требований

Итерация доставки

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

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

Обзор BluePrint.

Таким образом, у нас есть план архитектуры, которую мы хотели бы. Идеальная архитектура, поэтому нам нужно проверить Chunn между нашей нынешней архитектурой и планшетом ( Как ).

Это также полезно убедиться, что план возможен и выполняет бизнес-требования. Это можно рассматривать как шаг рефакторов для вашей архитектуры ( То, что ).

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

Обзор требований

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

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

Резюме

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

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

Большое спасибо за чтение! Ищете обратную связь и опыт!

Оригинал: «https://dev.to/kmruiz/iterative-software-architecture-1hbj»