Конференция GoToCon прошла 25-26.09.2014 в Копенгагене. Это - одна из серии таких конференций и я решил съездить на нее, чтобы послушать взгляд на тренды отрасли, посмотреть на само мероприятие, а еще - послушать выступление Мартина Фаулера. Все удалось, включая интересное представление о текущих трендах. Нельзя сказать, чтобы оно было для меня принципиально новым, однако оно получилось достаточно сфокусированным. И во многом оно перекликается с тем, как тренды представляет Microsoft на своих конференциях. Просто Microsoft накладывает на них акценты с учетом возможностей своих продуктов, а на GoToCon представлен весь спектр.
Основным трендом сейчас является практическое изменение парадигмы в реализации крупных проектов - переход к мелокозернистой, мозаичной архитектуре. Термины тут употребляются различные, основное - мелкосервисная, однако это не отражает изменения в полном объеме. Надо отметить, что сам тренд идет давно, однако цельной целевой картины архитектуры - не представлено, она еще формируется, а имеющиеся представления носят частный характер. Это связано с тем, что новые решения вызваны архитектурными конструкциями, выработанными на основе массовых публичных web-проектов, каждый из которых носит относительно уникальный характер в смысле набора требований. А еще масштабирование многих из них происходило в условиях достаточно жесткого временного прессинга, что неизбежно наложило свой отпечаток на сами конструкции. Так что нельзя сказать, что здесь получена идеальная конструкция.
Отличительной особенностью этих решений является переход к распределенной реализации решения как распределенной совокупности многих сервисов, каждый из которых самостоятельно решает задачу сохранения данных и собственной стабильной работы, в том числе с выносом отдельных компонент в различные (не одно!) публичные облака. И при этом необходимо обеспечить консистентность и стабильность работы в пределах системы в целом, несмотря на происходящие сбои отдельных частей и без системы распределенных транзакций, которые являются недопустимо тяжелыми для таких решений. Это требует существенного изменения подходов проектирования, которые, все-таки рассматривают стабильно-функционирующий комплекс, вынося задачи восстановления при сбоях на технический уровень.
Надо сказать, что тут нет каких-то существенно новых принципов, они как раз известны давно. Это message-driven архитектура, основанная на принципиально асинхронном взаимодействии. Это event sourcing, который предлагает переход от состояний объектов к логам событий. Кстати, про event sourcing на конференции рассказывал его автор, Greg Young. Это immutability и функциональное программирование.
Фишка в том, что эти подходы многими рассматриваются как технические приемы, а не как архитектурные концепции для проектирования современных систем. Возьмем тот же event sourcing. Лог событий по сути фиксирует локальное время, то, что в нем есть - произошло и отражено в системе. Если мы переходим к распределенной системе, то получается, что вместо единого времени в системе возникает множество локальных времен. А сбой, авария в некотором сервисе означает откат его времени в точку восстановления, несколько последних операций могут пропасть, в то время как в других сервисах они зафиксированы И необходимо в процессе восстановления автоматически привести систему целиком в консистентное состояние, как правило - за счет повторного наката событий из лога входных запросов от пользователей или внешнего мира, которые представляют собой "входящее время" системы. Эта картинка дает хороший ключ к проектированию устойчивых распределенных систем.
При чем, как видно из примера, изменение концепции меняет не только конструкцию системы - оно меняет конструкцию обеспечения надежности и доступности системы при сбоях. Точно так же может существенно измениться подход к тестированию - вместо традиционных stubs and mocks, которые становятся сильно затратными при большом количестве сервисов, может применяться быстрый подъем тестового окружения средствами виртуализации.
И, собственно, в докладах конференции было хорошее рассмотрение с кейсами ряда таких концепций. Но не только как учебный материал, а в рамках конкретных проектов. Потому что появляются фреймворки, которые в этих концепциях заложены: язык Swift для iOS, Akka Streams, Elixir и другие. При этом большинство таких проектов - с открытым исходным кодом, open source, хотя лицензирование для промышленных серверов при этом может быть различным. Важно, что это дает возможность доработать фреймворк - совсем не лишнюю при использовании новых языков и фреймворков в своих проектах.
Вообще, это текущий тренд - переход от развития платформ вендорами к развитию открытыми сообществами. Которому следуют и вендоры тоже - в планах Microsoft выложить в open source коды компилятора C# (об этом было в докладе Mads Torgersen). Соответственно, и в докладах переход от презентаций своего продукта к презентациям своего открытого проекта. При этом проекты рассматриваются как возможности, as facility и основу презентации составляют не реализованные фичи, а возможности, которые ты получаешь используя этот проект и развивая его. Понятно, что эти возможности обеспечиваются фичами проекта, но заход идет именно от возможностей.
Что касается новой архитектуры, то сейчас сформулирована задача совместного построения новой архитектуры - в этом же тренде, силами сообщества, а не каким-то единым центром - The Reactive Manifesto (http://reactivemanifesto.org)
Отметим, что достигнутый рост технических возможностей, предоставляемых отдельными высокопроизводительными решениями (in-memory database, кластеры на дешевом типовом железе и так далее), превосходит достигаемые сейчас в дорогом сегменте решений, используемых в традиционной enterprise-разработке с гораздо более сложными проектными решениями. И теперь стоит задача научиться использовать все эти возможности не только в рамках новых отдельно стоящих проектов, но и в условиях эволюционной трансформации ИТ-ландшафта предприятий, обремененного большим количеством legacy-систем. Правда, у некоторых крупных вендоров тут есть асимметричный ответ в виде разработки собственной платформы с учетом новых технологических принципов, как, например, поступает SAP с платформой HANA, но это - отдельная тема, которая на конференции не затрагивалась. А вот enterprise-трек на конференции во многом был посвящен переходу к web-приложениям и мобильной разработке, которая на этом поле является новой.
В заключении несколько слов про организацию конференции. На ней было пять тематических треков, на каждый из которых был отдельный отбор докладов, представляющих современные тренды в этом направлении. Отбор был удачным, и в докладах развитие трендов было представлено в виде практических кейсов, которые бы способствовали изменению понимания у участников, ранее не задумавшихся о таких изменениях. Да и по тем трендам, которые я ранее видел, изменения представали гораздо более выпукло. Так что конференция скомпонована весьма качественно. Слоты докладов - большие, по 50 минут, и получасовые перерывы между ними, в течении которых участники активно общались. И в первый день был ужин участников, тоже предназначенный для общения. Но я не могу сказать, что уровень существенно выше, чем у российских конференций - просто у нас не столь тщательный отбор компенсируется большим количеством слотов и возможностью перехода внутри доклада на другой трек. На GoToCon выходить из зала во время доклада - не принято совершенно, а компоновка залов была такова, что делать это получалось только мимо докладчика, а не сзади - что не слишком приятно.
И про выступления Мартина Фаулера. Была панель с его участием и пленарный доклад в соавторстве. И они меня разочаровали, потому что обращены не в будущее, а в прошлое. Это тема о том, что Agile, с которым были связаны определенные надежды развития и ценности, послужив определенное время локомотивом развития, сейчас превратился в рекламный buzzword. И в докладах было напоминание о заложенных идеях. Что звучит как обращение к традициям, в общем-то не уместное для развивающейся отрасли, какой является ИТ. Хотя сами идеи и ценности безусловно правильно, я их поддерживаю.
Зато первый день закрывал очень креативный доклад Andrew Sorensen про Live Coding, иллюстрирующий идею о том, что при живом кодировании изменение кода отрабатывается немедленно. Программа играла музыку, Андрей ее непрерывно дописывал, и музыка немедленно изменялась. Потом он перешел к таким же действиям над программой, рисующей изображения - и они тоже менялись как фон к редактируемому тексту. А потом - к большому интерактивному проекту виртуальной реальности, построенной на тех же подходах. В общем, получилось впечатляющее шоу кодирования, действительно в реальном времени, в очень высокой динамикой.
На этой позитивной ноте я закончу свой отчет. Еще отмечу, что воспользовавшись случаем посмотрел Копенгаген, приехав заранее и оставшись на выходные, рассказ с фотками можно посмотреть у меня в ЖЖ
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.