Velocity — это конференция, которая посвящена распределённым системам. Её организует издательство O'Reilly, и она проходит трижды в год: один раз в Калифорнии, один раз в Нью-Йорке и один раз в Европе (причём город меняется каждый год).


В 2018 году конференция была в Лондоне с 30 октября по 2 ноября. Главный офис Badoo находится там же, так что у нас с коллегами было сразу два повода съездить на Velocity.


Её устройство оказалось несколько сложнее, чем то, с каким я сталкивался на российских конференциях. Кроме достаточно привычных двух дней докладов тут было еще два дня тренингов, которые можно брать полностью, частично или не брать совсем. Всё вместе это превращается с серьёзный квест по выбору типа нужного билета.


В этом обзоре я расскажу про те доклады и мастер-классы, которые мне запомнились. К некоторым докладам я прикладываю ссылки на дополнительные материалы. Частично это материалы, на которые ссылались авторы, а частично материалы для дальнейшего изучения, которые я нашёл сам.


Общее впечатление от конференции: авторы очень хорошо выступают (а keynote сессии — это целое шоу с представлением спикеров и их выходом на сцену под музыку), но при этом мне попалось мало докладов, которые были бы глубокими именно с технической точки зрения.


Самая "горячая" тема этой конференции — Kubernetes, который упоминается чуть ли не в каждом втором докладе.


Очень хорошо выстроена работа с соцсетями: в официальном twitter-аккаунте во время конференции было очень много оперативных ретвитов с материалами докладов. Это позволяло бегло посмотреть, что происходит в других залах.


Мастер-классы


31 октября был день, когда докладов не было, но происходило шесть или восемь мастер-классов по три часа чистого времени каждый, из которых нужно было выбрать два.


P.S. В оригинале они называются tutorial, но мне кажется правильным перевести их как "мастер-класс".


Chaos Engineering Bootcamp


Ведущая: Ana Medina, инженер в компании Gremlin | Описание


Мастер-класс был посвящён введению в chaos engineering. Ана бегло рассказала, что это такое, какую пользу приносит, продемонстрировала, как его можно использовать, какое ПО может помочь и как начать использовать его в компании.


В целом, это было хорошее введение для начинающих, но мне не очень понравилась практическая часть, которая представляла собой развёртывание демонстрационного web-приложения в кластере из нескольких машин с помощью Kubernetes и прикручивания к нему мониторинга от DataDog. Главная проблема заключалась в том, что мы на это потратили почти половину времени мастер-класса и это было нужно только для того, чтобы 5-10 минут поиграться со скриптами, эмулирующими различные проблемы в кластере, и посмотреть на изменения в графиках.


Мне кажется, что для этого же эффекта достаточно было дать доступ к заранее настроенному DataDog и/или продемонстрировать это всё со сцены, а это время потратить, например, на более подробный обзор и примеры использования того же Chaos Monkey, про который было просто рассказано буквально пару фраз.




Интересное: на этой конференции докладчики достаточно часто упоминали термин "blast radius", который до этого мне не встречался. Им обозначали часть системы, которая оказывается задета при возникновении конкретной проблемы.

Дополнительные материалы:



Building evolutionary infrastructure


Ведущий: Kief Morris, консультант по инфраструктуре и автор книги "Infrastructure as a code" | Описание


Основные тезисы мастер-класса можно свести к двум вещам:


  1. Системы всё время меняются, поэтому нормально, что инфраструктура тоже должна меняться;
  2. Раз инфраструктура меняется, то нужно добиться, чтобы это было просто и безопасно, а добиться этого можно только автоматизацией.

Основная часть его рассказа была посвящена именно автоматизации изменения инфраструктуры, возможным вариантам решения этой проблемы и тестированию изменений. Я не специалист в этой теме, но мне показалось, что он рассказывал очень уверенно и подробно (и очень быстро).


Основной момент, который мне запомнился из этого мастер-класса, — рекомендация максимально выносить различия между средами (продакшен, стейджинг и т.д.) из кода в переменные окружения. Это уменьшит вероятность возникновения ошибок в инфраструктуре при смене среды и сделает её более тестируемой.





Доклады


1 и 2 ноября были дни докладов. Они были разбиты два принципиальных блока: серия из трёх или четырёх коротких keynote докладов, которые шли с утра в один поток (и для них собирался большой зал из двух меньших по размеру) и более длинные тематические доклады в пять потоков, которые шли весь остальной день. В течение дня было несколько больших пауз между докладами, когда можно было погулять по экспо со стендами партнёров конференции.


Evolution of Runtastic Backend


Simon Lasselsberger (Runtastic GmbH) | Описание и слайды


Один из немногих докладов, в которых автор не просто рассказывал, как что-то нужно делать, а показывал детали конкретного проекта и что с ним происходило.


В начале у Runtastic была общая база данных Percona Server и монолит с кодом, обслуживающим мобильные приложения и сайт. Потом они стали писать в Cassandra (не помню, по какой причине именно в неё) часть данных, для которых было достаточно key-value хранилища. Постепенно база пухла, и они добавили MongoDB, в который стали писать данные из большинства сервисов. Со временем они сделали общий уровень, который обслуживает запросы и от web, и от мобильных приложений (что-то вроде нашей апификации, насколько я понял).



Большая часть доклада была посвящена переездам между дата-центрами. Сначала они держали сервера в Hetzner, который через какое-то время посчитали недостаточно стабильным и смигрировали данные в T-Systems. А еще через несколько лет они столкнулись с нехваткой места уже там и переехали еще раз в Linz AG. Самая интересная часть тут — это миграция данных. Они запустили копирование данных, которое длилось несколько месяцев. Они не могли столько ждать, т.к. у них заканчивалось место, и они не могли его добавить, поэтому они сделали в коде fallback, который пытался читать данные из старого дата-центра в случае, если не их не было в новом.


В будущем они планируют разделить данные на несколько отдельных дата-центров (Симон несколько раз говорил, что это нужно для России и Китая) и жестко разделить базы данных по отдельным сервисам (сейчас используется общий пул на все сервисы).


Любопытный подход к проектированию модулей в системе, про который Симон вскользь упоминал: hexagonal architecture.


Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases.

Alistair Cockburn

Дополнительные материалы:



Monitoring custom metrics; or, How I learned to instrument first and ask questions later


Maxime Petazzoni (SignalFx) | Описание и презентация


Рассказ был посвящён сбору метрик, необходимых для понимания работы приложения. Основной посыл заключался в том, что обычных RED-метрик (Rate, Errors, and Duration) совершенно не достаточно, и кроме них нужно сразу собирать и другие, которые помогут понимать, что происходит внутри приложения.


Тезисно автор предлагал собирать каунтеры и таймеры для каких-то важных действий в системе (и обязательно счётчики отказов), строить по ним графики и гистограммы распределения, определить мета-модель для пользовательских метрик (чтобы у разных метрик был один и тот же набор обязательных параметров и одни и те же значения везде называли одинаково).



Словами пересказывать детали достаточно тяжело, проще будет посмотреть подробности и примеры в презентации, ссылка на которую есть на странице доклада на сайте конференции.


Дополнительные материалы:



How serverless changes the IT department


Paul Johnston (Roundabout Labs) | Описание и презентация


Автор представился как CTO и environmentalist, рассказал, что serverless — это не технологическое, а бизнес-решение ("You pay nothing if it's unused"). Потом описал best practices для работы с serverless, какие компетенции нужны для работы с ним и как это влияет на выбор новых сотрудников и работу с уже имеющимися.



Ключевым моментом "влияния на IT-департамент", который я запомил, было смещение необходимых компетенций от просто написания кода к работе с инфраструктурой и её автоматизацией ("More "engineering" than "developing"). Всё остальное было довольно банально (нужно постоянно проводить code review, документировать потоки данных и события, доступные для использования в системе, больше общаться и быстро учиться), но почему-то автор относил их к особенностям именно serverless.



В целом, доклад показался немного неоднозначным. Многие вещи, про которые говорил спикер, можно отнести к любой сложной системе, которая не помещается в голову целиком.


Дополнительные материалы:



Don't panic! How to cope now that you're responsible for production


Euan Finlay (Financial Times) | Описание и презентация


Доклад о том, как разбираться с инцидентами на продакшене, если прямо сейчас что-то идёт не так. Основные тезисы были разбиты на части по времени.


До инцидента:


  • разграничьте алёрты по критичности — возможно, какие-то могут подождать, и с ними не нужно срочно разбираться;
  • заранее подготовьте план для разбора инцидентов и поддерживайте документацию в актуальном состоянии;
  • проводите учения — ломайте что-то и смотрите, что происходит (aka chaos engineering);
  • заведите единое место, куда стекается вся информация о изменениях и проблемах.

Во время инцидента:


  • это нормально, что вы не знаете всего — привлекайте других людей, если это необходимо;
  • заведите единое место для общения людей, работающих над решением инцидента;
  • ищите максимально простое решение, которое вернёт продакшен в рабочее состояние, а не пытайтесь полностью решить проблему.

После инцидента:


  • разберитесь, почему возникла проблема и чему это вас научило;
  • важно написать отчёт об этом ("incident report");
  • определите, что может быть улучшено, и запланируйте конкретные действия.

В конце Юэн рассказал забавную историю инцидента в Financial Times, который возник из-за того, что по ошибке была модифицирована продакшен база (которая называлась prod) вместо предпродакшен (pprod), и посоветовал избегать настолько похожих названий.


Learning from the web of life (Keynote)


Claire Janisch (BiomimicrySA) | Описание


На этот доклад я опоздал, но в Твиттере про него очень хорошо отзывались. Нужно посмотреть, если попадётся.


Видео с фрагментом выступления можно посмотреть на сайте конференции.


The Misinformation Age (Keynote)


Jane Adams (Two Sigma Investments) | Описание


Философский доклад на тему "можем ли мы доверять алгоритмам принятие решений". Общий вывод был, что нет: алгоритм может оптимизировать конкретные метрики, но при этом серьёзно влиять на то, что сложно измерить или лежит за пределами этих метрик (в качестве примера была дискриминация в алгоритме найма сотрудников в Amazon, что отрицательно влияло на культуру в компании и заставило отказаться от этого алгоритма).


The Freedom of Kubernetes (Keynote)


Kris Nova | Описание


Я оттуда запомнил две мысли:


  • гибкость — это не свобода, а хаос;
  • сложность сама по себе не проблема, если она несёт какую-то ценность (в оригинале это называлось "necessary complexity"), которая превышает стоимость этой сложности.

Доклад был достаточно философский, поэтому, с одной стороны, у меня не получилось вынести из него много, но с другой то, что всё-таки вынес, применимо не только в Kubernetes.



What changes when we go offline-first? (Keynote)


Martin Kleppmann (University of Cambridge), автор книги "Designing Data-Intensive Applications" | Описание


Доклад состоял из двух логических частей: в первой Мартин рассказал о проблеме синхронизации между собой данных, которые могут изменяться в нескольких источниках независимо друг от друга, а во второй рассказал про возможные варианты решений и алгоритмы, которые можно для этого использовать (operational transformation, OT, и conflict-free replicated data type, CRDT)) и предложил своё решение — библиотеку automerge для разрешения таких проблем.





Дополнительные материалы:



A programmer's guide to secure connections


Докладчик: Liz Rice | Описание и слайды


Доклад проходил в виде live coding сессии, и в нём Лиз показала, как работает HTTPS, какие ошибки могут возникать при работе с защищёнными соединениями и как их решать. Каких-то больших глубин там не было, но сама демонстрация была очень хорошая.


Самое полезное: слайд с основными ошибками (он же с доклада Лиз на другой конференции):



Дополнительные материалы:



Everything you wanted to know about monorepos but were afraid to ask


Simon Stewart (Selenium Project) | Описание


Основной тезис доклада — в монорепо гораздо проще управлять зависимостями в коде, и это перекрывает все плюсы отдельных репозиториев. Апеллировал к тому, что Google и Microsoft хранят данные в одном репозитории (размерами 86 Tb и 300 Gb соответственно), а репозиторий Facebook (54 Gb файлов) использует "off the shell mercurial".


Зал "взорвался" после вопроса "У кого в компании репозиториев больше, чем сотрудников?"

Аргумент "с большим репозиторием медленно работать" разбивал следующим образом:


  • вам необязательно забирать на локальную машину всю историю изменений: используйте shadow clone и sparse checkout;
  • вам необязательно использовать все файлы из репозитория: организуйте иерархию файлов и работайте только с нужной директорией, а всё остальное исключайте.

Дополнительные материалы:



Building a distributed real-time stream processing system


Amy Boyle (New Relic) | Описание и презентация


Хороший рассказ про работу с потоковыми данными от инженера из NewRelic (где у них явно много опыта по работе с такими данными). Эми рассказала, что собой представляет работа с потоковыми данными, как их можно агрегировать, что можно делать с запаздывающими данными, как можно шардировать потоки событий и как их перебалансировать при отказах обработчиков, что мониторить и т.д.


В докладе было очень много материала, не буду пытаться его пересказать, а просто порекомендую посмотреть саму презентацию (она уже есть на сайте конференции).




Architecting for TV


David Buckhurst (BBC), Ross Wilson (BBC) | Описание


Большая часть доклада была посвящена фронтэнду BBC. У ребят есть интерактивное телевидение и много телевизоров и других устройств (компьютеров, телефонов, планшетов), на которых это должно работать. С разными устройствами нужно работать совершенно по-разному, поэтому они придумали свой язык на базе JSON для описания интерфейсов и транслируют его в то, что умеет понимать конкретное устройство.


Основной вывод для меня — по сравнению с телевизионщиками у мобильных приложений нет никаких проблем со старыми клиентами.


Комментарии (0)