Говорят – такая архитектура, сякая архитектура. Масштабируется, учитывает то, другое. Но мне кажется, чаще всего у архитектуры одно оправдание – любопытство разработчика.

Все мы люди, и хочется попробовать новенького. Интернет и блоги только разогревают интерес. Кажется, что другие строят идеальные архитектуры, а ты — неудачник. Поэтому делается CQRS на очередях с Монгой и микросервисами в Кубернетисе. Рисуются диаграммы с адским числом стрелочек. Начальство ничего не понимает, но вроде бы выглядит солидно. Хорошо, делайте.

Время и сложность расшатывают архитектуры. В начальный момент схема статична, и кажется, что все идет по плану. Но, судя по всему, нарастающая сложность – это базовый закон мира: она прибывает и расшатывает все подряд. Читали книгу “Цель”? Там на примере игры со спичками показано, как ошибка в одном узле завода сказывается на всем производстве. Базовый принцип! Вот и здесь что-то подобное: сложность нарастает и все расшатывает.

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

Половина всех моих действий уходит на то, чтобы преодолеть проблемы “удачных” архитектур. Все они были кем-то составлены, представлены, защищены перед руководством. И вот я иду в базу не прямым путем, а через три микросервиса; пишу экраны кода, когда при ином подходе понадобилась бы строчка.

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

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

Сложность не должна опережать удобство. Как у Кнута: предварительное усложнение душит систему.

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

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