Хабрахабр

Конференция Velocity London от O’Reilly: обзор и слайды

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

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

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

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

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

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

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

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

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

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

Chaos Engineering Bootcamp

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

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

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

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

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

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

Building evolutionary infrastructure

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

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

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

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

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

Доклады

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

Evolution of Runtastic Backend

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

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

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

Сначала они держали сервера в 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) | Описание и презентация

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

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

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

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

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 для описания интерфейсов и транслируют его в то, что умеет понимать конкретное устройство.

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

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»