Юлия Викторова; Александр Тарасов. DevOps без булшита.ScrumTrek
В своём докладе мы расскажем о том, что значит DevOps для нас, и как мы его готовим в большой организации со всеми её ограничениями, проблемами и челленджами как с технической, так и менеджерской точек зрения. Поделимся наработанным уникальным опытом в непростых вопросах: а зачем банку вообще нужен DevOps? как поставить более-менее правильные цели и продать это себе, своим коллегам, начальнику и бизнесу? Какие метрики нужно поставить, и попробуем разобраться есть ли в метриках счастье? Покажем, какие метрики были для нас окошком в Нарнию, и что в итоге получилось, расскажем про трансформацию людей и те инженерные практики, которые мы применяем (парная работа, тотальный кодинг, TDD, Infrastructure as a Code, API самообслуживания и т.д.), ответим на вопросы о том, что это за команда DevOps: какие грабли точно подстерегают нас, и как не наступать на них
Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...ScrumTrek
Интерактивный мастер-класс, где будет разобрано 8 типичных, но очень не простых для любого руководителя ситуаций. 1. Провокация. 2. Продажа. 3. Жизнь после релиза. 4. Конфликт с дизайнером (я — художник, я так вижу) 5. Конфликт с программистом: требования говно! 6. Интеграция по центрирующим парадигмам 7. Учимся говорить "НЕТ!" 8. Рабочие запахи
Software craftsmanship фиксит проблемы AgilePavel Veinik
На 6м митапе мы подойдем к проблеме говна со стороны команды и процессов, а не со стороны технологий и архитектуры, и рассмотрим поближе, чем и как нам могут помочь принципы Software Craftsmanship. Мы увидим, что суть всех процессов - это коммуникации, а суть коммуникации - это настроенные каналы передачи информации. Мы рассмотрим, как настраивать эти каналы передачи информации, и увидим, что процессы - это отношения между людьми, прописанные на бумаге.
DevOps и системы управления конфигурацией. SECON 2015Ivan Evtukhovich
Что такое DevOps, зачем он нужен, что включается в это понятие. Что такое Continuous Delivery, системы управления конфигурацией, сравнение Chef и Ansible.
Как сделать свой SDK и первые 50 расширений от подпольных технологий к интегр...Ontico
Выпуск коробочного продукта — это всегда компромисс между количеством новых фичей, их качеством и длиной релиз цикла. И всегда есть фичи для ограниченной аудитории или просто эксперименты. Популярное решение в такой ситуации — возможность написания плагинов к продукту. Но для написания плагинов нужно иметь мощное SDK у самого продукта. В Plesk мы назвали такие плагины расширениями (extension), реализовали SDK и создали свой каталог.
В докладе я расскажу:
- как мы разрабатывали свой SDK и каталог расширений;
- через что мы прошли, чтобы выйти на рынок;
- как мы публикуем расширения наших партнёров и вендоров, и какие расширения никогда не попадают в каталог;
- какими были наши первые расширения, и каким каталог стал после 2 лет от официального запуска;
- каким мы видим будущее нашего каталога расширений.
Agile мёртв (!|?) / Александр Сидоров (Яндекс)Ontico
Недавно вышла статья "Agile мёртв" (https://www.linkedin.com/pulse/agile-dead-matthew-kern).
Мне хотелось бы рассказать о том, почему, на мой взгляд, это признак взросления agile и отрасли IT в целом.
О том, почему agile могут называть мёртвым, как это может быть связано с ожиданиями и границами применения, а также о недостатках при внедрении и использовании, из-за которых agile-методологии могут быть дискредитированы и нарушать собственные принципы.
О том, чего касаются распространённые методологии, которые относят к agile, чего не описывают, а в чём могут вводить в заблуждение.
О том, в чём они полезны, где может быть их место в различных уровнях работы над проектами, какие отдельные инструменты и практики agile приживаются и приносят пользу, а также каких принципов полезно придерживаться при внедрении и работе с ними.
Подход и инструменты измерения эффективности процесса разработки или как держ...HOWWEDOIT
— Как понять, что процесс разработки эффективен и на что опираться при изменении процессов.
— Как определить узкие места технической команды и посчитать ее эффективность.
— Удобные инструменты сбора, хранения и визуализации данных.
Картинки к моему рассказу о том, что такое фреймворки и с чем их едят, что лучше не есть и как выбрать приправы для приготовления. Тезисы тут: http://backendconf.ru/2016/abstracts/2123.html
Поговорим о неотъемлемой составляющей большого числа современных веб-проектов — о фреймворках.
Рассмотрим следующие темы и поищем ответы на вопросы:
1) Что такое фреймворк, и зачем их пишут.
2) Почему для некоторых языков их десятки, а для некоторых — единицы.
3) В чём плюсы и минусы применения.
4) Наиболее распространённые мифы.
5) Использовать или нет — примеры из жизни.
6) Как выбрать из множества доступных вариантов, на что стоит обратить внимание.
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2991.html
Нынче стало модно выделять UI-компоненты в отдельную библиотеку и использовать её в нескольких проектах. Мы в команде почты Mail.ru делаем так же, но столкнулись с проблемой: каждый разработчик, меняя библиотеку под свои нужды, обязательно ломает что-нибудь, что работало у других.
Я расскажу о том, как мы решили эту проблему, и о том, какие инструменты для этого можно использовать. Storybook, BackstopJS, Jest, Webdriver.io, TypeScript - в их числе.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
Сегодня очень часто можно услышать множество модный словечек, но даже среди них девопс и микросервисы будоражат умы людей как то по особенному.
Для обычного инженера DevOps и Микросервисы – это всего лишь маркетинговая профанация. Куда важнее “держать DevOps в своих руках” и уметь им пользоваться. Хочется понять где заканчиваются наши и чужие фантазии, где начинаются реально полезные практики, какие инструменты нам помогут и какие фундаментальные принципы помогут увеличить профит от используемых практик и инструментов.
Доклад в первую очередь про внедрение различных технологий, инструментов и методологий в большой организации. Поделюсь проблемами с которыми мы столкнулись при внедрении различных принципов и технологий, расскажу о решениях и выработанных принципах масштабирования процессов/инструментов.
Сегодня наш лозунг будет “DevOps в руках а не в головах”. Но то что в головах всё же важно, хоть это и совсем другая история.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2867.html
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
В своем докладе я расскажу про архитектуру фронтенда (и так называемого миддленда) в ЦИАН: какие задачи перед нами стояли, что мы решили, где мы находимся сейчас и с какими проблемами мы столкнулись.
Glib Rybalko, GlobalLogic’s Test Lead, consultant and trainer was among 26 known Ukrainian and international experts who took a word on IT Weekend Ukraine 2013. Glib discussed features of automated software testing, benefits and feasibility of using this approach on various projects. During his speech, Glib pointed all necessary steps of automated testing implementation and gave homework for those who were interested in this field and wanted to implement it in their projects.
Попытка рассказать и понять, что же такое микросервисы, зачем они нужны или не нужны, как они связаны с архитектурой и.т.д. Все это происходит в атмосфере бесконечного выбора технологий и осознания зачем этот выбор делается. Так же вас ждет пример :)
В программе:
- Немного истории. SOA и закон Конвея
- Принцип LSD
- Парадокс децентрализации
...
- Примеры
It talk №23: "Если не Scrum, то что?", Екатерина ШалапановаMarina Peregud
Докладчик: Екатерина Шалапанова, деливери-менеджер финансовой практики DataArt, Петербург
О чем пойдет речь:
Что делать:
Если ваш заказчик не подписывал Agile Manifesto и не читал Scrum Guide?
Если в итерацию врываются сверхсрочные задачи?
Если бизнес-процессы не позволяют регулярные релизы?
Идеологи Scrum создавали процесс для небольших вовлеченных и нацеленных на результат команд. Что же делать, если вам приходится работать с корпорациями?
Процесс приходится строить заново, беря все самое лучшее и подстраиваясь под нужды и возможности любимых клиентов.
Я расскажу, какие подходы мы используем при создании процесса разработки, что, по моему опыту, важно, а чем можно пренебречь, ну, и обязательно о чем-нибудь еще.
Similar to Учебный день конференции HighLoad++ 2013 (20)
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2964.html
Одноклассники состоят из более чем восьми тысяч железных серверов, расположенных в нескольких дата-центрах. Каждая из этих машин была специализированной под конкретную задачу - как для обеспечения изоляции отказов, так и для обеспечения автоматизированного управления инфраструктурой.
...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/3032.html
Протокол DNS на семь лет старше, чем Всемирная паутина. Стандарты RFC 882 и 883, определяющие основную функциональность системы доменных имён, появились в конце 1983 года, а первая реализация последовала уже годом позже. Естественно, что у технологии столь старой и при этом по сей день активнейшим образом используемой просто не могли не накопиться особенности, неочевидные обыкновенным пользователям.
...
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
HighLoad++ 2017
Зал «Калининград», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/3010.html
В этом докладе я расскажу, как BigData-платформа помогает трансформировать Почту России, как мы управляем построением и развитием платформы. Расскажу про найденные удачные решения, например, как разбиение на продукты с понятными SLA и интерфейсами между ними помогло нам сохранять управляемость с ростом масштабов проекта.
...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2854.html
Из этого доклада вы узнаете о возможностях репликации и автофейловера PostgreSQL, в том числе о возможностях, ставших доступных в PostgreSQL 10.
Среди прочих, будет затронуты следующие темы:
* Виды репликации и решаемые с ее помощью проблемы.
* Настройка потоковой репликации.
* Настройка логической репликации.
* Настройка автофейловера / HA средствами Stolon и Consul.
После прослушивания доклада вы сможете самостоятельно настраивать репликацию и автофейловер PostgreSQL.
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/3096.html
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!
How many parameters do you tune? 1? 8? 32? Anyone ever tuned more than 64?
No tuning means below par performance. But how to start? Which parameters to tune? What are the appropriate values? Is there a tool --not just an editor like vim or emacs-- to help users manage the 700-line postgresql.conf file?
Join this talk to understand the performance advantages of appropriately tuning your postgresql.conf file, showcase a new free tool to make PostgreSQL configuration possible for HUMANS, and learn the best practices for tuning several relevant postgresql.conf parameters.
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/3115.html
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.
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2957.html
Расскажем о нашем опыте разработки модуля межсетевого экрана для MySQL с использованием генератора парсеров ANTLR и языка Kotlin.
Подробно рассмотрим следующие вопросы:
— когда и почему целесообразно использовать ANTLR;
— особенности разработки ANTLR-грамматики для MySQL;
— сравнение производительности рантаймов для ANTLR в рамках задачи синтаксического анализа MySQL (C#, Java, Kotlin, Go, Python, PyPy, C++);
— вспомогательные DSL;
— микросервисная архитектура модуля экранирования SQL;
— полученные результаты.
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3114.html
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. We will then describe multiple use case scenarios in which ProxySQL empowers large MySQL installations to provide HA with zero downtime, read/write split, query rewrite, sharding, query caching, and multiplexing using SSL across data centers.
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2954.html
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?
What is GTID in MySQL and MariaDB and why do you want to use them?
What is semi-sync replication and how is it different from lossless semi-sync?
...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 12:00
Тезисы:
http://www.highload.ru/2017/abstracts/3120.html
Количество разработчиков мобильных приложений Сбербанк Онлайн с начала 2016 года выросло на порядок. Для того чтобы продолжать выпускать качественный продукт, мы кардинально перестраиваем процесс разработки.
Количество внутренних заказчиков тех или иных доработок в какой-то момент выросло настолько, что разработчики стали узким местом. Мы внедрили культуру разработки, которую можно условно назвать "внутренним open-source", сохранив за собой контроль над архитектурой и качеством проекта, но позволив разрабатывать новые фичи всем желающим.
...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2836.html
При использовании Eventually Consistent распределенных баз данных нет гарантий, что чтение возвращает результаты последних изменений данных, если чтение и запись производятся на разных узлах. Это ограничивает пропускную способность системы. Поддержка свойства Causal Consistency снимает это ограничение, что позволяет улучшить масштабируемость, не требуя изменений в коде приложения.
...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/2858.html
Аудитория Одноклассников превышает 73 миллиона человек в России, СНГ и странах дальнего зарубежья. При этом ОК.ru - первая социальная сеть по просмотрам видео в рунете и крупнейшая сервисная платформа.
Качественный и количественный рост DDoS-атак за последние годы превращает их в одну из первоочередных проблем для крупнейших интернет-ресурсов. В зависимости от вектора атаки “узким” местом становится та или иная часть инфраструктуры. В частности, при SYN-flood первый удар приходится на систему балансировки трафика. От ее производительности зависит успех в противостоянии атаке.
...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/3008.html
Никогда не было и вот снова случилось! Компания Google в результате перенаправления трафика сделала недостпуными в Японии несколько тысяч различных сервисов, большинство из которых никак не связано с самой компанией Google. Однако, подобные инциденты происходят с завидной регулярностью, вот только не всегда попадают в большие СМИ. У таких инцидентов могут быть разные причины, начиная от ошибок сетевых инженеров и заканчивая государственным регулированием.
...
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2925.html
Облака и виртуализация – современные тренды развития IT-технологий. Операторы связи строят свои TelcoClouds на стандартах NFV (Network Functions Virtualization) и SDN (Software-Defined Networking). В докладе начнем с основ виртуализации, далее разберемся, для чего используются NFV и SDN, потом полетим к облакам и вернемся на землю для решения практических задач!
...
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
HighLoad++ 2017
Зал «Мумбай», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/3045.html
Как мы заставили Druid работать в Одноклассниках.
«Druid is a high-performance, column-oriented, distributed data store» http://druid.io.
Мы расскажем о том, как, внедрив Druid, мы справились с ситуацией, когда MSSQL-based система статистики на 50 терабайт стала:
- медленной: средняя скорость ответа была в разы меньше требуемой (и увеличилась в 20 раз);
- нестабильной: в час пик статистика отставала до получаса (теперь ничего не отстает);
- дорогой: изменилась политика лицензирования Microsoft, расходы на лицензии могли составить миллионы долларов.
...
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2905.html
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров.
...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2913.html
Изначально будут раскрыты базовые причины, которые заставили появиться такой части механизма СУБД, как кэш результатов, и почему в ряде СУБД он есть или отсутствует.
Будут рассмотрены различные варианты кэширования результатов как sql-запросов, так и результатов хранимой в БД бизнес-логики. Произведено сравнение способов кэширования (программируемые вручную кэши, стандартный функционал) и даны рекомендации, когда и в каких случаях данные способы оптимальны, а порой опасны.
...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2947.html
Apache Ignite — Open Source платформа для высокопроизводительной распределенной работы с большими данными с применением SQL или Java/.NET/C++ API. Ignite используют в самых разных отраслях. Сбербанк, ING, RingCentral, Microsoft, e-Therapeutics — все эти компании применяют решения на основе Ignite. Размеры кластеров разнятся от всего одного узла до нескольких сотен, узлы могут быть расположены в одном ЦОД-е или в нескольких геораспределенных.
...
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 12:00
Тезисы:
http://www.highload.ru/2017/abstracts/3005.html
Когда мы говорим о нагруженных системах и базах данных с большим числом параллельных коннектов, особый интерес представляет практика эксплуатации и сопровождения таких проектов. В том числе инструменты и механизмы СУБД, которые могут быть использованы DBA и DevOps-инженерами для решения задач мониторинга жизнедеятельности базы данных и ранней диагностики возможных проблем.
...
2. Структура лекции
Первый блок:
•
•
•
•
•
•
Знакомство;
Цель обучения;
Принципы масштабируемости;
Архитектурные решения;
Виды масштабирования;
Трёхзвенная структура.
Второй блок:
• Архитектурные паттерны;
• Алгоритм проектирования высоконагруженных систем.
Третий блок:
• Примеры: профили на сайте знакомств, новостной сайт, френдлента;
Если успеем:
• Ошибки в разработке высоконагруженных систем;
• Хаки;
• Эксплуатация.
2
4. Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;
4
5. Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;
• Руководитель компании по разработке и консалтингу в области
высоконагруженных проектов;
5
6. Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;
• Руководитель компании по разработке и консалтингу в области
высоконагруженных проектов;
• Руководитель отдела веб-разработки компании Рамблер (ещё
тогда, когда Рамблер был номером один);
6
8. Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
8
9. Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
9
10. Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?
10
11. Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?
миллион в сутки?
11
12. Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?
миллион в сутки?
10 миллионов в сутки?
12
13. Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
13
14. Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?
14
15. Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?
более, чем на пяти выделенных серверах?
15
16. Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?
более, чем на пяти выделенных серверах?
более, чем на двадцати выделенных серверах?
16
18. Цель нашей встречи
• Состоит в том, чтобы вы глубоко начали понимать смысл
происходящего в вашим программным кодом;
• Знание нескольких принципов заменяет знание множества
фактов;
18
20. В чём суть репликации?
Запись
Мастер
Слейв
Репликация
Слейв
Слейв
Чтение
20
21. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
21
22. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
22
23. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
23
24. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;
24
25. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;
• Отсутствие консистентности данных;
25
26. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;
• Отсутствие консистентности данных;
• Слишком много слейвов;
26
27. Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
•
•
•
•
Записей больше, чем чтения;
Отсутствие консистентности данных;
Слишком много слейвов;
Слишком много данных;
27
29. Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
29
30. Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;
30
31. Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;
• Если количество промахов составляет:
•
•
•
•
10% -> кеш ускоряет выполнение приложения в 3.3 раза;
40% -> кеш ускоряет выполнение приложения в 1.7 раз;
80% -> кеш не приносит пользы;
90% -> кеш замедляет выполнение приложения.
31
32. Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;
• Если количество промахов составляет:
•
•
•
•
10% -> кеш ускоряет выполнение приложения в 3.3 раза;
40% -> кеш ускоряет выполнение приложения в 1.7 раз;
80% -> кеш не приносит пользы;
90% -> кеш замедляет выполнение приложения.
• Вы знаете своё соотношение hit/miss?
32
34. Индексы полезны?
• Индекс – это возможность по значению столбца или группы
столбцов быстро найти весь кортеж, всю строку в базе данных;
34
35. Индексы полезны?
• Индекс – это возможность по значению столбца или группы
столбцов быстро найти весь кортеж, всю строку в базе данных;
• Каждый индекс:
• замедляет выполнение операции вставки строки;
• увеличивает количество требуемой оперативной памяти;
• усложняет работу планировщика запросов.
35
36. Индексы полезны?
• Нужно учитывать селективность индекса;
• Индексы с низкой селективностью, не просто бесполезны, они
вредны;
36
38. Основная логика масштабируемости
• Рано или поздно в процессе оптимизации мы упираемся в
производительность аппаратного обеспечения;
• Значит надо сделать так, чтобы задачу можно было выполнять
одновременно на нескольких машинах;
• Это легко сделать в парадигме запрос-ответ, в которой работает
веб;
Как нужно учитывать будущее масштабирование?
38
42. Сервис-ориентированная архитектура
Каждый сервис решает строго определенную задачу.
Основной минус этого подхода заключается в наличии
оверхеда на интеркоммуникацию сервисов между собой и на
обработку API взаимодействия между слоями.
44. Монолитное приложение
Приложение представляет из себя монолитный программный код.
Плюсы:
• Отсутствие какого-либо оверхеда на интеркоммуникацию сервисов;
Минусы:
• Высокая сложность разработки;
• В случае проблемы встает все;
• Невозможность вести распределенную разработку.
47. Ремесленный подход
• Быстрая разработка любых новых решений;
• Высокие требования к квалификации разработчиков – низкая
масштабируемость разработки;
• Максимально эффективное использование технологий и
аппаратного обеспечения;
50. Промышленный подход
• Очень долгая разработка общих инструментов;
• Очень быстрая разработка приложений – происходит сборка
страниц как в конструкторе Lego;
• Возможность использовать для разработки приложений
программистов средней и низкой квалификации – высокая
масштабируемость разработки;
• Повышенные требования к аппаратному обеспечению;
57. Масштабирование “во времени”
Различные данные имеют различные требования к
обновлению. Это позволяет нам отложить часть обработки
данных до более удобного случая.
72. Очереди
Структура данных с дисциплиной доступа к элементам FIFO (First In
First Out).
Применения:
1. Отложенная обработка (рассылки, обновления лент новостей);
2. Межсервисная коммуникация;
73. Очереди: модерация
Резервный датацентр
Erang-фронтенд
Erlang-фронтенд
Erlang-фроненд
Фронтенд для
модератора
Удаление
сообщений
SQL
Заявки на удаление
сообщений
БД
БД
БД
Входящий
Rabbit MQ
SQL
Очередь на удаление
отмодерированных
комментариев
Копии всех обновлений
SQL
Исходящий
Rabbit MQ
Этот сервер очередей должен стоять
на стороне кластера фронтендов для
того, чтобы в случае пропадания
связи с резервным ДЦ информация
никуда не потерялась.
Приложение,
обновляющее SQL
и считающая кучу
статистики
74. Интеркоммуникация сервисов
Задача: необходимо уведомлять одни части системы о событиях,
которые происходят в других частях:
• размещение информации в пользовательских лентах (feeds) о
событиях, произошедних в сообществах;
• лайки;
• комментарии;
• рассылка писем;
75. Интеркоммуникация:
решение с очередью
Пользователи
Пользователи
Всегда быть готовым
к дублированию
задач в очереди
Постинг поста
Сервис постов
Синхронная
постановка в
очередь
Очередь
Репликация или Heart beat
Синхронная запись в
базу данных
Репликация
очереди
Постоянная
база данных
Если очередь
сломалась –
переставляем
задачи по
постоянной
базе
сообщений
Разборщик
очереди
76. Интеркоммуникация: решение с очередью
Это могут быть те же
сервера, что и
обрабатывают запросы от
фронтендами
Входящие Httpсервера сервиса Б
Сервис A
Внутренняя
очередь
сервиса А
Раздающий демон
сервиса А
Внутренняя
очередь
сервиса Б
Сервис Б
Сервис Б
Входящие Httpсервера сервиса Б
Сервис A
Обработка задач
сервиса А
Входящие Httpсервера сервиса Б
Забираем задачи
Push сообщений из
сервиса А во все
остальные сервисы
Сервис Б
Прием задач для
сервиса Б
Обработка задач
сервиса Б
78. Антишквал
Фронтенд
Первый запрос
Первый бекенд не ответил,
переходим ко второму
Сервис
Сервис
Ряд серверов-бекендов, выполняющих
однотипные задачи.
Запрос приходит на первый бекенд,
начинает выполняться, но не успевает за
время таймаута.
Фронтенд или толстый клиент
перебрасывает запрос на новый бекенд,
тот тоже не успевает.
Таким образом очень быстро вся сеть
бекендов будет положена.
79. Антишквал: умные запросы
Умные запросы от фронтенда:
Фронтенд
Фронтенд
Фронтенд
Третий запрос,
Timeout = 3с
Первый запрос,
Timeout = 1с
Сервис
Второй запрос,
Timeout = 2с
Сервис
Фронтенд
Четвертого запроса
просто нет.
• Первый запрос к первому бекенду идет с
таймаутом 1 секунду. Второй запрос идет с
таймаутом 2 секунды, третий - 3 секунды,
а четвертого уже нет. То есть ограничиваем
количество запросов;
• Бекенд может принимать решение о том,
что он перегружен (раз в секунду
спрашивать LA и кэшировать его). При
начале обработке запроса происходит
проверка и если LA слишком высокий отдаем фронту Gone Away (штатная
ситуация - перейди к другому бекенду).
Сервис
Сервис
82. Кеширование на бекенде;
Кеш
•
•
•
•
Единый кеш для всех бекендов;
Проблема инвалидации кеша;
Проблема старта с непрогретым кешем;
Целесообразность применения кеша;
Бекенд
Бекенд
Бекенд
86. Шардинг
Базовый принцип: те данные, которые в дальнейшем потребуются вместе, так же
должны храниться вместе.
Примеры:
1. Пользователи;
2. Посты в сообществах;
3. Блоги;
Принципы разбиения данных на шарды:
1. Центральный диспетчер, знающий, что где лежит;
2. Хэш-функция, по ключу вычисляющая шард;
3. Хэш-функция, по ключу вычисляющая виртуальный шард + таблица соответствий
виртуальных шардов реальным.
91. Репликация
Базы данных MongoDB
Push-сервер
Лог обновлений
MongoDB
Обновления слушаются с
одной из реплик
Реплики
MongoDB
AJAX-Соообщение об
обновлении
Репликация
Бекенд
Читаем с реплики
Бекенд
Чтение блога
Бекенд
Репликация
Реплики
MongoDB
Репликация
Публикация поста
Бекенд
Запись поста в блог
Мастер
MongoDB
Реплики
MongoDB
94. Функциональное разделение базы данных
Разные данные хранятся в разных таблицах
или
Разные данные хранятся в разных СУБД
или
Разные данные хранятся в разных типах СУБД
96. Денормализация данных
Денормализация — намеренное приведение структуры базы
данных в состояние, не соответствующее
критериям нормализации, обычно проводимое с целью
ускорения операций чтения из базы за счет добавления
избыточных данных.
101. Алгоритм, ШАГ ВТОРОЙ
Посчитаем объёмы хранимых данных и скорость их приращения. Выбираем
критический путь – хранение, запись или чтение данных?
101
109. Сайт знакомств, профили / #1
1. Пользователь заполняет анкету;
2. Получает логин пароль для доступа к своему личному кабинету;
3. Пользователи могут смотреть профили друг друга;
109
110. Сайт знакомств, профили / #2
1. Пользователей 200 миллионов;
2. Каждая анкета занимает 10 килобайт, то есть всего 2 000
гигабайт;
3. Хитов в день 5 миллиардов;
110
112. Сайт знакомств, профили / #4
1.
2.
3.
4.
Данные часто читаются, но редко меняются;
Все анкеты примерно одного размера;
У анкеты есть уникальный идентификатор;
Нет ярко выраженных лидеров;
112
119. Сайт знакомств, профили / результат
• Разбиваем весь массив пользователей на виртуальные шарды;
• Маппим виртуальные шарды на реальные шарды;
• Внутри каждого шарда реплицируем информацию для
отказоустойчивости
119
121. Задания на стажировку
• В двух абзацах и одной схеме описать различия в СУБД MySQL и
PostgreSQL;
• Предположить, какие особенности в оптимизации и архитектуре
накладывают из-за этого различия возникают;
• Результаты прислать на oleg.bunin@ontico.ru
121
124. Новости / #2
• Каждая новость примерно 10 килобайт;
• Мы вечно храним архив с даты основания СМИ – 2000 год;
• В день публикуется около 10 тысяч различных региональных и
федеральных новостей;
• Итого в год 3 миллиона 500 тысяч новостей, в год 35 гигабайт, за
20 лет – 700 гигабайт;
• Это крупнейшее СМИ, посещаемость – 10 миллионов человек в
сутки;
124
126. Новости / #4
• Количество чтений на несколько порядков превышает количество
записей;
• 99% запросов касаются последнего дня;
• 99,99% запросов касаются последней недели.
126
133. Новости / результат
• Кеширование для горячих новостей;
• Партиционирование новостей по дате – последние новости в
быстрой таблице;
• Избыточное хранение новостей – новость пишется сразу и в
горячую таблицу и в архивную, горячая раз в какое-то время
чистится;
133
135. Просмотр френдленты / #1
• У пользователя может быть сколько угодно друзей;
• Френдленту храним бесконечно долго;
135
136. Просмотр френдленты / #2
• В среднем у пользователя 100 друзей;
• Каждый пользователь в среднем пишет 3 поста в день;
• Каждый пост занимаем около 1 килобайта;
• Пользователей – 10 миллионов в сутки, но каждый пользователь
делает 100 хитов. Итого – миллиард запросов к френдленте в
сутки;
• В сутки генерируется 30 миллионов постов, 10 миллиардов
записей в год;
136
137. Просмотр френдленты / #3
• Допустимо, что пользователь увидит запись своего друга не
моментально, а с небольшой задержкой;
• Допустимо, что порядок записей не будет строго совпадать с
хронологическим;
137
138. Просмотр френдленты / #4
• 99% запросов приходятся на голову френдленты;
• У нас есть пользователи, которые в друзьях у миллионов
пользователей;
138
140. Просмотр френдленты / #5
Избыточность?
Каждому пользователю свой список записей в его френдленте? Это
же очень много – один триллион записей за год!
140
141. Просмотр френдленты / #5
Храним для каждого пользователя
ленту идентификаторов постов!
141
143. Просмотр френдленты / #5
Пользователь и его посты
лежат рядом
Сделайте составной идентификатор поста, пусть в него входит
идентификатор пользователя
143
144. Просмотр френдленты / #5
Достали список
идентификаторов постов
Как собрать ленту?
144
146. Просмотр френдленты / #5
Если вы круты, то можете попробовать
Параллельные вычисления
146
147. Просмотр френдленты / результаты
• Пользователи шардируются, рядом с пользователями лежат его
посты и его френдлента;
• В френдленте пользователя уже записаны идентификаторы
постов его друзей в порядке, близком к хронологическому;
• В идентификатор поста зашит ID пользователя, по которому мы
быстро определяем шард и забираем с него текст поста;
• За текстом поста у нас будет ходить JS-машина, работающая на
клиенте.
147
148. Запись френдленты / #5
А как посты попадают в
френдленту?
У нас ведь есть пользователи, которые в друзьях у миллионов?
148
155. Мониторинг
Вы должны с абсолютной точностью знать, что происходит в
системе.
• Мониторинг серверов;
• Мониторинг приложений;
• Мониторинг элементов приложений;
• Мониторинг показателей базы данных;
161. Буферизация в операционной системе
База данных
apache
nginx
Операционная система,
Сетевая подсистема
Электрический сигнал
Память
PHP
Операционная система,
дисковая подсистема
Диск
Сетевая карта
161
165. Задания на стажировку
• В двух абзацах и одной схеме описать различия в СУБД MySQL и
PostgreSQL;
• Предположить, какие особенности в оптимизации и архитектуре
накладывают из-за этого различия возникают;
• Результаты прислать на oleg.bunin@ontico.ru
165
168. Event-driven чат
Быстрый сервер
Node.JS или
phpDaemon
AJAX Long polling
Поток репликации
Основная база
MySQL
POST-запрос с сообщением
Быстрая база
MongoDB
Клиенты
Пишем постоянную версию
Основной сервер (PHPбекенд)
169. Лента новостей
Пользователь А
публикует запись
Сохраняем запись в
статичном постоянном
хранилище
Запись не
сохранилась
Нет
Этот процесс тоже можно
оптимизировать, группировать.
Сначала можно запросить
подробности по двум записям,
потом по четырем, потом по всем
оставшимся.
Постоянное
хранилище
Удачно?
Хранилище лент,
каждая лента =
список
идентификаторов
записей
Да
Удаляем (или не
коммитим) запись в
статичное хранилище.
Нет
Запрашиваем список
идентификаторов
записей из ленты B
Обрабатываем
идентификаторы и для
каждого из них
запрашиваем данные из
постоянного хранилища
Например,
RabbitMQ
Ставим в очередь З
задачу обновить ленты
подписчиков
пользователя А
Удачны обе
операции?
Пользователь B,
подписанный на
пользователя А, читает
свою ленту
Сервер
очередей
Да
Публикация произошла
успешно
Страница
построена
Пул процессов,
обслуживающих
очередь
Обновляем
соответствующие
списки
идентификаторов
170. Отдача
фотографии напрямую
с хоста
Database / 1
Backend / 1
По scp заливаем фотку (все варианты)
на один из серверов
MySQL
PHP + Limb
Backend / 2
Image Server / 1
nginx
Image Server / 2
nginx
User images
User images
PHP + Limb
Image Server / 3
nginx
После того, как nginx
полностью принял
фотографию, он
отправляет ее в
php-бекенд
User images
Frontend / 1
nginx
Backend / 3
Пишем в базу
данных метаинформацию
о фотографии
PHP + Limb
Демоны
Frontend / 2
nginx
memcached
Design images
Design images
Закачивание
фотографии
DNS-Балансинг
DNS-Балансинг
Пользователи
memcached
Хранение
бинарных
данных