Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
"Что там писать клиентское приложение - вот сервер, который выдерживает 10 тысяч запросов в секунду!"... "Да они там только API делают, вот бы хоть одно приложение под iOS написали!"
Подобный обмен претензиями частенько можно услышать в спорах клиентских и серверных разработчиков. В этом докладе я попробую примирить обе стороны. Только от успешного взаимодействия клиентского приложения и серверной части зависит успех высоконагруженного проекта в целом.
* Как сделать так, чтобы клиент не "завалил" сервер?
* Коммуникация ошибок от сервера к клиенту.
* Синхронизация, разрешение конфликтов.
* Работа в offline-режиме.
* Разработка эффективного и корректного API.
* Асинхронное взаимодействие.
* Почему клиент и сервер на самом деле очень похожи?
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
"Что там писать клиентское приложение - вот сервер, который выдерживает 10 тысяч запросов в секунду!"... "Да они там только API делают, вот бы хоть одно приложение под iOS написали!"
Подобный обмен претензиями частенько можно услышать в спорах клиентских и серверных разработчиков. В этом докладе я попробую примирить обе стороны. Только от успешного взаимодействия клиентского приложения и серверной части зависит успех высоконагруженного проекта в целом.
* Как сделать так, чтобы клиент не "завалил" сервер?
* Коммуникация ошибок от сервера к клиенту.
* Синхронизация, разрешение конфликтов.
* Работа в offline-режиме.
* Разработка эффективного и корректного API.
* Асинхронное взаимодействие.
* Почему клиент и сервер на самом деле очень похожи?
Проверка на прочность или нагрузочное тестирование с JmeterAleksey Derkach
Мой доклад на второй мини-конференции компании Anadea в феврале 2015 года. Обобщение опыта, полученного в результате проведения полноценной сессии нагрузочного тестирования Web-приложения с использованием Jmeter.
Многофункциональный сервер приложений, обеспечивающий среду запуска на одном сервере и группе серверов, дающий полный набор инструментов для создания прикладного программного обеспечения.
Доклад о насущей и затертой до дыр теме кеширования не только сайтов на WordPress, но и сайтов в целом: от перегрузки js-скриптов и CSS в CDN до установки и настройки Varnish Cache
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)Ontico
В сутки Яндекс.Диск отдает более 40 миллионов сгенерированных превью изображений для просмотра в веб-интерфейсе Диска и в мобильных приложениях.
В докладе будет рассказано о поиске узких мест в цепочке от запроса пользователя до показа ему картинки, создания мониторингов скорости показа картинок, мерах по оптимизации: какие варианты рассматривали, какие реализовали, и какие были итоги.
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
Так как я работаю в позиции SRE (site reliability engineer), то более подробно затрону вопросы того, как мы добились годового durability 99.9999999999% и доступности более 99.99%:
- Изоляция
-- Физическая
--- Хранение данных в разных стойках, датацентрах, с разными версиями оборудования и вендорами.
--- Бэкапы вне основной инфраструктуры.
-- Логическая
--- Слабая связанность компонентов.
--- Не давать падению одного мастера (в зукипере или базе) утащить за собой всю зону.
-- Операционная
--- Процесс релиза.
--- Инструменты деплоя, сборки, хелзчекинга и т.д.
--- Контроль доступа.
- Защита данных
-- Восстановление
--- Восстановление после опасных операций (удаление).
-- Охрана данных и валидация операций
----в том числе от операторов.
- Контроль
-- Все совершают ошибки, нужно уметь детектировать их.
-- Метрики, SRE, OnCall.
-- Различные системы детектирование проблем, не связанные между собой, на каждом уровне систем (хост, кластер, ячейка, дата центр, внешние).
-- Тестирование
--- Disaster recovery testing.
- Автоматизация
-- Быстрое восстановление.
-- Быстрая реакция на события (нет времени реагировать вручную).
-- (introduce autoremedeation systems).
Балансировка нагрузки и отказоустойчивость в ОдноклассникахOntico
Главная → Тезисы и презентации
Балансировка нагрузки и отказоустойчивость в Одноклассниках Системное администрирование
Доклад принят в Программу конференции
Никита Духовный
Одноклассники
Ведущий системный администратор в Одноклассниках. Начинал IT-карьеру разработчиком, занимался релиз инженерией, выбрал системное администрирование.
Возглавляет одну из команд. Занимается задачами, обеспечивающими работу портала - автоматизацией, запуском новых решений, поддержкой инфраструктуры. Ведёт несколько хардкорных проектов, в том числе - по повышению отказоустойчивости портала.
Тезисы
Проект Одноклассники начинал свою жизнь в одном датацентре.
С ростом популярности растёт и нагрузка. С ростом нагрузки открываются проблемы:
- Ни один, даже самый мощный, сервер больше не справляется в одиночку.
- Нагрузка растёт, а в датацентре нет места для нового оборудования.
- Падение датацентра безоговорочно приводит к даунтайму.
- Сетевой сбой выводит портал из строя.
- Пользователи в удалённых регионах страдают от низкой скорости.
Я без прикрас расскажу вам, как мы в Одноклассниках решаем эти проблемы. Поговорим о следующем:
- CDN - каким пользователям важен, его архитектура, устройство наших CDN-приложений, что происходит при авариях.
- Датацентры - почему мы используем три основных датацентра, где они расположены (и почему именно там), распределение пользовательского трафика между ними.
- Сеть - как и до чего мы балансируем трафик.
- Балансировщики - как мы используем LVS, почему (и в каких случаях) используем и другие решения. Что делаем с приложениями, которые нельзя ставить за балансировщик.
- Модули портала - о балансировке в нашем RPC протоколе, о том, что происходит с Одноклассниками при падении датацентра.
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного server-side API десктопного приложения. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
Доклад осветит вопросы устройства REST API для веб-приложений и мобильных клиентов, от которых требуется высокая производительность.
Проектирование высокопроизводительных REST API.
- Кто должен участвовать в проектировании.
- Как узнать, что оптимизировать.
- Как измерять производительность REST API.
Паттерны и антипаттерны.
- Почему pagination - это плохо, и на что лучше заменить.
- Проблема N+1 и как с ней бороться.
- Бесполезные данные - как обнаружить и уничтожить.
- Как не ломать кэширование на клиенте.
- Эффективная работа с интерфейсами "мастер-детали".
Кэширование.
- Три слоя кэширования.
- Самый быстрый запрос - тот, которого не было. Как увеличить их количество.
- Экономия трафика.
- Исключение ненужных вычислений.
- Подходы к инвалидации кэша.
Приемы оптимизации работы с API на клиенте.
- Параллельные запросы.
- Эффективный разбор данных.
- In-memory DB на клиенте.
- Стратегии кэширования на клиенте.
Проверка на прочность или нагрузочное тестирование с JmeterAleksey Derkach
Мой доклад на второй мини-конференции компании Anadea в феврале 2015 года. Обобщение опыта, полученного в результате проведения полноценной сессии нагрузочного тестирования Web-приложения с использованием Jmeter.
Многофункциональный сервер приложений, обеспечивающий среду запуска на одном сервере и группе серверов, дающий полный набор инструментов для создания прикладного программного обеспечения.
Доклад о насущей и затертой до дыр теме кеширования не только сайтов на WordPress, но и сайтов в целом: от перегрузки js-скриптов и CSS в CDN до установки и настройки Varnish Cache
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)Ontico
В сутки Яндекс.Диск отдает более 40 миллионов сгенерированных превью изображений для просмотра в веб-интерфейсе Диска и в мобильных приложениях.
В докладе будет рассказано о поиске узких мест в цепочке от запроса пользователя до показа ему картинки, создания мониторингов скорости показа картинок, мерах по оптимизации: какие варианты рассматривали, какие реализовали, и какие были итоги.
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
Так как я работаю в позиции SRE (site reliability engineer), то более подробно затрону вопросы того, как мы добились годового durability 99.9999999999% и доступности более 99.99%:
- Изоляция
-- Физическая
--- Хранение данных в разных стойках, датацентрах, с разными версиями оборудования и вендорами.
--- Бэкапы вне основной инфраструктуры.
-- Логическая
--- Слабая связанность компонентов.
--- Не давать падению одного мастера (в зукипере или базе) утащить за собой всю зону.
-- Операционная
--- Процесс релиза.
--- Инструменты деплоя, сборки, хелзчекинга и т.д.
--- Контроль доступа.
- Защита данных
-- Восстановление
--- Восстановление после опасных операций (удаление).
-- Охрана данных и валидация операций
----в том числе от операторов.
- Контроль
-- Все совершают ошибки, нужно уметь детектировать их.
-- Метрики, SRE, OnCall.
-- Различные системы детектирование проблем, не связанные между собой, на каждом уровне систем (хост, кластер, ячейка, дата центр, внешние).
-- Тестирование
--- Disaster recovery testing.
- Автоматизация
-- Быстрое восстановление.
-- Быстрая реакция на события (нет времени реагировать вручную).
-- (introduce autoremedeation systems).
Балансировка нагрузки и отказоустойчивость в ОдноклассникахOntico
Главная → Тезисы и презентации
Балансировка нагрузки и отказоустойчивость в Одноклассниках Системное администрирование
Доклад принят в Программу конференции
Никита Духовный
Одноклассники
Ведущий системный администратор в Одноклассниках. Начинал IT-карьеру разработчиком, занимался релиз инженерией, выбрал системное администрирование.
Возглавляет одну из команд. Занимается задачами, обеспечивающими работу портала - автоматизацией, запуском новых решений, поддержкой инфраструктуры. Ведёт несколько хардкорных проектов, в том числе - по повышению отказоустойчивости портала.
Тезисы
Проект Одноклассники начинал свою жизнь в одном датацентре.
С ростом популярности растёт и нагрузка. С ростом нагрузки открываются проблемы:
- Ни один, даже самый мощный, сервер больше не справляется в одиночку.
- Нагрузка растёт, а в датацентре нет места для нового оборудования.
- Падение датацентра безоговорочно приводит к даунтайму.
- Сетевой сбой выводит портал из строя.
- Пользователи в удалённых регионах страдают от низкой скорости.
Я без прикрас расскажу вам, как мы в Одноклассниках решаем эти проблемы. Поговорим о следующем:
- CDN - каким пользователям важен, его архитектура, устройство наших CDN-приложений, что происходит при авариях.
- Датацентры - почему мы используем три основных датацентра, где они расположены (и почему именно там), распределение пользовательского трафика между ними.
- Сеть - как и до чего мы балансируем трафик.
- Балансировщики - как мы используем LVS, почему (и в каких случаях) используем и другие решения. Что делаем с приложениями, которые нельзя ставить за балансировщик.
- Модули портала - о балансировке в нашем RPC протоколе, о том, что происходит с Одноклассниками при падении датацентра.
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного server-side API десктопного приложения. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
Доклад осветит вопросы устройства REST API для веб-приложений и мобильных клиентов, от которых требуется высокая производительность.
Проектирование высокопроизводительных REST API.
- Кто должен участвовать в проектировании.
- Как узнать, что оптимизировать.
- Как измерять производительность REST API.
Паттерны и антипаттерны.
- Почему pagination - это плохо, и на что лучше заменить.
- Проблема N+1 и как с ней бороться.
- Бесполезные данные - как обнаружить и уничтожить.
- Как не ломать кэширование на клиенте.
- Эффективная работа с интерфейсами "мастер-детали".
Кэширование.
- Три слоя кэширования.
- Самый быстрый запрос - тот, которого не было. Как увеличить их количество.
- Экономия трафика.
- Исключение ненужных вычислений.
- Подходы к инвалидации кэша.
Приемы оптимизации работы с API на клиенте.
- Параллельные запросы.
- Эффективный разбор данных.
- In-memory DB на клиенте.
- Стратегии кэширования на клиенте.
01 - Web-технологии. Архитектура Web приложенийRoman Brovko
1. Понятие URL и документа
2. Виды документов: HTML, CSS, JS, JSON.
3. Абсолютные и относительные URL
4. Правила разрешения URL-ов
5. Гиперссылки
6. Клиент-серверная архитектура
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
Клиент, сервер и их взаимодействие, разработка веб и мобильных приложений, Лебедюк Эдуард /
Client & server overview & communication between them, how to develop mobile apps based on existing webapp, Eduard Lebedyuk
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSYandex
Сервис Яндекс.Вебмастер помогает улучшить представление сайта в поиске Яндекса. API сервиса можно использовать для того, чтобы отображать информацию об индексировании в администраторском интерфейсе CMS. В рамках презентации рассказано о шагах, которые необходимо выполнить при написании соответствующего плагина к CMS.
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...Vladislav Morgun
Международная бесплатная онлайн-конференция, посвященная самому эффективному инструменту привлечения целевых посетителей на сайт — SEO-оптимизации.
SEO-инсайты из логов сервера: от WP блога до международного проекта
- Что такое логи сервера?
- Инструменты для анализа от чайника до pro
- Как анализировать логи
- На что обращать внимание при анализе логов
Презентация с технической секции #BitByte - фестиваля профессионального развития, который прошел 19 мая в Санкт-Петербурге.
Даниил Павлючков, Team Lead компании ITMozg: «REST: от GET до HMAC или как создать качественное REST API».
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
2. Введение
• Что такое PHP 5
• Преимущества
• Принцип работы интерпритатора
• Обзор и выбор инструментов разработки
• Установка и настройка инструментов
• Выбор среды разработки
• Основы работы Web-сервера и Клиента
• Полезная информация
3. Что такое PHP ?
PHP :Hypertext Preprocessor – это широко
используемый язык программирования,
специально разработанный для написания
как статических так и динамических web-
приложений(сценариев), исполняющихся на
web-сервере.
4. Преимущества PHP 5
• Бесплатное использование
• Кроссплатформенность
• Прост в обучении
• Гибкость
• Поддержка многими хостингами
• Поддержка большинства СУБД
• Постоянно развивается
5. Принцип работы интерпретатора
• Лексический анализ исходного кода, и генерация
лексем (преобразование слов в команды языка)
• Синтаксический анализ полученных лексем
• Генерация байт-кода (промежуточного кода)
• Выполнение байт-кода интерпретатором
* Все эти операции выполняются автоматически
самим ядром PHP, а также ядро реализует средства
автоматического управления памятью
(распределением, освобождением и выделением)
7. Установка и настройка инструментов
• Для установки «Варианта 1» достаточно
следовать инструкции инсталлятора.
Инсталлятор сам установит и настроит
программное обеспечение, которое входит
в данный пакет или дистрибутив.
8. Установка «варианта 2»:
Рассмотрим связку Apache + PHP + MySQL
Для начала необходимо скачать, их
установочные файлы.
Потом их установить и сконфигурировать.
Подробная инструкция по установке:
http://www.cyberforum.ru/apache/thread83339.ht
ml
Установка и настройка инструментов
9. • Notepad++ или любой другой текстовый
редактор
• PHP IDE (PhpED, PHPEdit, phpDesigner,
Komodo IDE, Free Komodo Edit, TextMate,
PHP Expert Editor, Code Lobster)
• Клиент для работы с СУБД
Выбор среды разработки
10. Основы работы Web-Сервера и Клиента
• Web-Сервер – это ПО либо рабочая станция которая
принимает HTTP-запросы от клиентов и выдает им HTTP-
ответы, как правило вместе с контентом (HTML-страница,
изображения, поток, файл и т.д)
• Web-Серверы могут иметь дополнительные функции
такие, как:
- Автоматизация работы веб-страниц
- Логирование
- аутенфикация и авторизация пользователей
- поддержка HTTPS для защищенных соединений
11. • Клиенты – это ПО либо устройство, а также
другой Веб-Сервер , которое обращается к
Веб-серверу, с помощью протокола
HTTP/HTTPS
• В большинстве случаев клиентом
выступает Браузер, который передает Веб-
Серверу запросы на получение
интересующих его ресурсов
Основы работы Web-Сервера и Клиента
15. • HTTP-протокол (англ HyperText Transfer Protocol —
«протокол передачи гипертекста»)
• HTTP-запрос делится на заголовок и тело
• Пример заголовка:
GET /page.html HTTP /1.1
Accept: */*
Accept-Languge: en-us
Connection: Keep-Alive
Host: site.ru
Referer: http://google.com
User-Agent: Mozila
Основы работы Web-Сервера и Клиента
16. • HTTP-заголовок , строка запроса
GET /page.html HTTP /1.1.
Данная строка содержит 3 информационных
блока: Метод передачи данных, путь к
ресурсу, версию протокола
Основы работы Web-Сервера и Клиента
17. • Протокол HTTP поддерживает достаточно
большое количество методов передачи
данных, но 3 метода являются наиболее
распространёнными , образующие своего
рода негласный стандарт.
• Все эти методы указываю серверу как ему
следует обработать переданный ему запрос
Основы работы Web-Сервера и Клиента
18. • Метод GET
Запрос на информацию на расположеную, по какому-
то адресу. Также данный метод может передавать
данные на сервер , с помощью адресной строки.
• Метод HEAD
То же , что и метод GET, но в отличие от предыдущего
метода, запрашивает только HTTP-заголовок без данных
• Метод POST
Указывает на то, что данные отправляются серверу.
Данный метод не может получать данные от сервера.
Основы работы Web-Сервера и Клиента
19. • HTTP-ответ – это ответ веб-сервера клиенту, на
его запрос
• HTTP-ответ состоит из строки ответа, заголовка
и тела
HTTP /1.1 200 OK
Date: Fri, 31st Oct 2013 18:14:31 GMT
Server: Apache /2.0.1 (Unix) PHP 5.2.2
Last-Modified: Fri, 31st Oct 2013 18:14:31 GMT
Основы работы Web-Сервера и Клиента
20. • 100-199 : Информационный, указывает, что запрос в
настоящее время обрабатывается
• 200-299 : Отмечает, что сервер получил и успешно
выполнил запрос
• 300-399: Указывает на то ,что запрос не был
выполнен из-за того, что ресур был перемещен
• 400-499: Означает клиентскую ошибку (запрос был
неполным, некорректным или невозможным)
• 500-599 : Означает серверную ошибку(запрос был
корректным, но сервер не смог его выполнить)
Основы работы Web-Сервера и Клиента
21. • HTTP-ответ , тело ответа
Если запрос был успешным, то тело запроса
содержит сгенерированный сервером HTML
код. Если запрос был безуспешным, то
возвращается код ошибки.
23. Домашнее задание
• Установить минимальный пакет ПО (Веб-
Сервер и PHP 5.x)
• Настроить свое ПО
• Ознакомиться с документацией своего веб-
сервера и PHP