Доклады и тезисы 2017 года
В списке заявок отображаются как принятые Программным комитетом доклады на конференцию HighLoad++ 2017, так и не принятые.
Безопасность
Protecting the Web at a scale using consul and Elk
Brute-force attacks against web based applications are on the raise. You will be presented with an architecture built on top of ELK (https://www.elastic.co/products) and consul (https://www.consul.io/) that is capable of reliably detecting, analysing and mitigating large scale brute-force attacks against Wordpress, Drupal, Magento and Joomla based web sites in near real time. With little modifications the same architecture can be applied to solve similar problems. ...
Перехват трафика - мифы и реальность
Никогда не было и вот снова случилось! Компания Google в результате перенаправления трафика сделала недостпуными в Японии несколько тысяч различных сервисов, большинство из которых никак не связано с самой компанией Google. Однако, подобные инциденты происходят с завидной регулярностью, вот только не всегда попадают в большие СМИ. ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем веб-приложении
Уязвимости Cross-Site Request Forgery (CSRF) являются "классикой" AppSec и хорошо известны как специалистам по безопасности, так и разработчикам веб-приложений. Сегодня, как правило, при разработке веб-приложений уделяется внимание защите от CSRF-атак, и реализуются механизмы защиты. Также относительно новая технология "SameSite cookie", должна еще больше обезопасить веб-приложения от CSRF. ...
Key transparency: Blockchain meets NoiseSocket
Key transparency и Coniks - одни из первых примеров использования Blockchain не как инструмента для криптовалюты или транзакций, а в своём первоначальном значении - контроле за целостностью информации. Они позволяют хранить информацию о публичных ключах в доступном для аудита виде, при этом обладают такими уникальными функциями, как защита от утечки идентификаторов, строгое доказательство наличия и даже (!) отсутствия записи в блокчейне. С другой стороны, TLS, VPN, SSH - отличные протоколы "для людей". ...
Как мы учились чинить самолеты в воздухе
Все мы слышали про изменение кода ядра Linux на лету (kernel live patching). Но кто-нибудь проводит подобные фокусы в user space? Оказалось, что да. ...
Защищаемость от DDoS на этапе проектирования системы
- Защищаемость системы от DDoS (Protectability - The ability to receive protection) - это важный параметр, которому стоит уделять внимание при проектировании. В настоящее время он не сформулирован в явном виде, однако сильно влияет на дальнейшую судьбу системы, особенно если она подвержена риску DDoS-атак. - Уже на этапе проектирования можно обезопасить себя и заложить в систему такие элементы, которые облегчат и повысят эффективность защиты системы от DDoS-атак в будущем. ...
Архитектуры, масштабируемость
Распределенный отказоустойчивый сервис финансовых транзакций
Мы расскажем от том, как мы написали отказоустойчивый, распределенный и консистентный сервис на сто тысяч проводок в секунду. Почему согласно CAP-теореме такой сервис не будет работать. Как мы сумели работать с этим ограничением. ...
Linux kernel TLS и HTTPS
Наверное, уже ни для кого не секрет, что в Linux kernel интегрируется поддержка TLS: он уже есть в текущем RC Linux 4.13. В докладе я хочу рассказать, зачем вносится TLS в ядро Linux и о подходах к Linux kernel TLS от Facebook/RedHat, Mellanox и нашего проекта Tempesta FW. Также рассажу о специфичных для ядра проблемах реализации TLS. ...
Как обслужить миллиард пользователей и отдать терабит трафика
* Высокая нагрузка с точки зрения сетевого инженера. * Паттерны в архитектуре на примере Facebook/Google. * Многоуровневая балансировка L7, L4, L3. ...
И тогда наверняка вдруг запляшут облака!
Облака и виртуализация – современные тренды развития IT-технологий. Операторы связи строят свои TelcoClouds на стандартах NFV (Network Functions Virtualization) и SDN (Software-Defined Networking). В докладе начнем с основ виртуализации, далее разберемся, для чего используются NFV и SDN, потом полетим к облакам и вернемся на землю для решения практических задач! ...
Архитектура платежной системы: почти enterprise
Не так часто на конференциях рассказывают про архитектуру платежных систем, особенно если они делались без legacy. Нашей платежной системе всего три года, из которых два в продакшне. Мы изначально проектировали надежную и масштабируемую систему, и за прошедшее время накопилось тем для рассказа. ...
Как переписать с нуля базу данных личных сообщений ВКонтакте и мигрировать на нее без даунтайма
Долгие годы личные сообщения во ВКонтакте работали на одной и той же самописной базе данных (движке) без существенных изменений. Но постепенно она морально устарела, затрудняя внедрение новых фич, а растущие нагрузки привели к тому, что для функционирование этого раздела (насчитывающего триллионы сообщений и около петабайта данных) стало требоваться огромное количество серверов. Поэтому в течение 10 месяцев была разработана с нуля и внедрена новая система хранения сообщений, снимающая многие архитектурные ограничения, а также обладающая намного большей производительностью, что позволило компании сэкономить миллионы долларов, уменьшив в начале 2017-ого года в 2 раза количество используемого под эту задачу железа, вместо его 2-кратного увеличения, как того требовал бы старый движок. ...
Балансировка "на скорости проводов". Без ASIC, без ограничений. Решения NFWare для Одноклассников
Аудитория Одноклассников превышает 73 миллиона человек в России, СНГ и странах дальнего зарубежья. При этом ОК.ru - первая социальная сеть по просмотрам видео в рунете и крупнейшая сервисная платформа. Качественный и количественный рост DDoS-атак за последние годы превращает их в одну из первоочередных проблем для крупнейших интернет-ресурсов. ...
Отказоустойчивая архитектура фронтальной системы банка
В докладе мы расскажем: 1. Что такое высоконагруженная фронтальная система банка, чем она отличается от веб-проекта. Место фронтальной системы в IT-ландшафте банка. ...
Как мы делали многопользовательскую браузерную игру для HL++ с воксельной графикой
У компании Ingram Micro Cloud стенд на HL. На нем мы организуем браузерную игру TheURBN (urbn.odn.pw) с воксельной графикой, в которой каждый может захватывать территорию общего мира и строить небоскребы при помощи кубиков, а за процессом можно наблюдать на стенде. На экранах мы будем в режиме реального времени показывать виртуальный 3D-мир, в котором участники будут строить небоскребы. ...
Dataplane networking acceleration with OpenDataplane
OpenDataPlane (ODP, https://www.opendataplane.org) является open-source-разработкой API для сетевых data plane-приложений, представляющий абстракцию между сетевым чипом и приложением. Сейчас вендоры, такие как TI, Freescale, Cavium, выпускают SDK с поддержкой ODP на своих микросхемах SoC. Если проводить аналогию с графическим стеком, то ODP можно сравнить с OpenGL API, но только в области сетевого программирования. ...
Масштабирование сети VR-аттракционов CinemaVR
CinemaVR - это сеть аттракционов виртуальной реальности, расположенных в торговых центрах и кинотеатрах. Сеть была запущена 1-го января с 10 локациями, в августе локаций было 25, к концу года будет 80. На каждой локации 4-8 игровых машин и локальный сервер (итого: флот в сотню машин), которыми нужно управлять: контролировать, что конфигурация операционной системы соответствует целевой; что игровой контент и сопряженные сервисы скопированы и настроены; мониторить загрузку, статус работы, нетиповые события; собирать бизнес-события и синхронизировать данные, которые должны быть общими во всей сети. ...
High speed load balancing from the Linux Kernel
The kernel provides an internal load balancer which has been used during decades and the performance is good enough for small and medium sized traffic loads, but also are well known the scalability problems and dependencies with other subsystems in order to be fully usable. At ZEVENET, we've been working in the research and development of a high performance load balancing infrastructure at Linux Kernel side using the Netfilter subsystem via nftables user space tool. Finally, we're going to present the new ZEVENET layer 4 core based on this new infrastructure and how it works. ...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не разориться
Наш проект – это облачный CI-сервис, на котором пользователи запускают тесты разрабатываемых проектов. В этом году система автозакупки нашего проекта приобрела 37218 машин (Amazon Instances). Это позволило обработать 189488 "задач" (прогонов тестов) наших клиентов. ...
Смерть от распродажи: как Яндекс.Деньги попытались разогнаться к Black Friday и выстоять
В докладе мы расскажем о том, как Яндекс.Деньги: - захотели эквайрить множество онлайн-магазинов в ходе распродаж Black Friday; - узнали, что должны разогнать обработку карточных авторизаций в 1000 раз; - решились на десятки нагрузочных стрельб продакшна параллельно пользовательской деятельности совместно с группой банков-эквайров и платежных систем; - тестировали, тюнили и перерабатывали всю свою систему ради этой цели; - и главное – умерли или выдержали нагрузку в потоке платежей распродаж в день X? ...
Реактивные микросервисы с Apache Kafka
Apache Kafka - довольно популярная опенсорс-платформа для обработки потоков сообщений. Абстракция распределенного лога, лежащая в основе Kafka, дает возможность использовать ее в качестве системы очередей, но при этом дает некоторые очень полезные преимущества, недоступные даже решениям ESB-уровня. В этом докладе мы рассмотрим реальное применение Apache Kafka в системе, имеющей микросервисную архитектуру, бэкенды которой реализованы на .NET Core и Scala. ...
Building a Skyscraper with Legos: The Anatomy of a Distributed System
Much has been written and said about distributed systems of many different sizes, scales, and complexities. Most of the time though, we either talk about algorithms and theoretical ideas or entirely concrete specific systems: Abstract or Concrete. Gossip, failure detection, and leader election are discussed as if they’re a magical salve that can be rubbed onto a project to make it distributed. ...
Чем заняться вечером, если я знаю, сколько будет ++i + ++i
При изучении алгоритмов и структур данных я предлагаю студентам закрепить знания и попытаться сделать мир лучше, выполнив небольшие проекты по внедрению эффективных алгоритмов в свободное программное обеспечение. В этом докладе я расскажу несколько идей для таких проектов. Мы рассмотрим существующие фрагменты исходного кода, поговорим о том, что в нём можно допилить, и обсудим, сколько баллов за это надо давать.
Жизнь после шардинга
Многие считают, что для создания хорошего highload-проекта нужно расшардить данные правильным образом и спать спокойно, доставляя сервера по мере необходимости. На самом деле только после шардинга начинается все самое интересное, так как после физического разделения данные не перестают быть логически связанными. Именно поэтому необходимо создать инструменты для поддержания целостности этих данных. ...
Бэкенд, теория программирования
Как и зачем создавать NginX-модуль - теория, практика, профит. Часть 2
Почти год назад я выступил с докладом 'Как и зачем создавать NginX-модуль - теория, практика, профит'. У меня не получилось рассказать обо всех возможностях Nginx и, уверяю вас, в этом докладе у меня это тоже не получится - тема слишком большая! Сразу перейдем к делу. ...
Почему ivi перешел со Sphinx на Elasticsearch
В своей работе мы используем поисковый движок не только для полнотекстового поиска. Поисковый движок - это сердце API и сердце системы доступности контента. Для каждого региона и каждой платформы должен существовать свой ivi со своим настройками, множеством контента, правилами от правообладателей и рекламодателей. ...
Хочу всё сжать
Ловко придумать схему сжатия для своих данных умеют не все, а очень зря. Иногда (иногда) при помощи этой магии удается добиться как бы невозможного: одновременно и сэкономить диск или память, и при этом ускорить код. Как работает магия сжатия в целом? ...
Опыт разработки модуля межсетевого экранирования для MySQL
Расскажем о нашем опыте разработки модуля межсетевого экрана для MySQL с использованием генератора парсеров ANTLR и языка Kotlin. Подробно рассмотрим следующие вопросы: — когда и почему целесообразно использовать ANTLR; — особенности разработки ANTLR-грамматики для MySQL; — сравнение производительности рантаймов для ANTLR в рамках задачи синтаксического анализа MySQL (C#, Java, Kotlin, Go, Python, PyPy, C++); — вспомогательные DSL; — микросервисная архитектура модуля экранирования SQL; — полученные результаты. ...
Как писать сервис, поддержка которого не превращается в ад
Мы предлагаем вам рассказ о разработке сервиса в контексте его эксплуатации, решения инцидентов и их расследования. Представьте, у вас проект с полутора тысячами машин, многомиллионной аудиторией и сложной бизнес-логикой. Как писать логи, чтобы расследование инцидентов не превращалось в поиск иголки в стоге сена? ...
Как мы поддерживаем 100 разных версий клиентов в Badoo
В Badoo на данный момент на общей кодовой базе работают несколько разных проектов на всех основных платформах (iPhone, Android, Web и т.д.), где каждая платформа может иметь больше десятка одновременно работающих версий. В этом докладе я расскажу о том, как мы с этим живем и какими подходами решаем задачи разного кода для разных версий клиентов. А именно: как мы меняем протокол, как мы поддерживаем разный серверный код для разных версий клиентов, что такое минорная фича, почему старый клиент – это не страшно, – и как это все помогает в A/B-тестировании. ...
Безболезненный Fallback cache на Scala
В крупных (или микросервисных) архитектурах у Backend'а есть свои Backend'ы. И, если какой-то сервис очень важный, он не всегда очень производительный. Как сделать так, чтобы ваша система продолжала отвечать, даже если важные источники информации перестали отвечать? ...
Блокчейн
Применение блокчейна в RTB. Можно ли масштабировать децентрализованную базу данных для обработки и сохранения сотен тысяч показов в секунду?
Очень часто можно услышать миф про легкие и дешевые транзакции на блокчейне, однако из коробки в большинстве популярных сетей транзакции медленные и дорогие. В докладе мы попробуем разобраться, какие же есть все-таки варианты масштабирования блокчейна, чтобы миф стал правдой, что такое офчейн-решения и энкоринг, а также есть ли смысл в поддержке приватных блокчейнов, и как хранить терабайты данных с помощью блокчейна. Практическое применение рассмотрим на примере добавления блокчейна в экосистему RTB. ...
Введение в блокчейн и алгоритмы консенсуса
В докладе я расскажу о том, как устроен классический блокчейн: что такое транзакции и блоки, как они подписываются, из-за чего возникают форки и почему для майнинга не всегда нужны видеокарты. Из второй части доклада можно будет узнать о разных алгоритмах консенсуса: Proof-of-Work, Proof-of-Stake, Proof-of-Activity и нескольких гибридных и экспериментальных. ...
Блокчейн. Lego для интересующихся
В докладе будут освещены некоторые фундаментальные свойства и особенности блокчейна, так как на его основе уже построено много проектов. Блокчейн, как и любая технология, состоит из большого числа абстракций. И чтобы понять, как она функционирует на высоком уровне, необходимо разобраться с тем, что происходит на каждом из нижележащих уровней. ...
Системное администрирование
Что нового в nginx?
Что нового появилось в nginx за последнее время, и для чего всё это нужно? В докладе - рассказ про основные новые функции в nginx 1.11.x (доступно в стабильной ветке 1.12.x) и 1.13.x. Для чего нужен параметр сборки --with-compat, что делает директива mirror, будет ли работать TLS 1.3, как обновлять кэш с помощью proxy_cache_background_update, что такое stale-while-revalidate, как логировать JSON и что делать, если после обновления конфигурации старые рабочие процессы долго не завершаются.
Джентльменский набор сисадмина
Мне хочется поделиться примерами рабочих процессов и наработанных нами практик в Badoo. Рассказать о том, как можно автоматизировать ресурсоемкие процессы, после чего они покажутся совсем простыми. - вы увидите говорящего админа; - я не буду рассказывать про lsof, strace и Linux. ...
Lua @ HighLoad++
Тонкости работы трассирующего JIT-компилятора
Наша компания более 9 лет использует язык Lua для реализации бизнес-логики в проектах. Довольно быстро мы пришли к LuaJIT в качестве рантайм-платформы, а пару лет назад, столкнувшись с серьёзными архитектурными ограничениями этого продукта, создали собственный форк и успешно мигрировали на него. Анализируя производительность JIT-компилятора, доставшегося в наследство от LuaJIT'а, мы столкнулись с парадоксальной ситуацией: в некоторых случаях динамическая компиляция не улучшала (а иногда и ухудшала) производительность. ...
Lua в нагруженных телеком-системах
Я расскажу о своих наработках в проектировании и внедрении нагруженных телеком-систем. Большая часть заказчиков выставляет к ним сразу несколько требований: масштабируемость, отказоустойчивость, возможность балансировки и распределения нагрузки между географически разнесенными системами. При этом сохраняются все требования для телеком-систем в целом: минимальная дополнительная задержка в тракте обработки звонка, высокая надежность системы, автоматическая обработка аварийных ситуаций. ...
WAMP[-proto] как основа композитных SOA-приложений и его имплементация на Lua
WAMP расшифровывается как Web Application Messaging Protocol. Это открытый протокол, реализующий два паттерна в рамках одного протокола: RPC и Publish/Subscribe. Как мне кажется, это отличная платформа для сферы Internet of Things, Smart City и вообще бизнес-приложений с большим количеством различных компонентов и сервисов.
Мультиплеер на Go+Lua
Пример реализации мультиплеера с использованием Go в качестве серверной части и Lua на клиентской части. Go очень хорошо подходит для написания серверных решений, а его система каналов отлично справляется с обработкой постоянных запросов от многочисленных клиентов. В докладе расскажу про принципы построения игрового мультиплеера и способы его реализации. ...
Как пережить запуск онлайн-игры и справиться с мертвыми душами
Я работал в команде, которая создала несколько игр в соцсетях и для мобильных платформ. В разработке игр считается, что первые несколько минут в игре создают основное впечатление игрока об игре. Поэтому геймдизайнеры тратят много времени на полировку этих первых мгновений нового игрока в игре. ...
Enterprise-системы
Опыт разработки, отладки и внедрения системы горячего резервирования торговой системы
- "Горячий" резерв, что это и зачем это нужно? Всем ли нужен? - Почему Московская Биржа решила это реализовывать. ...
Разгоняем ASP.NET Core
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров. ...
DevOps и эксплуатация
Настройка kubernetes: tips and tricks
Мы в Avito уже более года используем Kubernetes в качестве платформы для микросервисов. За это время мы столкнулись с рядом проблем, с которыми может столкнуться каждый, кто использует эту платформу. В докладе поделюсь опытом решения проблем и настройки кластера для обеспечения его эффективной работы (низкий и стабильный latency для сервисов, использование ресурсов CPU, RAM): настройки аппаратного обеспечения (сеть, CPU), ОС, настройки самих инфраструктурных компонентов kubernetes и о том, что и как необходимо мониторить. ...
How packagecloud.io works
Since its inception, packagecloud has evolved to meet the growing needs of its users. The idea behind the service is simple: Upload your packages and all the necessary information is automatically extracted and the required repository metadata is atomically generated and cryptographically signed behind the scenes for consumption by the appropriate package managers. This talk aims to explore the technical choices that were made in order to scale the application to meet user demand while still providing this rich experience across all the package types we support. ...
One-cloud - система управления дата-центром в Одноклассниках
Одноклассники состоят из более чем восьми тысяч железных серверов, расположенных в нескольких дата-центрах. Каждая из этих машин была специализированной под конкретную задачу - как для обеспечения изоляции отказов, так и для обеспечения автоматизированного управления инфраструктурой. В определенный момент мы поняли, что внедрение новой системы управления позволит нам более эффективно загрузить технику, облегчить управление доступами, автоматизировать (пере)распределение вычислительных ресурсов, ускорить запуск новых сервисов, ускорить реакции на масштабные аварии. ...
Инцидент-менеджмент в Badoo
Технологические команды разного размера рано или поздно сталкиваются с тем, что возникающие проблемы становится сложнее контролировать. Какие-то события возникают сами по себе, какие-то – "благодаря" человеческому вмешательству, – или что-то идёт не так после заранее запланированных работ. Всё это приводит к тому, что страдают и пользователи (потому что у них что-то не работает), и сотрудники (потому что им приходится тратить больше времени на выяснение причин случившегося).
DevOps-трансформация Альфа-Банка
Конкуренция в банковском сегменте усиливается с каждым годом, повышаются ставки и цели по прибыли компаний. При прочих равных выигрывает тот, кто может быстрее разрабатывать продукты и мгновенно реагировать на потребности рынка. Банки рассматривают DevOps-трансформацию как средство, которое позволит им кардинально повысить финансовую эффективность, качество финансовых продуктов и поможет услышать и быстро реагировать на клиента. ...
Мониторинг облачной CI-системы на примере Jenkins
В докладе представлен опыт создания системы мониторинга для большой CI-системы, включающей в себя 4 Jenkins-мастера, на самый большой из которых ежедневно приходится больше 100 тысяч сборок/билдов/запусков. Т.к. в нашей компании каждый коммит обязан пройди через CI, роль мониторинга CI огромна. ...
Разработка портируемой инфраструктуры New Relic - контейнеры, CoreOS и прочие приключения
Нашей группе было поручено создать новый самостоятельный “регион” для всех продуктов New Relic, предназначенный для обслуживания европейских клиентов, подпадающих под ограничения GDPR. Здесь следует отметить, что так как наша компания предоставляла свои услуги исключительно через “облако” (SaaS), то хорошо выработанных процессов для настройки всей инфраструктуры “с нуля” у нас не было. Рассмотрев полученную задачу, мы установили, что настройка региона при имеющихся процессах займет Н месяцев. ...
Logging and ranting
A story about real life experience in Lamoda, featuring logging, forest animals, limited size buffers and morning routines. Possible takeaways from this presentation: 1. Understanding the need of central log aggregation 2. ...
Трансформация DevOps - прошибая стены
DevOps трансформация - что это? Многие знают про continuous delivery, про скорость доставки фич, и как с нуля строить проекты с мгновенной доставкой до продакшна, используя современный инструментарий. Но что делать, когда у вас успешный продукт с 15-летней историей, с миллионами строчек кода, со множеством крупных партнеров, и вдруг вы обнаруживаете, что в среднем путь фичи от идеи до установки на инсталляцию партнера занимает 2 года? ...
Infrastructure as code might be literally impossible
This talk will begin by briefly examining what it means for infrastructure to be represented as code. We'll examine some fundamental software components required for automating infrastructure such as GPG, package managers, SSL, and more. We'll examine some interesting failure cases for these tools and how these shortcomings might make infrastructure as code impossible, for now. ...
Zabbix: рецепты высокопроизводительного мониторинга
Я расскажу о принципах создания высокопроизводительного мониторинга и о том, какие инструменты для этого существуют в Zabbix. Проанализируем результаты бенчмарков различных сценариев работы Zabbix, посмотрим, сколько метрик в секунду способна собирать и обрабатывать наша система мониторинга. Отвечу на вопрос, что и как влияет на производительность Zabbix? ...
Переосмысливая подход к инфраструктурному коду
Legacy-код - это проблема, которая затрагивает не только программный, но и инфраструктурный код. Причём невозможность двигаться вперёд и большие риски, связанные с изменением логики, грозят ничуть не меньшими потерями. Я расскажу о том, как в нашей компании мы проводили рефакторинг и модулирование огромного куска Puppet-кода, который обслуживает множество проектов, вводили тестирование, и к чему это всё привело. ...
Эксплуатация container-based-инфраструктур
На каждой конференции мы слушаем интереснейшие доклады про CI/CD, service discovery, docker, kubernetes и т.д. Практически все эти доклады рассказывают нам о "разработческой" стороне проблемы: как собрать образ контейнера, быстро его протестировать и задеплоить, как контейнеры друг о друге узнают, как добавится новый upstream в конфиг nginx и т.д. Но никто нам не рассказал, как потом с этим "облачным" счастьем жить (тем более под нагрузкой). ...
Масштабируя DNS
Протокол DNS на семь лет старше, чем Всемирная паутина. Стандарты RFC 882 и 883, определяющие основную функциональность системы доменных имён, появились в конце 1983 года, а первая реализация последовала уже годом позже. Естественно, что у технологии столь старой и при этом по сей день активнейшим образом используемой просто не могли не накопиться особенности, неочевидные обыкновенным пользователям. ...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? ...
Climbing out from the digital mud with unikernels
The monolithic operating system has not changed much in the past forty years but hardware, software development, and the world in general has. As engineers we are stuck living under neolithic layers of digital mud while the ever increasing demand of security and efficiency beckon us more into the future. The future is unikernels. ...
Карта граблей на поле сбора и доставки логов. Lazada-way
Логи — важная часть системы, позволяющая понять, что она работает (либо не работает), как ожидается. В условиях микросервисной архитектуры работа с логами становится отдельной дисциплиной специальной олимпиады. Нужно решить сразу кучу вопросов: - как писать логи из приложения; - куда писать логи; - как доставлять логи для хранения и обработки; - как обрабатывать и хранить логи. ...
ElasticSearch и Heka: как мы учились просеивать слона через сито
Год назад в Яндекс.Деньгах появилась система сбора логов в реальном времени на базе ElasticSearch и Heka. Сейчас она пропускает через себя 2 млрд сообщений в день. Сегодня я расскажу, как она была построена, почему выбран именно стек EHK, и почему мне не стыдно за свой выбор. ...
Metrics are Not Enough: Monitoring Apache Kafka
When you are running systems in production, clearly you want to make sure they are up and running at all times. But in a distributed system such as Apache Kafka… what does “up and running” even mean? Experienced Apache Kafka users know what is important to monitor, which alerts are critical and how to respond to them. ...
Лучшие практики CI/CD с Kubernetes и GitLab
Весь этот год мы в компании «Флант» активно переводили на Kubernetes проекты заказчиков, сильно различающихся как по масштабам, так и по технологиям. На данный момент (сентябрь 2017) у нас в Kubernetes (в production) функционируют 13 проектов, в состав которых входят более 130 различных приложений, написанных на 8 языках программирования: .NET, Erlang, Go, Java, Node.js, PHP, Python и Ruby. В этих проектах задействовано множество инфраструктурных компонентов, таких как Cassandra, Ceph, Firebird, Memcached, MongoDB, MySQL, NATS.io, NGINX, PostgreSQL, RabbitMQ, Redis, RethinkDB, Sphinx, SQLite и других. ...
SOA: строим свой service mesh
Service mesh - это выделенный слой в инфраструктуре компании, который призван упростить взаимодействие между сервисами, а также сделать его надежным и безопасным. В юрисдикцию service mesh, по разным мнениям, входят: маршрутизация запросов, service discovery, балансировка, обработка ошибок, мониторинг, трейсинг, авторизация и аутентификация и др. вещи. ...
Java и Linux - особенности эксплуатации
Java на Linux встречается повсеместно в информационных системах от больших данных до новомодных serverless архитектур. Как Linux, так и Java имеют свои эксплуатационные нюансы. Понимание этих нюансов важно, чтобы заставить стек Java + Linux работать стабильно и эффективно. ...
Тестирование, нагрузочное тестирование
Контроль качества высоконагруженных систем
Разработка любого высоконагруженного сервиса не обходится без нагрузочных тестов. Во многих проектах процесс анализа работы системы под большой нагрузкой слабо структурирован или выполняется непосредственно в бою. Есть масса статьей и рецептов использования тех или иных инструментов, но самые важные вопросы не раскрыты до конца: что именно мы должны измерять, правильно ли мы интерпретируем результаты и как ловить баги, которые проявляются только под высокой нагрузкой. ...
Честное перформанс-тестирование
Стандартные статистические метрики не подходят для тестирования производительности приложений. Оценочные метрики, такие как средние или медианные значения, могут легко ввести в заблуждение, скрыв проблему. Данный доклад продемонстрирует, почему среднее время отклика не имеет смысла, покажет, как с этим бороться, и предложит проверенную на практике альтернативу статистическому подходу. ...
Сложности performance-тестирования
Если вас волнует производительность вашего приложения, то рано или поздно у вас могут появиться мысли о том, чтобы написать тесты на эту самую производительность. К сожалению, внедрить такие тесты в процесс разработки намного сложнее, чем может показаться на первый взгляд. В этом докладе мы будем разговаривать про типичные проблемы тестирования производительности и возможные подходы к их решению. ...
Узкотематические секции: видео, поиск, RTB, биллинги
Fraud in mobile applications: how to define and detect
В этом докладе мы остановимся на отдельном интересном подвиде мошенничества в RTB - мошенничестве в сегменте мобильных приложений. Интересен он в первую очередь тем, что в отличие от веб-сегмента, фрод в котором типологизирован (боты, многоуровневые баннеры, фабрикация адреса показа, сайты-пустышки и т.д.), перечисленные типы в приложениях встречаются редко, и в индустрии на текущий момент нет стандартов, что считать мошенничеством в сегменте приложений. Однако, проблема есть, при этом объем сегмента вырос так, что игнорировать ее дальше неприлично, поэтому будем решать.
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на миллион онлайнов
Пишем свой протокол стриминга с гарантированной задержкой поверх UDP. Архитектура отказоустойчивого стриминг-сервиса, способного выдержать потерю дата-центра и миллион онлайнов. Проблемы мобильного стриминга и TCP-протокола, QUIC как замена TCP, UDP и fast retransmit, forward error correction (FEC), задержка или потеря пакетов, приоритезация потоков, шифрование и многое другое. ...
Почему оно не находится!
...и что сделать, чтобы уже находилось? И снова про качество поиска. Поменьше скучной теории (ну, чтобы не более 60%); больше практических примеров. ...
Не так страшен терабит
Мы поделимся опытом масштабирования высоконагруженного видеопроекта до емкости в 1 терабит, и как при этом реальность соотносится с ожиданиями. Основные темы: - Как построить серверную архитектуру, способную стабильно отдавать до 75 Гбит/с с одной ноды (аппаратная и программная конфигурация, предпочтительный профиль нагрузки). - Как влияет SSL на производительность при высоких нагрузках ("стоимость" перехода на SSL на высоких скоростях - как падает максимальная производительность). ...
Building a WebScale Search Engine with a Data Driven Architecture
When building a Search Engine, generic solutions are mostly the go to tools to use when designing the system. However, at a certain scale, as we have at Booking.com, off the shelf tools can no longer sustain the requirements we need from them. When searching through hundreds of millions of reservations multiple times on every pageview, we had to build a system that not only scales and is highly available, but also a system that can deliver business value by being flexible enough for other developers to attach their business specific logic to. ...
Технологии будущего
Знакомство с NGINX Unit
Пару месяцев назад мы выпустили первую бета-версию нашего нового open-source проекта NGINX Unit. Он базируется на уникальной архитектуре нового поколения и на данный момент способен выполнять функции гибкого и эффективного сервера приложений. Из доклада вы узнаете, для чего создавался новый сервер, его основные приемущества, какими возможностями уже обладает и какие задачи способен решать. ...
Интернет вещей (IoT)
Использование Ubuntu Core для интернета вещей в продакшне
На опыте своей команды расскажу об использовании новой операционной системы от Canonical - Ubuntu Core - в проекте, связанном с интернетом вещей. С помощью нее мы решаем проблемы с обновлениями устройств, приводящими к необходимости поддержки огромного количества обновленных-на-половину устройств (как у нас было, например, с Puppet). Отдельно остановимся на безопасности, на наболевшем сейчас вопросе в IoT и посмотрим, как Ubuntu Core решает ее с помощью концепции интерфейсов и слотов - абстракции над Selinux и AppArmor. ...
Делаем свою прошивку для IP-камеры на Rust
Я хочу рассказать про наш опыт самостоятельной разработки прошивки для IP-камеры. Современные дешевые IP-камеры очень приличны по качеству железа, но сильно страдают софтом. Поголовно используется софт, которому больше 10 лет без патчей, удивительные проблемы с передачей видео по сети (потери данных в TCP), фантастический уровень безопасности (рутовый телнет без пароля), повсеместное нарушение стандартов. ...
Архитектура и производительность фронтенда
Оптимизации поисковой выдачи Яндекса
Поисковая выдача Яндекса (СЕРП) - сложное многофункциональное веб-приложение с высокими требованиями к скорости загрузки. По ряду причин мобильный веб медленнее десктопа: ограничения по CPU/памяти в телефонах, нестабильность мобильных сетей. В докладе расскажем, как с учётом этих особенностей, мы ускоряем мобильный СЕРП.
Looking for the Holy Grail of Mobile Web Performance
There’s a long-standing myth in the mobile world that only native apps are able to provide a decent performance for the mobile user. With the emergence of Progressive Web Apps that suppose to mimic all the native goodness, the push for performance in the mobile web is now stronger than ever before. Is the Web Platform ready to keep up with these expectations? ...
Микросервисный фронтенд
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда. В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. ...
Мониторинг производительности фронтенда в Badoo
Производительность – важный аспект работы современных web-приложений, и с каждым годом разработчики уделяют ему все больше внимания. Мы вкладываем много сил в разработку и оптимизацию, тщательно все тестируем, но достаточно ли этого, чтобы в день релиза быть уверенными, что у наших пользователей все действительно хорошо и быстро работает? Лучший способ в этом убедиться – следить за тем, как приложение ведет себя у реальных пользователей.
Реконструкция YouTube.com - переписывая второй по популярности сайт в мире
Последняя крупная модификация YouTube.com была запущена более 4-х лет назад, многие фундаментальные принципы работы не менялись ещё дольше. При этом сервис, с одной стороны, прошёл многократные этапы оптимизации (среднее время до проигрывания видео в мире - менее 2 секунд), но оброс огромным количеством багажа и сильно отстал в плане скорости разработки. Мы поставили перед собой задачу сохранить (и улучшить) показатели производительности, параллельно модернизируя сайт и экосистему разработки, внедряя новый дизайн и при этом минимально затрагивая наших пользователей. ...
Как развивать библиотеку компонентов, не ломая её
Нынче стало модно выделять UI-компоненты в отдельную библиотеку и использовать её в нескольких проектах. Мы в команде почты Mail.ru делаем так же, но столкнулись с проблемой: каждый разработчик, меняя библиотеку под свои нужды, обязательно ломает что-нибудь, что работало у других. Я расскажу о том, как мы решили эту проблему, и о том, какие инструменты для этого можно использовать.
Пиксельные шейдеры для Web-разработчиков. Программируем GPU
5 лет назад шейдеры перевернули мир компьютерной графики, став технологией, ответственной за все впечатляющие спец. эффекты, которые мы видим в компьютерных играх. Сейчас они готовы перевернуть веб. ...
Состояние Состояния
Рассмотрим различные способы управления состоянием приложения. Поделим аудиторию и разожжем холивар (рассмотрим плюсы и минусы разных подходов): Services - Стандартный подход работы с сервисами. CQS/CQRS - Command Query Separation. ...
Нейронные сети, искусственный интеллект
Определение атрибутов и визуальный поиск в UGC-фотографиях одежды
Конкуренция в e-commerce в настоящее время является одним из главных двигателей в развитии технологий, позволяющих потребителю эффективнее распоряжаться таким важным ресурсом, как время. В свою очередь компании, совершенствуя свои технологические процессы, получают возможность к расширению своего бизнеса. Пожалуй, одной из самых высокотехнологичных областей в e-commerce являются рекомендации. ...
Распознавание облаков и теней на спутниковых изображениях с использованием глубокого обучения
Спутниковые изображения Landsat-8 являются одним из наиболее востребованных инструментов мониторинга и исследования земной поверхности. Одной из главных проблем использования этих изображений является зашумленность их облаками и тенями от облаков. На начальном этапе обработки необходимо "отбраковать" зашумленные части сцен или сцены целиком. ...
Нейронные сети: быстрый инференс на GPU с помощью TensorRT (демо)
Современные нейронные сети базируются на высоконагруженных вычислениях. Для быстрого обучения и инференса (прямого распространения) важны как аппаратное обеспечение, так и программное. Современные фреймворки, используемые для построения и обучения нейронных сетей, могут жертвовать производительностью в пользу большей гибкости. ...
Face Recognition: From Scratch To Hatch
Мы разработали технологию по детекту и распознаванию лиц для продуктов компании Mail.ru, которая показывает высокие результаты на известных тестах. Технология на данный момент используется в Мобильном Облаке@Mail.ru для кластеризации фотографий по людям, а также во внутренних сервисах компании. В рамках доклада расскажу: - как научить нейросеть находить лица на фотографии и различать их; - интересные аспекты обучения и трюки, о которых вы не прочитаете в статьях; - как мы оптимизировали вычисления для того, чтобы справляться с десятками миллионов запросов в сутки; - проблемы модели, с которыми столкнулись при внедрении в production, и как их решали. ...
Обнаружение аномалий во временных рядах с помощью автоэнкодеров
Повсюду нас окружают данные, которые изменяются во времени. Их размерности растут, а интенсивности все время увеличиваются. Очень скоро нам будет не хватать даже самых больших мониторов, чтобы одновременно вывести их экран и наблюдать за происходящими изменениями. ...
Аппаратное обеспечение, инфраструктура
Дезагрегация и открытость в сетях Ethernet
Одним из ключевых инновационных трендов в современных сетях является дезагрегация, при которой аппаратная платформа сетевого устройства отделяется от операционной системы и приложений, что позволяет использовать различные ОС на различных устройствах, а также запускать различные сетевые приложения на этих ОС. Если в мире серверов дезагрегация и создание унифицированной открытой аппаратной платформы на базе архитектуры x86 и IBM PC, произошло десятки лет назад, то в мире сетей этот подход только начинает набирать обороты. Дезагрегация или разделение платформы сетевого устройства на независимые унифицированные компоненты - аппаратное «железо», операционную систему и приложения, это идея, пришедшая к нам от крупнейших web-компаний с первоочередной целью снижении затрат на содержание сети (OPEX). ...
Базы данных и системы хранения
Beyond WHERE and GROUP BY — new and faster ways of querying your data in MariaDB
Мы пишем SQL-запросы с WHERE, GROUP BY, ORDER BY, HAVING уже десятки лет. Но никто уже не использует MySQL 3.20 или Windows 3.11 — зачем же ограничивать себя стандартом SQL:1992? Последние версии MariaDB поддерживают возможности SQL:1999 (common table expressions), SQL:2003 (window functions), SQL:2011 (system-versioned tables), SQL:2016 (JSON), что позволяет строить более сложные (например, иерархические) модели данных и писать гораздо более простые и быстрые запросы.
Локальное KV-хранилище: сравнительное тестирование 9 "движков"
Я не люблю доклады про цифры. Ни слушать, ни читать. Я люблю доклады про концепции и тенденции, на худой конец - про методики. ...
Синхронизация данных из PgSQL в Tarantool
Часто возникает задача создать кэш перед какой-либо базой данных, будь это PgSQL или какая-нибудь другая БД, и иметь возможность быстро обратиться к данным и снизить нагрузку на БД. Но самое главное в такой задаче - иметь эти данные всегда актуальными между кэшем и самой БД. Исходя из этой ситуации выходит, что не все данные возможно хранить в кэше, так как у нас нет уверенности, что они актуальные на данный момент. ...
5 boring performance improvements in MongoDB 3.4 that matter
I will talk about performance improvements to MongoDB replication and sharding whose development I have been involved in. These under-the-hood improvements make a difference to users that have terabytes of data and possibly also lots of shards. I'll cover the following improvements in MongoDB 3.4: - Order of magnitude faster initial sync for replicas by building indexes in parallel - Removing throttling from migrations (re-balancing) between shards - Allowing parallel migrations between shards - Moving the balancer process from the mongos servers to the primary config server (a singleton) - Wire Protocol Compression to speed up replication in geographically distributed clusters - Future improvements to expect ...
Columnar Table Performance Enhancements Of Greenplum Database with Block Metadata and Sort Keys
Alibaba built up a data warehouse service named HybridDB in its public cloud service, based on the open sourced Greenplum Database. And it keeps on enhancing HybridDB's preformance. This presentation will talk about how Alibaba improves HybridDB's performance for columnar tables with data block's meta data (MIN/MAX values of block data) and sort keys (pre-defined keys that data will be sorted and stored with). ...
Эффективное использование ClickHouse
ClickHouse чуть более года доступен в open-source. За это время накоплен опыт его использования в российских и зарубежных компаниях. В некоторых из них объёмы данных и нагрузки превышают те, с которыми мы имеем дело в Яндексе. ...
Хранимые процедуры в NoSQL СУБД на примере Tarantool
Одним из приемов, позволяющих увеличить скорость обработки и получения данных, является написание хранимых процедур. В этом докладе будут рассмотрены преимущества и недостатки такого подхода на примере Tarantool. Tarantool можно рассматривать как полноценный application server. ...
Inexpensive Datamasking for MySQL with ProxySQL - Data Anonymization for Developers
During this session we will cover the last development in ProxySQL to support regular expressions (RE2 and PCRE) and how we can use this strong technique in correlation with ProxySQL's query rules to anonymize live data quickly and transparently. We will explain the mechanism and how to generate these rules quickly. We show live demo with all challenges we got from the Community and we finish the session by an interactive brainstorm testing queries from the audience. ...
Отладка и устранение проблем в PostgreSQL Streaming Replication
Потоковая репликация, которая появилась в 2010 году, стала одной из прорывных фич постгреса и в настоящее время практически ни одна инсталляция не обходится без использования потоковой репликации. Она надежна, легка в настройке, нетребовательна к ресурсам. Однако при всех своих положительных качествах, при её эксплуатации могут возникать различные проблемы и неприятные ситуации. ...
Distributed Postgres with Citus
Citus is an open-source extension to Postgres that transforms it into a multi-node, distributed database. It allows you to horizontally scale out both the. In this session you'll learn how Citus takes care of sharding, distributed transactions, and even masterless writes.
Метаданные для кластера: гонка key-value-героев
Обзоры и сравнения key-value баз данных, коих сегодня огромное количество, пестрят обещаниями миллионов операций в секунду с менее чем миллисекундными задержками. Мы строим высокопроизводительный кластер хранения, и нам нужно где-то хранить метаданные. Одним из вариантов стали хвалёные key-value-решения. ...
Позвольте представить: MariaDB 10.2 и 10.3
MariaDB сейчас на подъеме — активно развивается, пользовательская база растет очень быстро (с апреля до августа — в полтора раза). Последняя стабильная версия — 10.2. Новая версия MariaDB –10.3 уже почти год в разработке и ее вот-вот тоже объявят стабильной. ...
Prometheus как time series database
Уже много было докладов про то, как разные компании переезжают на Prometheus, и мы не исключение. Мы в Lamoda тоже успешно применяем Prometheus для целей мониторинга, наверное, как и все, складываем в него миллионы различных метрик и чувствуем себя хорошо. Prometheus достаточно успешно справляется с очень большой write-нагрузкой, а что же с read? ...
Гибкая схема хранения данных в MySQL (JSON) для интернета вещей / MySQL Flexible Schema (Document Store/JSON) for IoT
В данном докладе обсуждается возможность хранения данных в формате JSON в MySQL. Хранение данных с датчиков Интернета Вещей (Internet of Things) может быть сложным во многих отношениях, в частности, из-за меняющегося характера данных. Например, если у вас есть фиксированная структура таблицы, а датчику необходимо будет сохранить новое свойство в этой таблице, потребуется изменение структуры таблицы. ...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает
Apache Ignite — Open Source платформа для высокопроизводительной распределенной работы с большими данными с применением SQL или Java/.NET/C++ API. Ignite используют в самых разных отраслях. Сбербанк, ING, RingCentral, Microsoft, e-Therapeutics — все эти компании применяют решения на основе Ignite. ...
Как мы заставили Druid работать в Одноклассниках
Как мы заставили Druid работать в Одноклассниках. «Druid is a high-performance, column-oriented, distributed data store» http://druid.io. Мы расскажем о том, как, внедрив Druid, мы справились с ситуацией, когда MSSQL-based система статистики на 50 терабайт стала: - медленной: средняя скорость ответа была в разы меньше требуемой (и увеличилась в 20 раз); - нестабильной: в час пик статистика отставала до получаса (теперь ничего не отстает); - дорогой: изменилась политика лицензирования Microsoft, расходы на лицензии могли составить миллионы долларов. ...
pg_shardman: шардинг в PostgreSQL на основе postgres_fdw, pg_pathman и логической репликации
Шардинг в PostgreSQL - животрепещущая тема. Задача непростая и объемная, поэтому в сообществе пока нет единого плана, как ее решать. Мы расскажем о нашем экспериментальном подходе к шардингу, основанному на нескольких активно развивающихся технологиях - механизме FDW, расширении pg_pathman и логической репликации, вошедшей в ядро 10-ой версии. ...
MySQL Replication - Advanced Features
MySQL Replication is powerful and has added a lot of advanced features through the years. In this presentation we will look into replication technology in MySQL 5.7 and variants focusing on advanced features, what do they mean, when to use them and when not, Including. When should you use STATEMENT, ROW or MIXED binary log format? ...
Мастер-класс "Логическая репликация и Avito"
В Avito объявления хранятся в базах данных Postgres. При этом уже на протяжении многих лет активно применяется логическая репликация. С помощью неё успешно решаются вопросы роста объема данных и количества запросов к ним, масштабирования и распределения нагрузки, доставки данных в DWH и поисковые подсистемы, меж-базные и меж-сервисные синхронизации данных и пр. ...
Технологии хранения для больших проектов
Мы ежедневно сталкиваемся с тем, что даже работающие более 15 лет в индустрии специалисты, путаются в понятиях и преимуществах и недостатках тех или иных архитектур больших СХД. В своем докладе мы расскажем о разнице между distributed (распределенными), shared (общими) и параллельными файловыми системами, покажем, в каких задачах Scale In-системы превосходят Scale Out и наоборот. Расскажем, как новые технологии влияют на архитектуру СХД. ...
Оптимизация high-contention write в PostgreSQL
Оптимизация производительности – дело тонкое. Улучшая производительность системы при одной нагрузке, можно запросто ухудшить её при другой нагрузке. Основным мерилом производительности PostgreSQL в среде его разработчиков является pgbench. ...
Measuring performance variabillity of EC2
Working in the MongoDB Server Performance Testing team, we use Amazon EC2 for system level testing. This allows us to flexibly deploy and tear down MongoDB clusters of various topologies, day after day. On the other hand, using a public cloud for performance testing can be challenging for repeatability of test results - to put it mildly. ...
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шардов
История развития инфраструктуры баз данных в Dropbox. Путь от одной глобальной базы к 6 тысячам шардов. - Как конфигурировать для разных типов, железа, версий mysql. ...
100500 способов кэширования в Oracle Database, или как достичь максимальной скорости обработки запросов минимальной ценой
Изначально будут раскрыты базовые причины, которые заставили появиться такой части механизма СУБД, как кэш результатов, и почему в ряде СУБД он есть или отсутствует. Будут рассмотрены различные варианты кэширования результатов как sql-запросов, так и результатов хранимой в БД бизнес-логики. Произведено сравнение способов кэширования (программируемые вручную кэши, стандартный функционал) и даны рекомендации, когда и в каких случаях данные способы оптимальны, а порой опасны. ...
Хранилище данных Avito: аналитика для микросервисной архитектуры
Большое количество современных веб-проектов переходит на микросервисную архитектуру. Она решает огромное количество проблем, присущих монолитным системам, однако накладывает качественно новые требования, в том числе и на аналитику данных. В докладе будет рассказано о том, какие вызовы и возможности преподнесла нам микросервисная архитектура, а также показано, как clickstream может быть полезен не только аналитикам, но и разработчикам. ...
Rethinking Relational Database CRUD Design Patterns Since We Live in a Big Data World
The past several years have seen the explosive growth of Big Data Analytics to process huge volumes of data. For example, Big Data analytics can be used to process clickstream data to gain insight into user behavior. Clickstream data generally contains only a reference to the user, without any attributes. ...
Нереляционный SQL
Если ещё 10 лет назад движение нереляционных СУБД подчёркнуто называлось NoSQL и ходило под лозунгом «SQL is kludge», то сейчас мы видим, что на SQL можно «поговорить» практически с любыми источниками данных: двигаясь от SQL-подобных диалектов (вроде HiveQL, AQL, CQL), возникла целая плеяда SQL-on-Hadoop, среди которых есть способный просверлиться в самые невероятные нереляционные структуры Apache Drill, а в конце августа 2017 появился даже KSQL — SQL-движок над поточником Apache Kafka. И гордость российского NoSQL-субдостроения — Tarantool — также оснастился SQL-движком, а в мире IMDG (резидентных гридов данных) уже речь идёт не просто о поддержке SQL, а ведётся соревнование между движками за полноту соответствия стандартам SQL-99. Цель доклада — разобраться, что же такого в SQL от реляционной специфики, а что в нём — универсальное, позволяющее его использовать для «общения» с любыми данными. ...
Дешевле, надёжнее, проще. Хранение петабайтов видео и фото в ОК
Технический прогресс позволил нам снимать Full HD или даже 4К-видео на телефон, загружать их и делиться с друзьями в Одноклассниках или же вести прямые трансляции на весь мир. Для нас это означает необходимость хранить десятки петабайт данных и обеспечивать к ним доступ со скоростью сотни Гб/с, а это в свою очередь требует инфраструктуры, состоящей из многих тысяч дисков и сотен серверов. Ранее для обеспечения требуемого уровня надежности хранения данных и и отказоустойчивости мы были вынуждены хранить 3 реплики данных - по 1 в каждом ДЦ. ...
ProxySQL Use Case Scenarios
ProxySQL aims to be the most powerful proxy in the MySQL ecosystem. It is protocol-aware and able to provide high availability (HA) and high performance with no changes in the application, using several built-in features and integration with clustering software. During this session we will quickly introduce its main features, so to better understand how it works.
Механизмы мониторинга баз данных: взгляд изнутри
Когда мы говорим о нагруженных системах и базах данных с большим числом параллельных коннектов, особый интерес представляет практика эксплуатации и сопровождения таких проектов. В том числе инструменты и механизмы СУБД, которые могут быть использованы DBA и DevOps-инженерами для решения задач мониторинга жизнедеятельности базы данных и ранней диагностики возможных проблем. Данный доклад раскрывает эту тему с позиции разработчиков ядра СУБД. ...
Cassandra для хранения метаданных: успехи и провалы
Мы разработали и поддерживаем экзабайтное облачное объектное хранилище (S3-совместимое), и нам необходимо сохранять метаданные объектов. Работа с метаданными сложнее работы с данными, т.к. необходимо поддерживать конкурентные операции по записи/удалению одного и того же объекта, версионирование и т.п. ...
В ногу со временем, или как делать upgrade PostgreSQL
Любое обновление чего-либо в продакшне - это проблема для администраторов, да и для всей компании в общем. И это особенная проблема, когда необходимо обновлять версию базы данных, и самый пик проблематичности, когда эта база - основное место хранения всех критически важных данных для проекта. Это нетривиальная задача для опытного ДБА, который делает эту процедуру много и часто. ...
Why are we excited about MySQL 8?
MySQL 8 is coming! As large jump in the version implies this is the largest update in the MySQL space since MySQL 5.0 was released over 12 years ago. Are you excited about MySQL 8? ...
libfpta – в памяти, с персистентностью, быстрее хайпа
Представление "Позитивных таблиц" – нового C/C++ движка, выполняющего до полумиллиона пишущих транзакций в секунду к табличным и key-value данным, и одновременно до миллиона читающих запросов на каждом ядре процессора. Компания Positive Technologies производит программные продукты в области информационной безопасности, в том числе обеспечивающие предотвращение вторжений и мониторинг событий безопасности, в том числе на крупномасштабных объектах относящихся к критической инфраструктуре. Для ряда таких продуктов потребовалось разделяемое оперативное хранилище. ...
Длинная транзакция или когда размер имеет значение
Все знают, что длинные транзакции - это плохо, но не все могут объяснить - почему. Что в них такого, что заставляет PostgreSQL работать медленнее? На примере одного из наших процессов я покажу, насколько сильно могут влиять друг на друга, казалось бы, несвязанные активности.
NoSQL Best Practices for PostgreSQL
Каждый специалист в области баз данных уже знаком с Jsonb - одной из самых привлекательный фич PostgreSQL, позволяющей эффективно использовать документо-ориентированный подход без необходимости жертвовать консистентностью и возможностью использования проверенных временем подходов реляционных баз данных. Но как именно устроен этот тип данных, какие он имеет ограничения, и какие опасности (a.k.a грабли) можно незаметно для себя получить при работе с ним? В докладе мы обсудим все эти вопросы, преимущества и недостатки использования Jsonb в различных ситуациях в сравнении с другими существующими решениями.
PostgreSQL worst practices
This talk is prepared as a bunch of slides, where each slide describes a really bad way people can screw up their PostgreSQL database and provides a weight - how frequently I saw that kind of problem. Right before the talk I will reshuffle the deck to draw ten random slides and explain you why such practices are bad and how to avoid running into them. ...
Как тестировать производительность гиперковергентных систем?
Как не остаться с носом при выборе гиперконвергентной системы под свои задачи? Вендоры заявляют линейность роста производительности, но они много чего заявляют. Даже рисуют красивые графики, под которыми есть три страницы мелким шрифтом. ...
Подробно о том, как Causal Consistency реализовано в MongoDB
При использовании Eventually Consistent распределенных баз данных нет гарантий, что чтение возвращает результаты последних изменений данных, если чтение и запись производятся на разных узлах. Это ограничивает пропускную способность системы. Поддержка свойства Causal Consistency снимает это ограничение, что позволяет улучшить масштабируемость, не требуя изменений в коде приложения. ...
PostgreSQL Configuration for Humans
PostgreSQL is the world’s most advanced open source database. Indeed! With around 270 configuration parameters in postgresql.conf, plus all the knobs in pg_hba.conf, it is definitely ADVANCED! ...
Новые технологии репликации данных в PostgreSQL
Из этого доклада вы узнаете о возможностях репликации и автофейловера PostgreSQL, в том числе о возможностях, ставших доступных в PostgreSQL 10. Среди прочих, будет затронуты следующие темы: * Виды репликации и решаемые с ее помощью проблемы. * Настройка потоковой репликации. ...
Производительность мобильных приложений
Реализация системы отслеживания заказов на примере сети ресторанов Якитория
Я расскажу, как мы реализовывали отслеживание заказов для Якитории, что предполагали сделать, и что получилось в итоге. Сбор данных, подводные камни и невозможность наивного подхода вида "а давайте просто показывать машинки по этим координатам". Обработка полученных координат - начальная фильтрация, привязка к улицам, постобработка. ...
Анализ производительности мобильных приложений с помощью Firebase Performance Monitoring
В большинстве случаев измерения производительности мобильных приложений осуществляются в "лабораторных условиях" - на эмуляторах, устройствах разработчиков, в лучшем случае на наборах наиболее популярных устройств. Зачастую это абсолютно неэффективно, так как "лабораторные" показания совершенно не дают представления о производительности приложений в реальных условиях. В докладе рассмотрим: - почему необходимо замерять производительность на реальных данных (почему подход "а у меня не тормозит" не работает в scale или почему проблему "приложение стартует 30 секунд" невозможно определить на тестовом устройстве); - обзор Firebase Performance Monitoring в целом, параметры, которые собираются автоматически; - какие стоит создавать метрики и какие не стоит (тут, в частности, про открытие БД, апдейт БД, работа с файловой системой), ключевые точки приложения с точки зрения performance (login, открытия документов, создание контента на клиенте и т.д.). ...
BigData и машинное обучение
Как создать дата-платформу с нуля
На определенной стадии развития компании появляется необходимость собирать, анализировать и принимать решения, исходя из данных. Причин может быть много: аналитика для BI, внедрение машинного обучения в сервисы, поставка данных заказчику. Для успешного решения задач ML необходимо решить проблемы: 1) сбора данных в real-time с внутренних (и не только) источников; 2) хранения и агрегации этих данных; 3) обработки и принятия решений на основе моделей машинного обучения, используя данные пришедших несколько секунд назад; 4) поставлять данные в другие системы (BI, CRM). ...
Машинное обучение в электронной коммерции - практика использования и подводные камни
Анализ, проектирование, разработка и эксплуатация моделей предиктивной аналитики в Битрикс24. В докладе расскажем, как мы создали несколько хайлоад-моделей для предсказания платных клиентов, потенциальной прибыли клиентов и клиентов, вероятно покидающих сервис. Поделимся опытом выбора алгоритмов, библиотек, тонкой настройки моделей в Spark MLib, фильтрации и обработки бигдаты на кластерах Spark в Amazon Web Services и всем тем, что необходимо для доведения "предиктивных" моделей до работающего при высоких нагрузках сервиса. ...
Gobblin как ETL-фреймворк
В своем докладе расскажу об ETL, как об общем классе задач извлечения, подготовки и доставки данных. Поймем, какую нишу ETL занимает в мире BigData, какие существуют подходы и инструменты для операций над большими данными и какие требования могут к ним предъявляться. Разберемся с тем, что такое Gobblin, открою нашу историю успеха по его внедрению и применению в отделе машинного обучения Rambler&Co, а также решаемые им задачи. ...
Поиск паттернов (Data Mining: Pattern Discovery)
Паттерн — это повторяющаяся структура в данных. Это может быть подмножество, подстрока, подпоследовательность, последовательность или множество подстрок, подграф, элемент изображения или видео-фрагмент. Чаще всего находят все достаточно часто встречающиеся паттерны в датасете и сортируют их по частоте появления. ...
Lambda architecture для realtime-аналитики - риски и преимущества
В 2017 построить аналитику на больших данных - это уже не достижение. Витрины, отстающие на день - уже старые. Отставание на час - неплохо. ...
Вычисляем по IP: как бороться со спамом в социальной сети
Badoo — социальная сеть знакомств и очень привлекательное место для спамеров и мошенников, нигерийских принцев и разносчиков adult-контента. В докладе будет рассказ о том, почему вы не найдете этих персонажей на нашем сервисе, как классифицировать миллиарды действий пользователей и выявлять спам в реальном времени, как мы используем модели машинного обучения и избавляемся от ложных срабатываний. Поговорим про обряды выявления порчи на IP-адресе, проклятия на устройстве или отворота на номере телефона. ...
BigПочта: как мы строили DataLake в Почте России
Мы планируем поделиться с аудиторией примером SuccessStory создания BigData-инфраструктуры (Hadoop) в Почте России. Мы расскажем про выбранные решения, мотивацию их выбора, а также про то, куда развивается продукт в Почте. Доклад будет интересен всем проектам и компаниям, где только задумываются о развитии BigData-технологий, а также всем, кому интересно узнать, как устроена "внутри" современная Почта. ...
Управление командой разработки (тимлиды)
Схематизация в практике решения управленческих задач
Схематизация - это система нахождения ответа на каждодневные управленческие задачи. Она дает возможность "выгрузить" на бумагу то, что конфликтует, находясь в нашей оперативной памяти, найти модель решения и выработать план реализации. Тезисы: • Схема: графическое изображение смысла текстов. ...
Как стать тимлидом
У каждого, наверное, есть свое мнение насчет того, кто такой тимлид. В разных компаниях под этим понятием подразумеваются разные обязанности. У нас в компании мы строим институт тимлидов уже не первый год, набили множество шишек и сделали много выводов. ...
Как общаться с подчиненными и оставаться друзьями
Самый большой вызов для специалиста, ставшего вдруг руководителем, да еще над своими коллегами и друзьями - это как совместить дружеские отношения и требовать результаты, ведь теперь он отвечает не только за себя, но и за всю команду! Это очень не просто! Никакой эмоциональный интеллект и авторитет в одночасье не прокачаешь. ...
Как выбирать тимлидов на разных этапах роста компании
Я возглавляю компанию, в которой работает 75 человек. Понятно, что 75 их стало не сразу, и почти все здесь начинали с того, что двое-трое друзей "на коленке" поднимали бизнес, который позже стал крупным и успешным. Но есть и те, кто посыпался именно на этапе роста – только из-за того, что не смогли уйти от «дружеской» схемы организации работы. ...
Goth2Boss: ломка и отходняки при переходе из инженера в тимлиды
11 лет я руковожу... руководителями. Они не достаются и не приходят. ...
Вся власть Советам или комитетная разработка в тестировании
Это менеджерский доклад. Это доклад о развитии маленького отдела тестирования в развивающемся на манер большого взрыва стартапе, который начался пару лет назад и теперь стал большим отделом тестирования и уже не стартапом, а в крупном ecommerce-проекте - Lazada. Я расскажу о тех проблемах, с которыми столкнулись именно мы в специфике азиатского бизнеса. ...
Как убить технаря в руководителе
В IT линейных руководителей и тимлидов традиционно набирают из лучших инженеров. Мы знаем лучше всех, как нужно сделать, поэтому нас и назначили. Беда, что теперь наша работа состоит совсем в другом: управлять людьми и взаимодействовать с другими командами и организациями. ...
Откровенное интервью с эйчаром
- Когда IT-компании нужен свой HR, HR-директор, HR-партнер, и с чего начать работу? - Роли HR в IT-компании, о которых Вы не знали. - Что может сделать HR для развития тимлидов в компании? ...
Сопротивление в работе команды и его «симпатичные» сценарии, приводящие развитие команды в тупик
- Почему коллеги начинают смотреть косо, когда ты становишься тимлидом. - Всегда ли работает модель руководства в стиле «папа». - Почему мы всегда готовы бороться с системой? ...
Как построить хороший performance review: опыт Badoo
Многие инженеры нервно кривят лицо, когда слышат слова «оценка производительности работы». Кто-то вспоминает слухи о разнарядках Microsoft, кто-то – бессмысленные длиннющие формы, которые приходится заполнять раз в год по указке сверху. - Менеджерская мутотень! ...
Круглый стол "Что ожидает CEO от работы тимлида, и что бы хотел тимлид от своего CEO"
В Круглом столе будут участвовать: - Денис Кочергин, «Ярмарка мастеров», - Кирилл Новиков, Kodix, - Сергей Рыжиков, 1С Битрикс, - Константин Чумаченко, NGENIX. Круглый стол, посвященный разнице в ожиданиях между высшим руководством и теми, кто непосредственно руководит производственным процессом в IT - тимлидами, PM, руководителями разработки. С одной стороны есть претензии к качеству и ответственности, с другой - непонимание смыслов и перегруженность. ...
СТО: мечты сбываются?
В инженерных кругах бытует мнение (да и сам я был склонен так думать в своё время), что всю работу выполняют инженеры, ну, в крайнем случае, менеджеры. Эта мысль преследовала меня, когда я сам был инженером. Потом я стал начальником группы, менеджером проектов, и, что греха таить, ситуация сильно не изменилась. ...
Как я был тимлидом, а теперь – руководитель направления
В докладе я расскажу о двух темах: как выглядит рост из тимлида в руководителя отдела, и как выбирать тимлида себе на замену, помогать ему становиться эффективным. Выступление основано только на моем опыте работы с двумя командами: Mobile Web и Desktop Web. Возможно, вы уже читали мой пост на Хабре (https://habrahabr.ru/company/badoo/blog/326230/) о том, как из разработчика я вырос в тимлида, но это мое выступление будет чуть более высокого уровня. ...
Всё, что тимлид должен знать о найме и увольнении
Чтобы управлять программистами, нужно понимать их мотивацию. Как "сегодняшнюю" - почему я хочу в проект? Так и глобальную – а что я буду хотеть завтра, удовлетворит ли меня эта работа? ...
Найти себя в хаосе: осознанное развитие IT-профессионалов
Я расскажу о реальных практиках крупнейшей IT-компании России. 1. От контроля к доверию: уход от KPI и бонусов. ...
Менеджмент крупных проектов
Управление разработкой Big Data платформы Почты России: как мы пришли к открытой экосистеме
В этом докладе я расскажу, как BigData-платформа помогает трансформировать Почту России, как мы управляем построением и развитием платформы. Расскажу про найденные удачные решения, например, как разбиение на продукты с понятными SLA и интерфейсами между ними помогло нам сохранять управляемость с ростом масштабов проекта. Вместе пройдем путь развития проекта от startup-стадии, обсудим болезни роста, набитые шишки, сделанные выводы. ...
Команда как высоконагруженная система
На примере важных задач организации команды разберем, как их можно решить, имея опыт разработчика, но не управленца. Перенесем опыт и знания из пространства разработки программного обеспечения в пространство управления командой и тем самым решим новую задачу проверенным способом. * Как с помощью "load balancing" разгрузить перегруженного тимлида? ...
Внутренний open-source. Как разрабатывать мобильное приложение большим количеством разработчиков, не потеряв в качестве
Количество разработчиков мобильных приложений Сбербанк Онлайн с начала 2016 года выросло на порядок. Для того чтобы продолжать выпускать качественный продукт, мы кардинально перестраиваем процесс разработки. Количество внутренних заказчиков тех или иных доработок в какой-то момент выросло настолько, что разработчики стали узким местом. ...
Искусство предсказания: как давать более точные оценки времени проекта
Agile у вас или Waterfall, но давать оценки по времени проекта разработки ПО приходится всем разработчикам. Клиенты должны понимать, когда проекты будут закончены, и сколько денег нужно заложить в бюджет. Всем известны байки об излишнем оптимизме программистов. ...