К основному содержимому
#Architecture

Minimum Viable Architecture • Randy Shoup • YOW! 2022 (Рубрика Architecture)

#Architecture #SoftwareArchitecture #SystemEngineering #DistributedSystems #SystemDesign #SystemThinking #Software

Очередное крутое выступление от Randy Shoup, VP Engineering & Chief Architect at eBay. Предыдущее его выступление "Improving Software Flow", про которое я рассказывал раньше, дало мне идеи для одного из своих докладов, что будет осенью:) В этом докладе автор рассказывал про то, что начинать стоит с MVA (Minimum Viable Architecture), которая похожа по концепту на MVP (Minimum Viable Product). Свой рассказ он начал с истории про раннюю архитектуру eBay и Amazon, которые эволюционировали со временем. Point был в том, что если бы эти компании начали с более сложной архитектуры, то может бы мы и не знали о них - они бы просто проиграли в конкурентной борьбе тем, кто свои MVP делал бы на MVA:)

Дальше был рассказ про виды архитектуры, что матчатся с жизненным циклом организации starting -> scaling -> optimizing 0) "Prototype" architecture, что нужна на этапе идеи (еще до описанных выше этапов) - круто, если тут можно обойтись совсем без технологий:) 1) "Just enough architecture" для быстрых итераций на стартовом этапе. Здесь нам пригодятся монолиты на той технологии, что популярны и легки в написании кода. Зачастую здесь удобнее покупать готовые коробки, чем писать их самим. На этом же этапе хорошо сразу делать модульный монолит, использовать CI/CD практики, TBD и feature toggles 2) "Scalable architecture" - до этого этапа по оценке Ренди доходит только 1% приложений. И начинает он с того, а когда же приходит пора для репроектирования (падает velocity, надо релизить часть daployments отдельно). Здесь наступает время stream-aligned teams из Team Topologies, также надо менять технологии на более производительные и использовать активнее асинхронность. Также стоит разделять системы по доменам. Часто тут появляются микросервисы. Классно, что тут Ренди разбирает вопросы инкрементальных миграций со старых систем на новые, используя сквозные вертикальные слайсы. 3) "Optimizing" - здесь команд становится меньше и основная цель в стабилизации архитектуры и консолидации отдельных частей системы, чтобы их эксплуатация была проще.

#SoftwareArchitecture #Architecture #SystemEngineering #DistributedSystems #SystemDesign #SystemThinking #Software