AWS re:Invent 2024 - Dr. Werner Vogels Keynote (Рубрика Architecture)
Несколько недель назад Dr. Werner Vogels, CTO Amazon, выступил на AWS re:Invent с рассказом о концепции simplexity, к которой он пришел за 20 лет работы в Amazon. Само это слово представляет комбинацию двух слов: complexity и simplicity. По-факту, весь цимес в том, чтобы продукты выглядели просто для клиентов, а вся сложность была за сценой. Ну и дальше Вернер рассказывает про шесть принципов и показывает на примерах из AWS как они применяются на практике. Вот эти шесть принципов:
1) Make flexibility a requirement Единственная постоянная вещь в наашем мире - это изменения, поэтому дизайнить системы надо так, чтобы они были готовы к эволюции технологий, рабочих нагрузок, а также требований пользователей. По-факту, это очень близко с концепциями Continuous Architecture или Evolutionary Architecture. Кстати, обе книги мы разбирали в клубе "Code of Architecture": 1 и 2 соответственно 2) Break complexity into pieces Это стандартный подход "разделяй и властвуй". Вернер предлагает делить крупные и комплексные системы на части поменьше, которые легче понимать, поддерживать, масштабировать и которыми в принципе проще управлять. Но важно их объединять в loosely coupled стиле. А сами компоненты должны быть с high cohesion внутри. Рекомендую на эту тему почитать книгу Джона Остерхута "A philosophy of software design", которую мы тоже уже разбирали 3) Align organization to architecture Здесь Вернер Вогель описывает применение обратного маневра Конвея. По-факту, нам надо подстраивать оргструктуру под желаемую архитектуру, что позволяет командам принять на себя ответственность и владение доменами, а также позволит им работать автономно. Я рассказывал про это уже раньше в своем докладе "Как формировать структуру команд под запросы бизнеса" 4) Use a cell-based architecture design Эта концепция про использование так называемых cells для построения отдельных изолировоанных блоков, которые могут автономно принимать часть нагрузки. Важно, что они достаточно малы, чтобы радиус поражения (blast radius) был не слишком высок, но одновременно не слишком малы, чтобы обслужить максимального размера запрос и получать экономию на масштабе. 5) Design predictable systems Вернер предлагает дизайнить предсказуемые системы, что уменьшает влияние неопределенности и позволяет обеспечить консистентность при эксплатации систем. 6) Automate everything that doesn’t require high degrees of judgment Цель в том, чтобы дефолтом стала автоматизация процессов и исключение human in the loop, а люди привлекались только в моменты, когда требуется принятие решений
По большей части Вернер демонстировал эти принципы на примере AWS S3 (Simple Storage Service), а также на примере Amazon Aurora DSQL
#Architecture #SoftwareArchitecture #SystemDesign #DistributedSystems #Cloud #Management #Leadership