Балансировка нагрузки и отказоустойчивость в ОдноклассникахOntico
Главная → Тезисы и презентации
Балансировка нагрузки и отказоустойчивость в Одноклассниках Системное администрирование
Доклад принят в Программу конференции
Никита Духовный
Одноклассники
Ведущий системный администратор в Одноклассниках. Начинал IT-карьеру разработчиком, занимался релиз инженерией, выбрал системное администрирование.
Возглавляет одну из команд. Занимается задачами, обеспечивающими работу портала - автоматизацией, запуском новых решений, поддержкой инфраструктуры. Ведёт несколько хардкорных проектов, в том числе - по повышению отказоустойчивости портала.
Тезисы
Проект Одноклассники начинал свою жизнь в одном датацентре.
С ростом популярности растёт и нагрузка. С ростом нагрузки открываются проблемы:
- Ни один, даже самый мощный, сервер больше не справляется в одиночку.
- Нагрузка растёт, а в датацентре нет места для нового оборудования.
- Падение датацентра безоговорочно приводит к даунтайму.
- Сетевой сбой выводит портал из строя.
- Пользователи в удалённых регионах страдают от низкой скорости.
Я без прикрас расскажу вам, как мы в Одноклассниках решаем эти проблемы. Поговорим о следующем:
- CDN - каким пользователям важен, его архитектура, устройство наших CDN-приложений, что происходит при авариях.
- Датацентры - почему мы используем три основных датацентра, где они расположены (и почему именно там), распределение пользовательского трафика между ними.
- Сеть - как и до чего мы балансируем трафик.
- Балансировщики - как мы используем LVS, почему (и в каких случаях) используем и другие решения. Что делаем с приложениями, которые нельзя ставить за балансировщик.
- Модули портала - о балансировке в нашем RPC протоколе, о том, что происходит с Одноклассниками при падении датацентра.
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)Ontico
HighLoad++ 2017
Зал «Москва», 8 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/3014.html
Мы планируем поделиться с аудиторией примером SuccessStory создания BigData-инфраструктуры (Hadoop) в Почте России. Мы расскажем про выбранные решения, мотивацию их выбора, а также про то, куда развивается продукт в Почте.
Доклад будет интересен всем проектам и компаниям, где только задумываются о развитии BigData-технологий, а также ��сем, кому интересно узнать, как устроена "внутри" современная Почта.
...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
+ 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
+ Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
+ Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
+ Лучшее ли место для тестирования production? Путь образа от сборки до Production.
+ baDocker: webUI своими руками: зачем и почему?
+ Как дать возможность управлять запущенными сервисами и их версиями разработчику.
+ Docker: мониторинг и анализ работающих контейнеров.
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Ontico
В этом докладе мы поделимся опытом, полученным в ходе масштабного проекта по миграции Avito между дата-центрами: как мы осуществляли планирование, подготовку и непосредственно переезд с переключением площадки.
Опишу общие особенности и специфику нашей миграции, "подводные камни" и неочевидные ограничения, с которыми приходилось справляться, в том числе, и в экстремальных условиях.
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Badoo Development
Доклад с Zabbix Meetup.
Рассказали про:
• Сколько инстансов используем, зачем, какая конфигурация и нагрузка, какие дополнительные тулзы используем.
• Деплой скриптов/конфигов/обновлении.
• Флоу появления новых сущностей в мониторинге: хостов, проверок, графиков в заббикс. Самописный дискавери (серверов, сервисов): почему свой и что он умеет.
• Штуки для удобства: нотификации на рабочий стол, быстрая навигация по графикам.
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Ontico
В докладе поделимся опытом построения комплексного процесса последовательного улучшения производительности информационных систем мобильного оператора, расскажем об используемых инструментах и компонентах (Oracle, Tarantool, Java, Jmeter и т.д.).
Особенность нашего оператора в том, что основной канал взаимодействия с клиентом - это мобильное приложение или web Личный кабинет, а не USSD команды и СМС, как у основной массы операторов. Данная особенность создает высокие требования к времени отклика и доступности сервисов и ставит перед нами целый ряд вопросов:
- Как достичь приемлемого времени отрисовки страниц (не более 2х секунд) и не "уронить" backend при увеличении кол-ва абонентов в несколько раз за год до 4х миллионов?
- Как обеспечить приемлемую производительность при наличии сложных оркестрирующих процессов на ESB и достаточно медленного, основанного на Oracle биллинга?
- Как контролировать и улучшать производительность и доступность постоянно и на упреждение, а не когда "жареный петух клюнет"?
Мы расскажем о том, как мы отвечаем на выше обозначенные вопросы. В частности, расскажем о внедрении двух БД - inmemory БД на чтение и Oracle на запись с соответствующей синхронизацией, о технике кэширования на нескольких уровнях, оптимизации синхронных и асинхронных процессов, о постоянном выявлении узких мест на тестировании, о кластеризации и других аспектах улучшения общей и частной производительности и доступности при быстро растущей абонентской базе и беспощадной креативности бизнеса.
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
HAWQ — один из лучших на рынке движков SQL-on-Hadoop, который не раз доказывал свою лидирующую позицию в открытых тестированиях. Что еще более интересно, в конце сентября этого года Pivotal открыл его исходный код под лицензией Apache, а также разместил сам проект в инкубаторе Apache (http://hawq.incubator.apache.org), что делает этот инструмент доступным большому кругу пользователей и намного более привлекательным для компаний — лидеров интернет-индустрии.
Работая в Pivotal, я участвовал в развитии и внедрении этого продукта с первого дня его существования.
В этой презентации я раскрою следующие темы:
+ Что такое HAWQ и зачем он был создан.
+ Кластерная архитектура HAWQ.
+ Принципы работы HAWQ.
+ Внутреннее устройство процессов HAWQ.
+ Интеграция с внешними системами.
+ Альтернативные решения.
Где живут Ваши объявления / Тюрин Михаил (Avito)Ontico
Авито с 2010 года — с момента запуска на широкую аудиторию — прошел уже немалый путь, успев собрать более 600 миллионов объявлений со всех уголков страны, и став при этом крупнейшим классифайдом в Европе.
В докладе будет дан обзор архитектуры ядра системы с ретроспективой, перечислены основные компоненты обработки объявлений, приведены оценки параметров функционирования от "продуктовых" "количество объявлений за единицу времени" до количества запросов на разные уровни стека (веб, базы, поиск, очереди) и степени утилизации железа.
Будут также продемонстрированы примеры реализаций классических паттернов веба: кэш, прокси, денормализация и репликация, шардинг, очереди и удаленный вызов процедур — подходы, уже более 5 лет лежащие в основе нашей архитектуры. При этом будут приведены неочевидные, на взгляд автора, особенности внедрения данных подходов.
Доклад должен заинтересовать соотнесением масштабов и ключевых слов.
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Ontico
HighLoad++ 2017
Зал «Сингапур», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2912.html
В 2017 построить аналитику на больших данных - это уже не достижение.
Витрины, отстающие на день - уже старые. Отставание на час - неплохо.
Достижением для 2017 является realtime BigData - доступные для широкого круга аналитические данные, отстающие от реальности на секунды (миллисекунды!).
...
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
Все мы знаем, что NGINX – отличный прокси, который может качественно и эффективно распределять нагрузку между бэкендами и фильтровать запросы по определенным условиям. Но при этом часто на практике возникают задачи, которые не решаются его декларативной моделью описания конфигурации: иногда для принятия решения нам нужно сходить в базу данных (в Redis или даже в MySQL), другой сервис или произвести какую-то более сложную обработку запроса/ответа. Именно здесь к нам на помощь приходит мощь Lua и OpenResty.
Из доклада вы узнаете:
* зачем нам Lua внутри NGINX, и почему из седьмого айфона убрали разъем под наушники;
* в каких ситуациях NGINX в паре с Lua справятся с задачей лучше вашего любимого PHP/NodeJS/Ruby/Python/Visual Basic и о прелестях асинхронного ввода-вывода без callback'ов;
* как залезть к NGINX под капот, используя только высокоуровневый язык;
* при чем здесь Openresty, или как упростить себе жизнь;
* примеры бизнес-кейсов: от "умного" прокси до самостоятельного веб-приложения;
* как оно ведет себя в продакшне под большой нагрузкой.
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Ontico
+ Функционал разных решений для балансировки.
+ Виды балансировщиков (DNS, hardware, software, облачные решения).
+ Поведение при скачках трафика и возможности скалирования сервиса.
+ Специфика трафика RTB в контексте балансировки.
+ Проблемы, которые возникали у нас, и как мы их решали.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
Рассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
В своём проекте мы решали следующие задачи:
+ Скорость разработки задачи;
+ Стоимость поддержки задачи;
+ Возможность распараллеливать вычисления и задачи;
+ Возможность максимально просто масштабировать приложение;
+ CI/CD с минимальными усилиями.
Я расскажу о том, как мы решали эти задачи, на какие грабли мы наступали, что из этого всего получилось, и что делать дальше.
Что получили в итоге:
+ Мощь JVM под капотом Scala;
+ 15 минут от нажатия на кнопку "Merge request" до продакшена в 3 датацентра и 6 серверов с прохождением тестов (юнит + функциональные + интеграционные + нагрузочные);
+ 6 нод с приложениями вместо 18 (по 2 в каждом датацентре для отказоустойчивости) с запасом прочности в 60%;
+ Независимые пофичные релизы без даунтайма всех компонентов приложения;
+ Масштабирование только того функционала и в том количестве, которое необходимо данному сервису.
Разгоняем 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-контейнеров.
...
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
РИТ++ 2017, Backend Conf
Зал Кейптаун, 5 июня, 10:00
Тезисы:
http://backendconf.ru/2017/abstracts/2773.html
В этом докладе я рассмотрю несколько перспективных, на мой взгляд, баз данных, которые пока еще не очень популярны, но которые определенно ждет успех в будущем, особенно для highload-проектов. Я расскажу о Tarantool, ClickHouse и CockroachDB, о том, как они устроены, и почему я считаю, что они в будущем станут стандартом де-факто, как раньше был MySQL, а сейчас — MongoDB.
...
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
Мы прошли довольно большой путь в разработке через микросервисы.
Начинали разработку, когда это за рубежом только входило в тренд. По сути, не было никакой информации о том, как это делать правильно и, вообще, стоит ли это делать. Не было понятно, имеем ли мы дело с очередной модной штукой, или парадигма действительно решает часть проблем, характерных для больших нагруженных проектов.
Мы прошли путь от того, когда 100 микросервисов казалось много ... Сейчас цифры в 1000, 2000 кажутся чем-то обыденным.
В ходе доклада я постараюсь сделать упор на эксплуатацию системы, работающей на микросервисах. Расскажу, какой инструментарий показал себя хорошо на больших объемах, а от какого пришлось отказаться. Покажу на примерах, как эволюционировала наша система управления конфигурацией системы в целом и отдельными сервисами. Расскажу, как корректно предоставлять API сервиса и правильно поставлять его клиентские библиотеки, чтобы избегать внутренних и искусственных зависимостей. Покажу, как мы работаем с распределенными сервисами и обеспечиваем отказоустойчивость.
This document discusses Alibaba Mobile's ecosystem and strategies for launching products in various markets. It covers Alibaba's entrance into the mobile internet world through smartphones, operating systems, and application stores/browsers. It then discusses how Alibaba builds its ecosystem through big data, content monetization, and various traffic sources. The document outlines Alibaba's strategies for global markets and provides real examples of products launched in India and Indonesia, including services related to cricket, music, video, Facebook notifications, e-commerce, and news.
The Dining Man: how does Afisha Restaurants change the behavioral patterns of choice and payments in cafes and restaurants. Based on the real experience of Project Manager
This document provides a summary of Marvin Liao's 2016 investment outlook. It discusses 7 trends that early stage tech investors should pay attention to:
1. Virtual and augmented reality being the next major engagement platform, as AR/VR startups raised $658M in 2015.
2. The internet of everything (IoT), as IoT startups raised over $1.9B in 2015.
3. FinTech as a major growth area, with Asian FinTech startups raising $3.5B in 2015 and US startups raising $3B in Q1 2015.
4. Millennials now being the largest demographic group and redefining smartphone usage and preferences.
RxJava is a library for composing asynchronous and event-based programs using observable sequences. It provides features for concurrency, request management, data flow manipulation, and error handling. RxJava uses streams and new objects like Schedulers, Subscriptions, and Subjects. It can be used with techniques like retained fragments, cached observables, binding to lifecycles, and services to handle configuration changes and loading data.
The document discusses the Observer pattern and RxJava. RxJava allows for concurrency, data flow manipulation, and error handling through its use of observables and subscribers. It provides links to documentation on RxJava operators and a blog post that helps explain RxJava fundamentals.
This document discusses Spotify's transition to a "consistent, thin, and dumb" approach to app development. It summarizes Spotify's user and song numbers, the challenges of their previous iOS client, and their shift to a backend-driven model with modular organization. This allows for innovation, scaling, and a unified user experience across platforms through frameworks like GLUE. The document endorses frameworks as "machines" and sharing knowledge and success.
The document summarizes the architectural changes made to the Wunderlist app between versions 2 and 3. Version 3 was completely redesigned with a modular layered architecture that is highly decoupled, enables real-time syncing, and is easier to maintain, test, and adapt compared to the previous monolithic structure. The key layers include presentation, sync, SDK, and model layers with defined boundaries and dependencies between the layers.
The document discusses SoundCloud's approach to mobile testing, including:
- Engineers write unit and UI tests which are run continuously after each code change. Manual testing is also done before releases.
- A test runner service manages test execution across devices in parallel to improve efficiency compared to relying solely on Jenkins.
- An IntelliJ plugin was created to allow testing directly from the IDE for local development, integrating with the test runner service.
The document discusses the VIPER architecture pattern for structuring iOS applications. It begins by introducing the key components of a VIPER module: the View, Presenter, Interactor, Router, and Entity. It then provides examples of how each component is responsible for lifecycle management, event handling, data validation, routing, and other tasks. The document argues that VIPER increases testability, modularity, and code quality of iOS apps. It also promotes open sourcing example VIPER code on GitHub to help disseminate knowledge of this architecture.
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank e-Legion
This document discusses working on errors and testing. It focuses on improving performance by identifying mistakes, analyzing what caused them, and learning from the experience to do better in the future. The goal is to enhance skills and knowledge through reflection on past weaknesses or issues uncovered by assessment.
MBLTDev15: Anna Mikhina, Maxim Evdokimov, Tinkoff Bank
Юрий Буянов «Архитектура Goozy»
1. GOOZY
В поисках идеальной архитектуры
2011, e-Legion ltd. Юрий Буянов
Goozyware inc. @digal
2. • Пара слов о проекте
• Первая версия и первые проблемы
• Новые требования и новая архитектура
•В самом низу
• Приключения с хостингом
• Синяки и шишки
• Looking Forward
4. СПЕЦИФИКА
• Социальность: пользователь хочет быть постоянно в курсе
•2 req/min от каждого пользователя (даже когда он
ничего не делает).
• Вездесущность: работает на всех сайтах
• Запрос при открытии каждой страницы.
24. ТЕСТЫ И CI
• Scala (main + unit) : 10 500
• Groovy (functional): 5 500
• Прогон при каждом Push
• Тестирование интеграции
с поиском, Twitter, S3, etc.
29. US-EAST-1B US-EAST-1B US-EAST-2B
HAProxy HAProxy
API Portal API Portal
DB Master DB Replica 1 DB Replica 2
... ... ... ... ... ...
30. • Сервера и реплики в нескольких зонах
• Бэкап-реплика в другом регионе
• Автоматическоеуправление конфигурацией для
быстрого развёртывания (Opscode Chef)
• Полное устранение SPOF (Memcached)
• Мониторинг и алерты
31. СИНЯКИ И ШИШКИ
• Bleeding edge не такой уж bleeding
• Scala: разработчиков мало, но они в тельняшках
• Gradle + Scalac - время сборки
• MongoDB - просто RTFM
• EC2 - непостоянные IP-адреса
32. LOOKING FORWARD
• Уход от tomcat и сервлетов
• Автоматизация нагрузочного тестирования
• Comet / Websockets
• Push для мобильных
• Автоматическое управление конфигурацией и
развёртыванием