Впечатления от Software Architecture Conference 2019 в Берлине (part I)
В середине июля я анонсировал посещение конференции OReilly по архитектуре программного обеспечения. И вот в начале ноября я посетил это мероприятие и готов поделиться впечатлениями.
Дни перед конференцией
Полет на конференцию не задался с самого начала — мы с задержкой погрузились 3 ноября в Boeing 737 в Шереметьево. Как только все расселись, нас попросили встать и выйти. Через 2 часа мы улетали на сменном самолете той же марки и с той же командой:)
Долетели до Берлина благополучно и сели. Дальше был квест, в котором мы пытались найти водителя, вызванного по Uber. Причем искали красный Hyundai, как было указано в приложении, а надо было искать черный Mercedes, который приехал в итоге:)
Заселение в отдель прошло успешно, причем нас вертикально расшардировали по разным этажам, что никак не повлияло на наше желание пойти прогуляться по городу. Правда, в Берлине сейчас темнеет рано, поэтому мы гуляли уже в темноте:) Необработанные фотографии, можно посмотреть в моих facebook постах (1, 2). Дальше мы встретили друзей, которые переехали в Берлин, и немного посидели употребив некоторое количество крафтового пива.
4 ноября я понял, что счастье — это возможность выспаться после воскресного вечера, а не бежать рано утром на тренинги от маститых бородочей в здании City Cube. А все дело в том, что мы с Антоном Костериным решили в отличие от наших коллег записаться на краткие тьюториалы, проходящие 5 ноября, а им предстояло посетить двухдневный тренинг:)
В итоге, мы с Антоном после того, как пришли в себя, отправились гулять по Берлину. Погода немного подкачала и вышли мы под надкрапывающий дождик, который приближал берлинскую погоду к питерской:)
Из самого интересного в этот день можно выделить разве что:
- прогулку по центру Берлину
- посещение уютного зоопарка с битвой кергуру, задумчивой гориллой и дургими животными, которые были засняты мной, но все еще не обработаны:)
- а дальше был гастропаб Gasthaus Krombach Berlin с отличной едой и хорошим пивом — определенно рекомендую посетить
- ну и закончилось все прогулкой домой и околорекордными 30 тысячами шагов на моих умных часах
Впереди нас ждал первый день конференции.
Мой первый день
Вообще, конференция проходила в современном конференц-центре CityCube, который выполнен в индустриальном стиле из стекла и бетона, который даже не требует дополнительной отделки.


В день тьюториалов было всего 2 минитренинга по 3.5 часа, разделеленных обедом. До обеда я выбрал посещение
Event storming for domain-driven design modeling
Данный тренинг был довольно странным. Меня смутили несколько моментов:
- аудитория тренинга была 200 человек и на них приходилось всего 2 фасилитатора
- в такой конфигурации мы пытались провести big picture event storming воркшоп на тему покупки билетов в кино онлайн
- минимум теории и максимум практики, но без достаточного внимания помощников — это крайне сомнительный рецепт
- отсутствие экспертов предметной области — если не считать экспертами покупателей билетов:)

В итоге, после того, как тренинг перевалил за экватор, я начал читать книгу “Event Storming” автора этого подхода Alberto Brandolini. Книга определенно хороша и гораздо точнее и полнее раскрывает подход. Автор довольно тонко описывает проблематику разработки ПО и как event storming помогает в этих ситуациих. Забавно, что книга опубликована на leanpub уже несколько лет, но до сих пор не окончена.
В общем, спасибо ведущим воркшопа, что показали как event storming работает на практике, хотя скорее в песочнице, где не было совков и формочек и куличики приходилось лепить руками:) Но основное, что я вынес отсюда — это книга, которую я в тот же вечером прочел на треть.
Дальше был обед, который не стоит особого упоминания и дальше наступило время второго тренинга, который назывался
How do I game design: Architecting games to expand your thinking
Этот тренинг мне показлся интересным, т.к. мне всегда нравилась теория игр в общем и конкретные игры в частности. Что тут говорить, если я порядка 7 лет занимался шахматами (сложно назвать частые походы в спортивную школу на тренировки игрой). Состав спикеров был качественным и состоял из сотрудников Secret Lab, университета Тасмании, и фрилансера. Ребята анонсировали рассмотрение вопросов:
- почему игры работают, а также как их анализировать, проектировать и создавать завораживающий опыт
- фреймворк “mechanics-dynamics-aesthetics framework”: почему он хорош и для чего его использовать
- как понять что происходит в игре и как ее модифицировать
- как применять все эти знания вне игр, а именно в командной работе, работе над проектами или архитектурой
В общем, тренинг был многообещающим:) И та часть, где излагалась теория мне зашла, а вот играть в настолки во время тренига особого желания не было. Особенно учитывая то, что в них сложно играть в том случае, если тебе не досталось стола из-за переполненности аудитории.
В общем, этот тренинг для меня завершился предварительно, но он не оставил ощущение провально потраченного времени:) И я решил, что почитаю книги авторов на досуге.
Дальше была прогулка по вечернему Берлину и отход ко сну, чтобы свежим прийти на второй день.
Второй день
Второй день для меня начался как обычно с завтрака в отеле Novum Hotel Kronprinz Berlin, отель довольно старый, но уютный и заполненный в основном аборигенами, а не туристами:) Дальше 20 минут прогулки и мы снова в CityCube, который встретил нас толпой людей, для которых конференция началась именно со среды.
В любом случае я отправился на доклад про автономные API
Autonomous APIs: Navigation in complex landscapes
Пожалуй рассказ про этот доклад надо начать с разбора название, а оно достаточно хайповое. Кто не слышал про autonomous cars? Вот собственно эту тематику и обыграл автор, указав, что люди на каждом шагу говорят про самодвижущиеся повозки, а сопряжением разных api’шек до сих пор занимаются люди:)
В итоге, Zdenek рассказал про сдвиг парадигмы, который включал следующие шаги:
- customer Spacific API с интеграциями типа one-to-one
- generic APIs с интеграциями one-to-many, где один провайдер обеспечивает много consumer’ов
- harmonized APIs — здесь у нас появляется uber-like посредник, который гармонизирует API провайдеров и предоставляет cosumer’ам единое окн
- autunomy API — автономные API, в которых люди нужны для того, чтобы задать семантику предметной области, а дальше машины разберутся сами
Дальше автор вводит 5 уровней автономности API (как он говорит, что 5 уровней автономности получилось безотносительно того, что есть 5 уровней автономности self driving cars). И эти уровни:
- brittle system
- documented brittle system
- automated system
- decoupled automated system
- autonomous system
Автор хорошо описывает каждый из уровней, их особенности и проблемы. А на сладкое автор показывает демо того, как могла бы выглядеть автономная система где он вводит понятие профиля, в котором концентрируется семантика предметной области, а дальше начинается магия. В общем, подход автора чем-то напоминает семантический веб и онтологии, только чуток упрощенный.
В общем, доклад определенно интересный и полезный. Я его определенно пересмотрю потом (благо в мой билет включены видео записи почти всех выступлений).
После кофе брейка, в котором я употреблял сок, а не кофе, я отправился на следующий доклад про то, как добиться успеха в качестве лидера архитектурной команды
Beyond the technical: Succeed at leading a software architecture team
Неплохой доклад от Maggie Carroll на тему того, как жить главному архитектору. Основная мысль о том, что нам нужны ренновации и интеграция работы остальных. Чтобы все это сделать надо как-то интегрировать интересы всех стейкхолдеров. Для этого стоит начинать имея в уме конечную цель. Мегги приводит свой способ работы со стейкхолдерами, который начинается с составления контактного листа, а дальше он постепенно наполняется содержимым, где появляются позиции стейкхолдеров, список встреч с ними (с каждым по отдельности или в группах), периодичность встреч и их агенда.
Мегги советует определить руководящие принципы enterprise architecture и использовать их в своей повседневной работе, а также во время встреч. Интересно замечание, что влияние можно получить только с ownership. Поэтому Мегги старается расширять свою зону ответственности, чтобы быть полезной, а не просто архитектором в высоком замке:)
Дальше наступил обед, котрый принес с собой очереди и довольно качественную еду:) После обеда пришло время трех keynote докладов. Кстати, меня повеселило, что ведущие keynote сессии: Christopher Guzikowski, Neal Ford не знают слайдов и читают с суфлер экрана, находящегося перед сценой. Причем читают настолько топорно, что, сидя в первом ряду, легко заметить это:) Первым аннонсировали выступление Brian Sletten из Bosatsu Consulting, посвященное современным ml архитектурам
Modern machine learning architectures: Data and hardware and platform, oh my
Честно говоря, в этом докладе нам рассказали много общих слов и мало практической сути. Это стандартный keynote доклад, который без изменения можно было прочитать как год назад, так и в следующем году. В общем, Браян говорил правильные вещи, но ему стоило выйти не в прикиде разработчика (черная футболка и сандали на босу ногу), а в костюме КО.
Next data platform architecture: Distributed data mesh
Дальше на сцену вышла Zhamak Dehghani и рассказала про Data Mesh, которая по мнению экспертов из ThoughtWorks придет на смену озёрам данных:) Доклад был интересным и полезным, но лучше прочитать референсную статью от Zhamak на сайте Мартина Фаулера.
И закрывала keynote сессию Cheryl Hung из CNCF, которая рассказала то, что она обычно расскаывает, а именно про cloud native
The New Norms of Cloud Native
Этот keynote доклад был очень похож на keynote доклад, который я видел в Барселоне на Kubecon EU 2019. Вот ссылка на версию из Барсы
После этого наступил 40-минутный брейк, 5 минут которого потребовалось на то, чтобы выйти из самого большого зала, где проходила keynote сессия.
How do we take architectural decisions in eBay Classifieds Group
Engin Yöyen интересно рассказал о том, как принимаются архитектурные решения. Конечно, он рассказывал с позиции архитектора, который тянет команду к знаниям, но ключевые принципы и практики в eBay Classified Group направлены на самооргонизацию команд. Вот основные ключевые моменты доклада:
- engineers are empowered to lead
- group of architects working across teams, ensuring a scalable platform
- architects are playing supportive role and solving conflicts between different parties
- high level architectural decision requires consensus among teams
- delegation levels
- ADRs to record as well as collaborate on decisions
Ну и напоследок привычное утверждение насчет культуры: “Culture is a reflection of how an organization thinks and acts”. А дальше как от культуры перейти к конкретным людям “Therefore, any improvement starts with empowering each individual”.
Конечно, я не смог в паре абзацев изложить весь этот доклад, но он определенно хорош и стоит того, чтобы я его внимательно пересмотрел.
После этого доклада я с третьего этажа бежал на второй, чтобы в обеденном зале послушать доклад, посвященный DDD и его практическому применению.
7 years of domain-driven design: Tackling complexity in large-scale marketing systems
Vladik Khononov интересно рассказал про то, как компания, изначально работавшая по DDD, запускала 5 разных систем. И главное какие они баги словили в каждой из них, а также какие выводы сделали. В общем, это рассказ с позиции выжившего профессионала, который обладает изрядной долей юмора и готов смеяться над собой. Определенно стоит более внимательно пересмотреть этот доклад, т.к. сходу запомнить расположение граблей не получилось.
После окончания доклада Владика я отправился слушать про опыт финтех компании N26 относительно открытия бизнеса в другой стране
On launching a distributed system to global markets
Это был довольно интересный доклад от Kat Liu, которая раньше работала в N26 и рассказывала про опыт принятия архитектурных решений при запуске бизнеса N26 в США, когда бизнес в Европе уже был отлажен. В принципе, доклад интересн деталями относительно того, как принимались решения переиспользовать ли наработки или делать независимые приложения (мобильные и бекенд). Довольно неплохо описывается как принимать решение (правда, никакого rocket science здесь нет). Но сама вынесенная проблема кажется излишне простой —как настроить аутентификацию пользователей, если у нас два инстанса приложения и мы не должны ходить для каждого пользователя в оба, а ходить за его данными только в тот бекенд, где они лежат. Итоговая общая табличка для хранения хешированных ключей и номеров шардов, где они расположены очень проста, это по сложности даже не consistent hashing и вот это все:)
The end of second day
На этом программа второго дня закончилась и я отправился писать эту статью:) Во второй части будет последний день конфы и выводы относительно того, насколько полезно ездить на такие мероприятия, если и в России неплохо кормят знаниями и устраивают зрелища:)
To be continued …
P.S.
Продолжение здесь
