Главное правило принятия архитектурных решений
Когда-то давно в одной из книжек я прочитал такую фразу: "Defer decisions until the last responsible moment". Не то чтобы я сразу понял и проникся, но со временем, этот принцип стал важной частью моих правил работы.
Его популяризировали Mary и Tom Poppendieck в книге Lean Software Development: An Agile Toolkit. Суть принципа в том, что необратимые или дорогие в изменении решения стоит принимать не "как можно раньше", а настолько поздно, насколько это безопасно, то есть когда дальнейшее откладывание уже начнет закрывать важные альтернативы.
В архитектуре это обычно формулируют примерно так:
> Delay architectural decisions until the last responsible moment
Важно именно responsible, а не possible. То есть это не "тянуть до последнего", а сохранять пространство вариантов, пока появляется новая информация.
Приведу пример. Когда Хекслет только стартовал и мы запустили практику в браузере, то на обслуживание этой системы уходил один сервер. Со временем количество студентов росло и нагрузка на него сильно выросла. Причем речь идет не о просмотрах страниц сайта, одна практика это полноценный контейнер с кучей сервисов, терминалами, самим редактором и запуском практик, по ресурсам это очень много. Но на тот момент мы не до конца понимали, как лучше распилить эту систему и каждый раз когда упирались ограничения, то просто переходили на все более мощный сервер. И только спустя несколько лет эксплуатации этой системы, мы наконец-то окончательно поняли как лучше ее развивать с учетом большого количества очень специфичных проблем для такой задачи.
Мы могли начать строить распределенную систему гораздо раньше. Технически для этого уже были причины. Но у нас еще не было знаний, необходимых для хорошего решения. Более мощный сервер покупали нам не только производительность, но и время на то, чтобы понять систему.
Вообще тема проектирования красной линией идет через все мои публикации, но я все равно получался сапожник без сапог, потому что занимаюсь образованием и по проектированию систем у меня не было никаких материалов, только по архитектуре кода. Давно собирался это исправить и наконец-то это произошло, я в соавторстве с очень крутым человеком из большой известной международной компании подготовил масштабный курс по системному дизайну. Гляньте программу, думаю вам понравится. Ближайший запуск 21 сентября, сама программа идет 4 месяца.
Telegram | YouTube | AI Клуб | Внедрение AI
Post #516
6K