Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
Рассказываем о том, как мы в Badoo собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться.
А также:
- как собирать события с тысяч серверов;
- как правильно распределять их для обработки на несколько серверов;
- как устроена система сбора простых логов и агрегированной статистики в Badoo;
- какие есть перспективы развития системы.
Доклад будет интересен любому человеку, который хочет построить подобную систему распределенного сбора и перераспределения статистики.
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Ontico
Популярность постгреса в мире и России растет, с каждым новым релизом появляется все новая и новая функциональность, постгрес становится реальной угрозой монополии Оракл, уже подвинул Монго на поле свободных NoSQL СУБД, однако мировое сообщество ждет решения для горизонтального масштабирования. Создание постгресового кластера является крайне трудной задачей, так как постгрес является базой данных, ориентированной на целостность данных, а используемый алгоритм обеспечения конкурентности транзакций ставит серьезные челленджи перед разработчиками алгоритмов распределенных транзакций.
Оказывается, уже целых пять групп работает над этой задачей, и мы расскажем про их подходы, трудности, в том числе, и политические. Отдельно остановимся на российском опыте и нашем вкладе в решение этой задачи.
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
Рассказываем о том, как мы в Badoo собираем статистику для каждого пользователя, обсчитываем каждое открытие страницы (и не только!), обрабатываем 120000 событий в секунду и планируем расширяться.
А также:
- как собирать события с тысяч серверов;
- как правильно распределять их для обработки на несколько серверов;
- как устроена система сбора простых логов и агрегированной статистики в Badoo;
- какие есть перспективы развития системы.
Доклад будет интересен любому человеку, который хочет построить подобную систему распределенного сбора и перераспределения статистики.
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Ontico
Популярность постгреса в мире и России растет, с каждым новым релизом появляется все новая и новая функциональность, постгрес становится реальной угрозой монополии Оракл, уже подвинул Монго на поле свободных NoSQL СУБД, однако мировое сообщество ждет решения для горизонтального масштабирования. Создание постгресового кластера является крайне трудной задачей, так как постгрес является базой данных, ориентированной на целостность данных, а используемый алгоритм обеспечения конкурентности транзакций ставит серьезные челленджи перед разработчиками алгоритмов распределенных транзакций.
Оказывается, уже целых пять групп работает над этой задачей, и мы расскажем про их подходы, трудности, в том числе, и политические. Отдельно остановимся на российском опыте и нашем вкладе в решение этой задачи.
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
Архитектурный шаблон проектирования конвейер (pipeline) хорошо зарекомендовал себя при проектировании высоконагруженных (highload) систем. Использование шины сообщений (message bus) при реализации каналов взаимодействия позволяет достигать хороших показателей масштабируемости (scalability), но при этом появляются дополнительные накладные расходы, которые сказываются на показателях производительности (performance).
В докладе обсуждаются варианты использования системы обмена сообщениями RabbitMQ в качестве связующего программного обеспечения (middleware) для построения конвейерной архитектуры. Рассматриваются вопросы производительности и масштабирования как stateless так и statefull фильтров.
В качестве примера рассматривается реализация системы обработки сложных событий (complex event processing) применительно к управлению журналированием (log management).
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
Доклад про:
– развитие архитектуры этой системы, как менялись и как будут меняться требования к такого рода системам
– анализ подходящих под эту систему БД, с их проблемами, и опытом реальной эксплуатации
– почему мы остановились на MongoDB, со всеми минусами и плюсами
– немного про команду, трудозатраты и поддержку
– как мы используем эту систему и как она помогает растить наши продукты
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
Все мы знаем, что NGINX – отличный прокси, который может качественно и эффективно распределять нагрузку между бэкендами и фильтровать запросы по определенным условиям. Но при этом часто на практике возникают задачи, которые не решаются его декларативной моделью описания конфигурации: иногда для принятия решения нам нужно сходить в базу данных (в Redis или даже в MySQL), другой сервис или произвести какую-то более сложную обработку запроса/ответа. Именно здесь к нам на помощь приходит мощь Lua и OpenResty.
Из доклада вы узнаете:
* зачем нам Lua внутри NGINX, и почему из седьмого айфона убрали разъем под наушники;
* в каких ситуациях NGINX в паре с Lua справятся с задачей лучше вашего любимого PHP/NodeJS/Ruby/Python/Visual Basic и о прелестях асинхронного ввода-вывода без callback'ов;
* как залезть к NGINX под капот, используя только высокоуровневый язык;
* при чем здесь Openresty, или как упростить себе жизнь;
* примеры бизнес-кейсов: от "умного" прокси до самостоятельного веб-приложения;
* как оно ведет себя в продакшне под большой нагрузкой.
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС2ГИС Технологии
В своем докладе я расскажу, почему мы выбрали графовую базу данных Neo4j для проверки дорожного графа городов России (все населенные пункты с населением больше 300 000 жителей). Основные задачи, которые мы решаем средствами Neo4j — это проверки на связность и доступность проезда.
Опорные пункты доклада:
— SQL против графовых баз данных;
— обзор графовой базы данных neo4j;
— архитектура решения, в котором используется графовая БД;
— выполнение алгоритмов на графе в условиях его частых изменений.
В основе доклада лежат результаты работы над проектом «Fiji». Это внутрикорпоративная система, которая позволяет штатным картографам 2ГИС создавать, хранить и экспортировать карту во внешние продукты: онлайн-, десктоп- и мобильную версии 2ГИС.
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
В Badoo мы разрабатываем собственную систему Business intelligence (сокращённо BI). И прежде, чем приступать к анализу данных, их необходимо извлечь (Extract) из источников, преобразовать (Transform) и загрузить (Load) в аналитическую базу.
Я расскажу об этом процессе - ETL (Extract, Transform, Load). Какие бывают источники данных, какие методы сбора мы используем. И самое главное - об инструменте под названием ETLMaster, созданным в нашей компании для автоматизации управления процессом трансформации и загрузки данных.
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 20132ГИС Технологии
Нельзя, да и неправильно, проектировать веб-сервис как монолитное приложение. Рано или поздно это приведёт к его закостенелости или даже умиранию. С другой стороны, декомпозиция системы на несколько компонент приносит проблемы интеграционной зависимости, которые усложняют развёртывание или эксплуатацию приложения. В докладе я представлю систему, которая позволяет нам оперативно развёртывать многокомпонентное приложение 2ГИС API на три сервера в Новосибирске, Москве, Амстердаме. Особое внимание уделю гибкой архитектуре приложения, процессу развёртывания, версионированию кеша и индексов (Sphinx, C++-демоны), миграции схем БД (PostgreSQL), инструментам мониторинга и развёртывания (Zabbix, Chef, Phing, Yii).
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
Booking.com - популярный сервис по онлайн-бронированию отелей. Поиск отеля, отвечающего заданным характеристикам - это неотъемлемая часть бизнес-модели и основной инструмент для клиента.
При постоянном росте компании вопросу производительности и масштабируемости поиска уделяется много внимания. В результате за время своего существования архитектура поиска претерпела несколько глобальных переделок, начиная от простой базы в MySQL до многокомпонентного распределенного сервиса.
В своей текущей реинкарнации поиск в Booking.com состоит их трех подсистем:
1) сервис auto-complete и устранения неоднозначности (disambiguation) в геопозиции;
2) сервис поиска по отелям и проверки их доступности (availability);
3) система предрасчета цен.
Первые две системы - это высокопроизводительные приложения, написанные на Java. Сервис поиска хранит свои индексы в in-memory хранилище, а данные - во встраиваемой базе данных RocksDB. Логика системы предрасчета цен написана на Perl, а в качестве хранилища используется MySQL.
Приходите на мой доклад, и я расскажу вам, как эволюционировал поиск вместе с ростом компании. Мы подробно рассмотрим текущую архитектуру, и почему мы решили ее сделать именно такой. Ну и, конечно, с какими проблемами нам пришлось бороться и как мы это делали.
El documento describe las diferentes tecnologías digitales utilizadas en las aulas de nivel inicial como computadoras de escritorio, proyectores, equipos de música, tabletas, televisores, notebooks, routers inalámbricos y impresoras. Se proporcionan detalles técnicos como marcas, modelos, precios y especificaciones de cada dispositivo.
La tesis trata sobre la obtención de un extracto etanólico rico en polifenoles a partir de un subproducto del procesamiento industrial de mora. Se presentará el 4 de mayo de 2016 a las 9:30 a.m. en el Auditorio de la Escuela de Tecnología de Alimentos.
O poema descreve o amor que o autor sente em seu coração, que veio de Deus e foi derramado em Cristo na cruz, libertando as pessoas de ódio, guerra, dor e solidão. O amor de Cristo agora preenche os corações.
How To Generate Massive Social Authority Wherever You GoGeorge Hutton
The document discusses how acting like you belong can allow you to get away with things or gain access to restricted areas. It provides examples of people lining up behind someone standing in front of a random door, doctors tricking nurses into doing strange or dangerous tasks, and the narrator sneaking into better baseball seats as a kid by pretending to be lost. The document advocates taking this concept to a "meta-level" by always feeling like you belong wherever you go, which could help you achieve more and create relationships. It claims that others will respond to you based on how you see yourself, so if you feel you belong, others will as well.
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
Архитектурный шаблон проектирования конвейер (pipeline) хорошо зарекомендовал себя при проектировании высоконагруженных (highload) систем. Использование шины сообщений (message bus) при реализации каналов взаимодействия позволяет достигать хороших показателей масштабируемости (scalability), но при этом появляются дополнительные накладные расходы, которые сказываются на показателях производительности (performance).
В докладе обсуждаются варианты использования системы обмена сообщениями RabbitMQ в качестве связующего программного обеспечения (middleware) для построения конвейерной архитектуры. Рассматриваются вопросы производительности и масштабирования как stateless так и statefull фильтров.
В качестве примера рассматривается реализация системы обработки сложных событий (complex event processing) применительно к управлению журналированием (log management).
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
Доклад про:
– развитие архитектуры этой системы, как менялись и как будут меняться требования к такого рода системам
– анализ подходящих под эту систему БД, с их проблемами, и опытом реальной эксплуатации
– почему мы остановились на MongoDB, со всеми минусами и плюсами
– немного про команду, трудозатраты и поддержку
– как мы используем эту систему и как она помогает растить наши продукты
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
Все мы знаем, что NGINX – отличный прокси, который может качественно и эффективно распределять нагрузку между бэкендами и фильтровать запросы по определенным условиям. Но при этом часто на практике возникают задачи, которые не решаются его декларативной моделью описания конфигурации: иногда для принятия решения нам нужно сходить в базу данных (в Redis или даже в MySQL), другой сервис или произвести какую-то более сложную обработку запроса/ответа. Именно здесь к нам на помощь приходит мощь Lua и OpenResty.
Из доклада вы узнаете:
* зачем нам Lua внутри NGINX, и почему из седьмого айфона убрали разъем под наушники;
* в каких ситуациях NGINX в паре с Lua справятся с задачей лучше вашего любимого PHP/NodeJS/Ruby/Python/Visual Basic и о прелестях асинхронного ввода-вывода без callback'ов;
* как залезть к NGINX под капот, используя только высокоуровневый язык;
* при чем здесь Openresty, или как упростить себе жизнь;
* примеры бизнес-кейсов: от "умного" прокси до самостоятельного веб-приложения;
* как оно ведет себя в продакшне под большой нагрузкой.
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС2ГИС Технологии
В своем докладе я расскажу, почему мы выбрали графовую базу данных Neo4j для проверки дорожного графа городов России (все населенные пункты с населением больше 300 000 жителей). Основные задачи, которые мы решаем средствами Neo4j — это проверки на связность и доступность проезда.
Опорные пункты доклада:
— SQL против графовых баз данных;
— обзор графовой базы данных neo4j;
— архитектура решения, в котором используется графовая БД;
— выполнение алгоритмов на графе в условиях его частых изменений.
В основе доклада лежат результаты работы над проектом «Fiji». Это внутрикорпоративная система, которая позволяет штатным картографам 2ГИС создавать, хранить и экспортировать карту во внешние продукты: онлайн-, десктоп- и мобильную версии 2ГИС.
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
В Badoo мы разрабатываем собственную систему Business intelligence (сокращённо BI). И прежде, чем приступать к анализу данных, их необходимо извлечь (Extract) из источников, преобразовать (Transform) и загрузить (Load) в аналитическую базу.
Я расскажу об этом процессе - ETL (Extract, Transform, Load). Какие бывают источники данных, какие методы сбора мы используем. И самое главное - об инструменте под названием ETLMaster, созданным в нашей компании для автоматизации управления процессом трансформации и загрузки данных.
«Система развёртывания многокомпонентного сервиса» — Алексей Салов, YaC 20132ГИС Технологии
Нельзя, да и неправильно, проектировать веб-сервис как монолитное приложение. Рано или поздно это приведёт к его закостенелости или даже умиранию. С другой стороны, декомпозиция системы на несколько компонент приносит проблемы интеграционной зависимости, которые усложняют развёртывание или эксплуатацию приложения. В докладе я представлю систему, которая позволяет нам оперативно развёртывать многокомпонентное приложение 2ГИС API на три сервера в Новосибирске, Москве, Амстердаме. Особое внимание уделю гибкой архитектуре приложения, процессу развёртывания, версионированию кеша и индексов (Sphinx, C++-демоны), миграции схем БД (PostgreSQL), инструментам мониторинга и развёртывания (Zabbix, Chef, Phing, Yii).
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
Booking.com - популярный сервис по онлайн-бронированию отелей. Поиск отеля, отвечающего заданным характеристикам - это неотъемлемая часть бизнес-модели и основной инструмент для клиента.
При постоянном росте компании вопросу производительности и масштабируемости поиска уделяется много внимания. В результате за время своего существования архитектура поиска претерпела несколько глобальных переделок, начиная от простой базы в MySQL до многокомпонентного распределенного сервиса.
В своей текущей реинкарнации поиск в Booking.com состоит их трех подсистем:
1) сервис auto-complete и устранения неоднозначности (disambiguation) в геопозиции;
2) сервис поиска по отелям и проверки их доступности (availability);
3) система предрасчета цен.
Первые две системы - это высокопроизводительные приложения, написанные на Java. Сервис поиска хранит свои индексы в in-memory хранилище, а данные - во встраиваемой базе данных RocksDB. Логика системы предрасчета цен написана на Perl, а в качестве хранилища используется MySQL.
Приходите на мой доклад, и я расскажу вам, как эволюционировал поиск вместе с ростом компании. Мы подробно рассмотрим текущую архитектуру, и почему мы решили ее сделать именно такой. Ну и, конечно, с какими проблемами нам пришлось бороться и как мы это делали.
El documento describe las diferentes tecnologías digitales utilizadas en las aulas de nivel inicial como computadoras de escritorio, proyectores, equipos de música, tabletas, televisores, notebooks, routers inalámbricos y impresoras. Se proporcionan detalles técnicos como marcas, modelos, precios y especificaciones de cada dispositivo.
La tesis trata sobre la obtención de un extracto etanólico rico en polifenoles a partir de un subproducto del procesamiento industrial de mora. Se presentará el 4 de mayo de 2016 a las 9:30 a.m. en el Auditorio de la Escuela de Tecnología de Alimentos.
O poema descreve o amor que o autor sente em seu coração, que veio de Deus e foi derramado em Cristo na cruz, libertando as pessoas de ódio, guerra, dor e solidão. O amor de Cristo agora preenche os corações.
How To Generate Massive Social Authority Wherever You GoGeorge Hutton
The document discusses how acting like you belong can allow you to get away with things or gain access to restricted areas. It provides examples of people lining up behind someone standing in front of a random door, doctors tricking nurses into doing strange or dangerous tasks, and the narrator sneaking into better baseball seats as a kid by pretending to be lost. The document advocates taking this concept to a "meta-level" by always feeling like you belong wherever you go, which could help you achieve more and create relationships. It claims that others will respond to you based on how you see yourself, so if you feel you belong, others will as well.
This certificate certifies that Melchzedek Peter successfully completed the SALT Overview Webinar on October 27, 2015 at 12:00 AM Eastern Standard Time.
Desarrollo Sustentable en el Distrito FederalCaro Juarez
El documento describe varios proyectos de desarrollo sustentable en la Ciudad de México, como el sistema de transporte Metrobús, el sistema de bicicletas públicas EcoBici, y el Parque Ecológico Xochimilco. Estos proyectos buscan mejorar la movilidad de una manera más limpia y saludable, al mismo tiempo que protegen el medio ambiente y fomentan actividades recreativas y culturales.
The meetings in Slovenia were productive, where the author learned new teaching methods and spent time with nice teachers and eager students. The activities were interesting and took place in a hospitable environment. The author was glad to have the opportunity to spend a week in Slovenia participating in various activities.
O documento fornece instruções passo a passo para criar um blog no Blogger, incluindo como inserir imagens, alterar o layout e publicar posts. Ele explica como acessar o Blogger, inserir imagens de arquivos ou URLs, alterar o modelo do blog e fazer novas postagens.
Goldbach's Conjecture states that every even integer greater than 2 can be expressed as the sum of two prime numbers. It has been verified for all even numbers up to very large values but remains unproven. The document also notes that every odd integer greater than 5 can be written as the sum of three primes. Examples are provided to illustrate Goldbach partitions and the conjecture is tested for small even numbers using Sage code.
1) The document discusses how coffee shops employ cloud computing design principles in their operations, such as decomposing tasks, handling variable workloads, managing state data, refining processing components, and ensuring elasticity and resiliency.
2) Specifically, coffee shops decompose tasks into user interface, processing, and specialized components; experience periodic workload peaks in mornings and afternoons; maintain session state data like orders; refine barista processing roles; and scale employee staffing levels to meet demand while ensuring continued service through backup roles.
3) This real-world example shows how fundamental cloud computing patterns around decomposition, workloads, data management, component design, and elastic scaling are actively applied in coffee shops similarly to cloud
Презентация подготовлена по материалам выступления Виталия Квятковского на Весеннем MiniQ'e (http://vk.com/event121580131), который был проведен 26 мая 2016.
El documento describe varios métodos para sintetizar alcanos a partir de alquenos o halogenuros de alquilo, incluyendo hidrogenación catalítica, uso de reactivos de Grignard, reducción con hidrógeno y ácido, y acoplamiento de cuprodialquil-litio. El método más efectivo es la hidrogenación catalítica debido a su simplicidad usando catalizadores como platino, paladio o níquel. Los reactivos de Grignard permiten reemplazar un átomo de halógeno por hidrógeno mediante hid
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
Огромная часть работы службы эксплуатации, так или иначе, связана с мониторингом существующей инфраструктуры.
Если система мониторинга настроена хорошо, она позволяет сократить время простоя, какие-то проблемы показать на ранней стадии, формализовать рабочие процессы команды админов.
То есть она является носителем знания о нашей инфраструктуре и о том, как именно работают админы.
Можно ли извлечь дополнительную пользу из этого?
В hh.ru мы используем систему мониторинга ещё и как check list для повседневных задач админов (алерты в данном случае являются задачами для человека: сделал задачу - триггер проверил результат и погас), идея взята из TDD.
Также расскажу, как мы работаем с внештатными ситуациями: реагируем на алерты, чиним, разбираем и классифицируем.
Еще на основе разобранных инцидентов мы считаем показатели работы службы эксплуатации, из этих показателей высчитываются наши премии (данный KPI получился удачным: с ним согласен и бизнес и админы).
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Mail.ru Group
Доклад посвящен жизни проектов в продакшен. Речь пойдет о связке Python-Django-Uwsgi для backend мобильных приложений, настройке серверов, измерении времени и оценке качества работы backend. Также спикер расскажет о профилировании Django, Memcached в Python.
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного server-side API десктопного приложения. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
2. Пара цифр о Badoo
• 270М пользователей
• 5М новых фото в день
• 400К регистраций в сутки
• 3К серверов
• 70К RPS на PHP-FPM
3. Что мы обсудим
• Зачем анализировать
события в проекте?
• Что можно подвергнуть
анализу?
• Какие средства и решения
вы можете для этого
использовать?
8. Pinba
• MySQL-extension
• Все данные in-memory
• Транспорт: GPB over UDP
• Поддерживает таймеры, теги,
агрегации
• Клиенты для PHP, Java, Go,
Python, Ruby, JS, модуль nginx
15. Нюансы
• события одного типа собираются на
один MySQL-хост
• нет поддержки составных типов
данных
• разнородность событий — проблемы
при добавлении атрибутов
• нет единого flow обработки
18. Требования продуктов
• говорить с разработкой
«на одном языке»
• настраиваемые разрезы
и агрегаты
• апдейты каждые несколько
минут
• дашборды, графики, таблички!!!
20. Качественные требования
• возможность масштабирования
• отказоустойчивость
• высокая производительность
• работа с миллионами метрик
• долговременное хранение сырых
данных
21.
22. Unified Data Stream (UDS)
• язык описания данных
• сбор событий с
application-серверов
• обработка
• визуализация
• долговременное хранение
23. Описание событий
• специальный формат
• кодогенерация для backend
• формат при отправке: JSON
(помним про хотелку tail/grep)
25. Транспорт — берем готовый?
• О, да это просто! Есть же куча
готовых!
• Ага, но еще есть:
– Текущая инфраструктура
– Требования к доставке
– Гетерогенность событий
27. Транспорт — опять scribe?
• Доставляет надежно
• Плавали — знаем
• Но он же legacy!
• И падает иногда
Ладно, пока возьмем...
28. Транспорт — а сами?
• Live Streaming Daemon (LSD)
– Из приложения пишем в файлы
– Дальше — как scribe,
только лучше
– Coming open-source soon!
29. Flow событий в ДЦ
App
(web, cloud)
> 1K hosts
Аггрегатор
< 10 hosts
30. Обработка на Агрегаторе
• запись в файлы (а-ля logrotate)
• gzip
• inotify
• В случае недоступности HDFS —
буфер на 24 часа
31. Структура в HDFS
• /local/UDS/
– /date=2015-01-01/
●
/hour=00/
udshost1.mlan_001.gz
udshost1.mlan_002.gz
udshost2.mlan_001.gz
…
– /date=2015-02-02/
32. Пробуем обработать — Hive
• SQL-подобный интерфейс над
данными в файлах на HDFS
• «Мои запросы могут показаться
тебе странными …» (несколько
экранов)
• Обработка суточных данных
занимает очень много времени (а
хочется realtime)
33. Как ускорить обработку?
• Divide and conquer!
• Вычислить агрегаты в коротких
временных интервалах, и
сохранить
• Для расчета
суточных/месячных/годовых
данных использовать сумму
агрегатов
34. Apache Spark
●
Фреймворк для распределенной
обработки данных
• Интеграция с Hadoop
• Данные in-memory
• Streaming API «из коробки»
35. Apache Spark - Streaming
• Строго говоря, это batching
• Можно грабить корованы выполнять
map-reduce
• Весь входящий поток событий
превращается в гомогенную
коллекцию, размещенную в памяти
машин кластера
36. Streaming API
«Каждые 15 секунд проверить
наличие новых файлов в HDFS-
директории, и запустить обработку
каждой строки»
38. Концепция изменилась!
• Подсчет агрегаций на MR
отличается от SQL
• Поток разнородных событий, с
разными наборами вычислений,
надо преобразовать в
гомогенный
• Для каждого события надо
посчитать пермутации из его
разрезов
45. Вычисление метрик
• Метрика — сумма одинаковых
проекций, посчитанная за интервал
NOW() - N минут
• Для каждого из желаемых
интервалов берем данные из
сохраненных агрегатов
• Повторяем процедуру
суммирования
49. Мысли вслух
●
Комбинаций — сотни тысяч
●
К каждой — hash с user_id
●
Не, ну ладно — bitset
●
На каждую комбинацию —
сотня мегабайт
●
Не успеем считать суточные
агрегации
50. «Почти честное» решение
●
HyperLogLog — вероятностная
структура для подсчета
уникальных значений
●
Настраивается процент
погрешности (больше памяти →
меньше ошибка)
●
0.5% погрешности ~ 32Kb на
объект
52. Что мы научились
●
80/20 — принцип Паретто
●
count/sum/avg/min/max/first/last
●
approx distinct
●
Да, пока нет перцентилей и
точного DISTINCT
●
Но возможность прикрутить-то
имеется!
53. Пучок цифр и фактов
●
300К events/sec в пике (больше
пока не придумали :)
●
25 серверов в Hadoop-кластере
(не только для нашей задачи)
●
В 300 раз уменьшили объем данных
для анализа (за счет замены сырых
данных на агрегаты)
56. Where to go from here
1. tech.badoo.com/
Техблог Badoo
2. pinba.org
Real-time аналитика вашего
приложения
3. bit.ly/StatsCollector
Доклад о StatsCollector
4. spark.apache.org
57. Спасибо за внимание,
я готов ответить на Ваши
вопросы!
krash@corp.badoo.com
krash3@gmail.com
facebook.com/alex.krash