SlideShare une entreprise Scribd logo
1  sur  57
Жизнь проекта на
production
Николай Сивко
Постановка задачи
• У нас есть сайт, он приносит нам деньги
• Если он не работает — мы несем убытки
• У нас есть небольшой бюджет на отказоустойчивость + мозг
Всему есть предел
• Датацентры:
• Tier I: 99.671% (142 минуты в месяц)
• Tier II: 99.749% (~109 минут в месяц)
• Tier III: 99.982% (~8 минут в месяц)
• Tier IV: 99.995% (~2 минуты в месяц)
• Допустим, мы стоим в TIER III и закладываться на падение ДЦ
пока не будем
Реальность
• Найти ДЦ “без единого разрыва” не сильно сложно
• А железо ломается постоянно
• Софт — тем более
• Свой софт — ещё чаще
Дано
• У нас есть сервер за 20000р/месяц
• На нем:
• Nginx (фронтенд)
• Наше приложение (бэкенд)
• Memcached
• База данных
• Очередь задач
• Наши обработчики задач из очереди
Алгоритм
• Выписываем возможные проблемы
• Какие-то закрываем полностью
• Какие-то — частично
Стандартная архитектура простого проекта
Фронтенд
• Принимает запросы
• Обслуживает “медленных” клиентов
• Отдает статику: js/css/img
• URL rewrites
• Терминация TLS (https)
• Проксирует запросы на бэкенды
• Кэш
Фронтенд: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Тупит сервер, сайт тормозит
Фронтенд: балансировка
• Обычно frontend – stateless, можем поставить несколько
(защитимся от вылета железа + некоторых софтовых проблем)
• Нужно обеспечить отказоустойчивость, масштабируемость
• Как правило, уровень выше – не наша зона ответственности
Фронтенд: балансировка
• DNS round robin: не знает, работает ли конкретный сервер
• Shared IP: VRRP, CARP (active + N passive, нужно отдельно
дорабатывать переключение при проблемах с сервисами)
• DNS round robin между shared ips
Фронтенд: балансировка
Если есть L3 железка перед фронтендами:
• Cisco: равнозначные статические маршруты + IP SLA check
• Juniper: равнозначные статические маршруты + BFDd + monit
Фронтенд: балансировка
ip sla 1
tcp-connect 1.1.1.10 80 source-ip 1.1.1.1 control disable
timeout 900 threshold 1000 tag front1 frequency 1
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability
ip sla 2
tcp-connect 1.1.1.20 80 source-ip 1.1.1.1 control disable
timeout 900 threshold 1000 tag front2 frequency 1
ip sla schedule 2 life forever start-time now
track 2 ip sla 2 reachability
mls ip cef load-sharing full
ip route 1.1.1.100 255.255.255.255 1.1.1.10 track 1
ip route 1.1.1.100 255.255.255.255 1.1.1.20 track 2
Фронтенд: мониторинг
• Количество запросов
• Количество ошибок (http-5xx, http-4xx)
• Время ответа на запросы (гистограмма)
Фронтенд: мониторинг
Фронтенд: мониторинг
• Critical: http-5xx > N в секунду
• Critical: медленных запросов (> 1s) > M %
N, M на ваш вкус, обычно для сайта с 200+ RPS:
• N = 10 RPS
• M = 5 %
Фронтенд: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Тупит сервер, сайт тормозит – мониторинг
Бэкенд
• Получает данные из БД, других сервисов
• Производит вычисления над данными (шаблонизация, ...)
• Отдает пользователю ответ
Бэкенд: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Проблемы с БД (совсем умерло, тупит, ошибки)
• Проблемы с другими внешними ресурсами
• Тормоза из-за нехватки ресурсов, кривого кода
• Тормоза из-за бОльшего количества запросов
Бэкенд
• Не храним на бэкенде данные, иначе сложная балансировка,
проблемы при отказе (сессии на локальном диске, и т.д.)
• Ставим несколько железок, балансировка на фронтенде
Бэкенд
• Выясняем, сколько запросов одновременно бэкенд может
обслужить, больше не берем (HTTP-503)
• Фронтенд может в этом случае отправить запрос соседу
• Определяемся со временем ответа, ставим правильные
таймауты на фронтенде
Бэкенд: балансировка
• proxy_connect_timeout 10ms; #для локалки
• proxy_read_timeout 500ms; #настраиваем под себя
• proxy_next_upstream error timeout invalid_header http_502
http_503 http_504;
• proxy_next_upstream_tries 2;
* Nginx 1.9.13+ не будет ретраить POST
Бэкенд: мониторинг
• Живость сервиса (есть процесс, listen socket, отвечает на /status)
• Потребление ресурсов процессом (cpu, mem, swap io, disk io, open
fd)
• Runtime специфичные метрики (GC, heap, размер кэшей, …)
Бэкенд: мониторинг
• Количество принятых и обработанных запросов (лог, statsd)
• Количество ошибок (можно снимать на фронтенде)
• Время ответа (лог, statsd, можно снимать на фронтенде)
• Работа с БД или сервисами (количество запросов, ошибок,
время ответа)
• Время, потраченное на вычисления
Бэкенд: потребление cpu
Бэкенд: стадии бизнес логики
Бэкенд: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Проблемы с БД (совсем умерло, тупит, ошибки) - мониторинг
• Проблемы с другими внешними ресурсами - мониторинг
• Тормоза из-за нехватки ресурсов, кривого кода - мониторинг
• Тормоза из-за бОльшего количества запросов
БД
• Хранит данные
• Отвечает на запросы к данным OLTP + OLAP
БД: что может произойти
• Сломалась железка
• Потеря данных из-за железа, DELETE, …
• Умер сервис (crash, oom killer, всякое бывает)
• Тормоза из-за нехватки ресурсов
• Тормоза из-за бОльшего количества запросов
• Тормоза из-за кривых запросов (нет нужного индекса, …)
БД: master-slave
• Настраиваем репликацию на другой сервер
• Основная нагрузка большинства проектов – чтение, можно
работать в read-only режиме при отказе мастера
БД: master-slave
• На реплику можем отправить все SELECTы, которые не
чувствительны к replication lag
• Для таких запросов можно приложению дать отдельный endpoint
– балансировщик, который распределит соединения между
master и репликами (TCP)
• Или научить приложение работать с несколькими серверами
сразу – сможете контролировать таймауты, делать retry на другой
сервер в случае проблем
БД: переключение мастера
• Принимаем решение о переключении (может, быстрее починить
сервер?)
• Переключаем запись на реплику (будут ошибки)
• Если нужно, ждем, пока долетят изменения
• Добиваем текущий мастер
• Перенастраиваем slave->master
• Если есть ещё реплики, переключаем их на новый master
БД: переключение мастера
• Переключаться на автомате сложно и стрёмно
• Лучше минимизировать риски и взять под мастер БД более
надежное железо (raid, БП и т.д.)
• Пишем инструкцию, как переключить мастер (по шагам, с
хорошей детализацией, чтобы включать мозг по минимуму)
• Устраиваем учения и тестируем инструкцию, замеряем время
простоя
• Дополняем и уточняем инструкцию, пытаемся сократить время
простоя
• Тестируем снова
БД: репликация != бэкап
• “DELETE from table” – убьет данные на реплике тоже
• Регулярно делаем бэкап + копируем WAL
• Можно держать реплику, специально отстающую на N минут
(чтобы быстро отключить репликацию и успеть спасти данные)
• Бэкап лучше копировать в другой ДЦ тоже
БД: мониторинг
• Живость сервиса (есть процесс, listen socket)
• Потребление ресурсов процессом (cpu, mem, swap io, disk io, open
fd)
• Какие запросы занимают CPU
• Какие запросы нагружают диски
• Отставание репликации, трафик репликации
• Поток запросов (больше, меньше, как обычно)
• Мониторинг наличия бэкапа
БД: мониторинг запросов
БД: мониторинг репликации
БД: что может произойти
• Сломалась железка
• Потеря данных из-за железа, DELETE, … мониторинг + инструкция
по ручному вмешательству
• Умер сервис (crash, oom killer, всякое бывает)
• Тормоза из-за нехватки ресурсов - мониторинг
• Тормоза из-за бОльшего количества запросов - мониторинг
• Тормоза из-за кривых запросов (нет нужного индекса, …) -
мониторинг
Memcached
• Распределенный кэш в памяти
• Общий доступ по сети
Memcached: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Тормозит сеть
• Тормоза из-за нехватки ресурсов
Memcached
• Ставим несколько
• Клиенты умеют ходить сразу во все (шардинг)
• Обязательно настраиваем таймауты
• Проверяем логику инвалидации (expire все равно ставим)
Memcached
• Выдержит ли БД, если почистить все кэши?
• А должна
• Сколько нужно прогретых кэшей, чтобы сайт работал?
• Проверяем, как клиент будет перераспределять данные и
запросы (решардинг), чтобы вылет 1 сервера не испортил нам все
• Эффективен ли кэш?
• Может, его выкинуть?
Memcached: мониторинг
Memcached: что может произойти
• Сломалась железка
• Умер сервис (crash, oom killer, всякое бывает)
• Тормозит сеть – мониторинг на стороне бэкенда
• Тормоза из-за нехватки ресурсов – мониторинг
Message Queue
• Хранит задачи для отложенной обработки
• Publisher – записывает сообщение в очередь
• Consumer – получает сообщения и выполняет работу
Message Queue: что может произойти
• Сломалась железка
• Потеря данных (умерла железка с необработанной очередью)
• Умер сервис (crash, oom killer, всякое бывает)
• Умерли все обработчики (копятся сообщения)
• Тормоза из-за нехватки ресурсов
Message Queue
• Некоторые брокеры заявляют о кластерном режиме работы (мне
не очень нравится, много вопросов)
• Можно поставить несколько брокеров: писать в любой живой,
обработчики должны выбирать сообщения из всех
• Обязательно настраиваем таймауты
Message Queue: очень важные сообщения
• Пишем одно и то же сообщение в несколько брокеров, убираем
дубли на уровне обработчиков
• Или имеем механизм проверки целостности и восстановления
состояния по другим источникам (БД)
Message Queue: мониторинг
• Потребление ресурсов
• Размеры очередей
• Скорость приема/доставки сообщений
Message Queue: мониторинг
Message Queue: мониторинг
Message Queue: что может произойти
• Сломалась железка
• Потеря данных (умерла железка с необработанной очередью)
• Умер сервис (crash, oom killer, всякое бывает)
• Умерли все обработчики (копятся сообщения) - мониторинг
• Тормоза из-за нехватки ресурсов - мониторинг
Цена вопроса
• Начали с 1 dedicated сервера за 20тр/месяц
• Минимум: ставим еще один такой же (40тр)
• Норма: 2+ БД отдельно на хорошем железе, все остальное
размазано по 2+ серверам
А что в “облаках”?
• Есть возможность поднять новую машину за N минут + API
• Есть готовые балансировщики
• Есть готовые MQ сервисы
• Ресурсы дороже
• Можно нарваться на latency (сеть, диск), недополучить ресурсов
(cpu)
• Готовые сервисы – черные ящики для вас
Резервный ДЦ
• Данные (репликация)
• Актуальная конфигурация ПО
• Актуальные версии вашего софта
• План переключения трафика в резервный ДЦ:
• DNS (помним про ttl)
• PI адреса + BGP
Самое главное
• Составьте список возможных отказов
• Исключайте (закрывайте) простые
• Если сценарий сложный:
• уменьшаем вероятность
• закрываем часть
• мониторинг + план на ручное вмешательство
• Главное – иметь план действий, всё остальное — оптимизация
Спасибо за внимание!
Вопросы?
Николай Сивко
nsv@okmeter.io

Contenu connexe

Tendances

Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Ontico
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)Ontico
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Ontico
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)Ontico
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)Ontico
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
 

Tendances (20)

Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
 

En vedette

10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)Ontico
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Ontico
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)Ontico
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Ontico
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Ontico
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)Ontico
 
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...Ontico
 
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Ontico
 
5 лайфхаков в найме адекватных сотрудников / Александр Зиза (Алетейя Бизнес)
5 лайфхаков в найме адекватных сотрудников  / Александр Зиза (Алетейя Бизнес)5 лайфхаков в найме адекватных сотрудников  / Александр Зиза (Алетейя Бизнес)
5 лайфхаков в найме адекватных сотрудников / Александр Зиза (Алетейя Бизнес)Ontico
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)Ontico
 
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Ontico
 
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...Ontico
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Ontico
 

En vedette (20)

10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)
 
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...
Как клиент мечты разорил компанию за 1 год сотрудничества / Николай Зайченко ...
 
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
Как построить видеоплатформу на 200 Гбитс / Ольховченков Вячеслав (Integros)
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
5 лайфхаков в найме адекватных сотрудников / Александр Зиза (Алетейя Бизнес)
5 лайфхаков в найме адекватных сотрудников  / Александр Зиза (Алетейя Бизнес)5 лайфхаков в найме адекватных сотрудников  / Александр Зиза (Алетейя Бизнес)
5 лайфхаков в найме адекватных сотрудников / Александр Зиза (Алетейя Бизнес)
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)Оптимизации уровня CPU,  Андрей Акиньшин (JetBrains)
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)
 
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
 
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...
Zone to Win – организация в борьбе за лучшие кадры в эпоху разрушительных инн...
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
 

Similaire à Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)

Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Nikolay Sivko
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Ontico
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Tanya Denisyuk
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Ontico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo Development
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Kubasov 1 7_deploy
Kubasov 1 7_deployKubasov 1 7_deploy
Kubasov 1 7_deploykuchinskaya
 

Similaire à Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io) (20)

Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
Sivko
SivkoSivko
Sivko
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Kubasov 1 7_deploy
Kubasov 1 7_deployKubasov 1 7_deploy
Kubasov 1 7_deploy
 

Plus de Ontico

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 

Plus de Ontico (20)

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)

  • 2. Постановка задачи • У нас есть сайт, он приносит нам деньги • Если он не работает — мы несем убытки • У нас есть небольшой бюджет на отказоустойчивость + мозг
  • 3. Всему есть предел • Датацентры: • Tier I: 99.671% (142 минуты в месяц) • Tier II: 99.749% (~109 минут в месяц) • Tier III: 99.982% (~8 минут в месяц) • Tier IV: 99.995% (~2 минуты в месяц) • Допустим, мы стоим в TIER III и закладываться на падение ДЦ пока не будем
  • 4. Реальность • Найти ДЦ “без единого разрыва” не сильно сложно • А железо ломается постоянно • Софт — тем более • Свой софт — ещё чаще
  • 5. Дано • У нас есть сервер за 20000р/месяц • На нем: • Nginx (фронтенд) • Наше приложение (бэкенд) • Memcached • База данных • Очередь задач • Наши обработчики задач из очереди
  • 6. Алгоритм • Выписываем возможные проблемы • Какие-то закрываем полностью • Какие-то — частично
  • 8. Фронтенд • Принимает запросы • Обслуживает “медленных” клиентов • Отдает статику: js/css/img • URL rewrites • Терминация TLS (https) • Проксирует запросы на бэкенды • Кэш
  • 9. Фронтенд: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Тупит сервер, сайт тормозит
  • 10. Фронтенд: балансировка • Обычно frontend – stateless, можем поставить несколько (защитимся от вылета железа + некоторых софтовых проблем) • Нужно обеспечить отказоустойчивость, масштабируемость • Как правило, уровень выше – не наша зона ответственности
  • 11. Фронтенд: балансировка • DNS round robin: не знает, работает ли конкретный сервер • Shared IP: VRRP, CARP (active + N passive, нужно отдельно дорабатывать переключение при проблемах с сервисами) • DNS round robin между shared ips
  • 12. Фронтенд: балансировка Если есть L3 железка перед фронтендами: • Cisco: равнозначные статические маршруты + IP SLA check • Juniper: равнозначные статические маршруты + BFDd + monit
  • 13. Фронтенд: балансировка ip sla 1 tcp-connect 1.1.1.10 80 source-ip 1.1.1.1 control disable timeout 900 threshold 1000 tag front1 frequency 1 ip sla schedule 1 life forever start-time now track 1 ip sla 1 reachability ip sla 2 tcp-connect 1.1.1.20 80 source-ip 1.1.1.1 control disable timeout 900 threshold 1000 tag front2 frequency 1 ip sla schedule 2 life forever start-time now track 2 ip sla 2 reachability mls ip cef load-sharing full ip route 1.1.1.100 255.255.255.255 1.1.1.10 track 1 ip route 1.1.1.100 255.255.255.255 1.1.1.20 track 2
  • 14. Фронтенд: мониторинг • Количество запросов • Количество ошибок (http-5xx, http-4xx) • Время ответа на запросы (гистограмма)
  • 16. Фронтенд: мониторинг • Critical: http-5xx > N в секунду • Critical: медленных запросов (> 1s) > M % N, M на ваш вкус, обычно для сайта с 200+ RPS: • N = 10 RPS • M = 5 %
  • 17. Фронтенд: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Тупит сервер, сайт тормозит – мониторинг
  • 18. Бэкенд • Получает данные из БД, других сервисов • Производит вычисления над данными (шаблонизация, ...) • Отдает пользователю ответ
  • 19. Бэкенд: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Проблемы с БД (совсем умерло, тупит, ошибки) • Проблемы с другими внешними ресурсами • Тормоза из-за нехватки ресурсов, кривого кода • Тормоза из-за бОльшего количества запросов
  • 20. Бэкенд • Не храним на бэкенде данные, иначе сложная балансировка, проблемы при отказе (сессии на локальном диске, и т.д.) • Ставим несколько железок, балансировка на фронтенде
  • 21. Бэкенд • Выясняем, сколько запросов одновременно бэкенд может обслужить, больше не берем (HTTP-503) • Фронтенд может в этом случае отправить запрос соседу • Определяемся со временем ответа, ставим правильные таймауты на фронтенде
  • 22. Бэкенд: балансировка • proxy_connect_timeout 10ms; #для локалки • proxy_read_timeout 500ms; #настраиваем под себя • proxy_next_upstream error timeout invalid_header http_502 http_503 http_504; • proxy_next_upstream_tries 2; * Nginx 1.9.13+ не будет ретраить POST
  • 23. Бэкенд: мониторинг • Живость сервиса (есть процесс, listen socket, отвечает на /status) • Потребление ресурсов процессом (cpu, mem, swap io, disk io, open fd) • Runtime специфичные метрики (GC, heap, размер кэшей, …)
  • 24. Бэкенд: мониторинг • Количество принятых и обработанных запросов (лог, statsd) • Количество ошибок (можно снимать на фронтенде) • Время ответа (лог, statsd, можно снимать на фронтенде) • Работа с БД или сервисами (количество запросов, ошибок, время ответа) • Время, потраченное на вычисления
  • 27. Бэкенд: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Проблемы с БД (совсем умерло, тупит, ошибки) - мониторинг • Проблемы с другими внешними ресурсами - мониторинг • Тормоза из-за нехватки ресурсов, кривого кода - мониторинг • Тормоза из-за бОльшего количества запросов
  • 28. БД • Хранит данные • Отвечает на запросы к данным OLTP + OLAP
  • 29. БД: что может произойти • Сломалась железка • Потеря данных из-за железа, DELETE, … • Умер сервис (crash, oom killer, всякое бывает) • Тормоза из-за нехватки ресурсов • Тормоза из-за бОльшего количества запросов • Тормоза из-за кривых запросов (нет нужного индекса, …)
  • 30. БД: master-slave • Настраиваем репликацию на другой сервер • Основная нагрузка большинства проектов – чтение, можно работать в read-only режиме при отказе мастера
  • 31. БД: master-slave • На реплику можем отправить все SELECTы, которые не чувствительны к replication lag • Для таких запросов можно приложению дать отдельный endpoint – балансировщик, который распределит соединения между master и репликами (TCP) • Или научить приложение работать с несколькими серверами сразу – сможете контролировать таймауты, делать retry на другой сервер в случае проблем
  • 32. БД: переключение мастера • Принимаем решение о переключении (может, быстрее починить сервер?) • Переключаем запись на реплику (будут ошибки) • Если нужно, ждем, пока долетят изменения • Добиваем текущий мастер • Перенастраиваем slave->master • Если есть ещё реплики, переключаем их на новый master
  • 33. БД: переключение мастера • Переключаться на автомате сложно и стрёмно • Лучше минимизировать риски и взять под мастер БД более надежное железо (raid, БП и т.д.) • Пишем инструкцию, как переключить мастер (по шагам, с хорошей детализацией, чтобы включать мозг по минимуму) • Устраиваем учения и тестируем инструкцию, замеряем время простоя • Дополняем и уточняем инструкцию, пытаемся сократить время простоя • Тестируем снова
  • 34. БД: репликация != бэкап • “DELETE from table” – убьет данные на реплике тоже • Регулярно делаем бэкап + копируем WAL • Можно держать реплику, специально отстающую на N минут (чтобы быстро отключить репликацию и успеть спасти данные) • Бэкап лучше копировать в другой ДЦ тоже
  • 35. БД: мониторинг • Живость сервиса (есть процесс, listen socket) • Потребление ресурсов процессом (cpu, mem, swap io, disk io, open fd) • Какие запросы занимают CPU • Какие запросы нагружают диски • Отставание репликации, трафик репликации • Поток запросов (больше, меньше, как обычно) • Мониторинг наличия бэкапа
  • 38. БД: что может произойти • Сломалась железка • Потеря данных из-за железа, DELETE, … мониторинг + инструкция по ручному вмешательству • Умер сервис (crash, oom killer, всякое бывает) • Тормоза из-за нехватки ресурсов - мониторинг • Тормоза из-за бОльшего количества запросов - мониторинг • Тормоза из-за кривых запросов (нет нужного индекса, …) - мониторинг
  • 39. Memcached • Распределенный кэш в памяти • Общий доступ по сети
  • 40. Memcached: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Тормозит сеть • Тормоза из-за нехватки ресурсов
  • 41. Memcached • Ставим несколько • Клиенты умеют ходить сразу во все (шардинг) • Обязательно настраиваем таймауты • Проверяем логику инвалидации (expire все равно ставим)
  • 42. Memcached • Выдержит ли БД, если почистить все кэши? • А должна • Сколько нужно прогретых кэшей, чтобы сайт работал? • Проверяем, как клиент будет перераспределять данные и запросы (решардинг), чтобы вылет 1 сервера не испортил нам все • Эффективен ли кэш? • Может, его выкинуть?
  • 44. Memcached: что может произойти • Сломалась железка • Умер сервис (crash, oom killer, всякое бывает) • Тормозит сеть – мониторинг на стороне бэкенда • Тормоза из-за нехватки ресурсов – мониторинг
  • 45. Message Queue • Хранит задачи для отложенной обработки • Publisher – записывает сообщение в очередь • Consumer – получает сообщения и выполняет работу
  • 46. Message Queue: что может произойти • Сломалась железка • Потеря данных (умерла железка с необработанной очередью) • Умер сервис (crash, oom killer, всякое бывает) • Умерли все обработчики (копятся сообщения) • Тормоза из-за нехватки ресурсов
  • 47. Message Queue • Некоторые брокеры заявляют о кластерном режиме работы (мне не очень нравится, много вопросов) • Можно поставить несколько брокеров: писать в любой живой, обработчики должны выбирать сообщения из всех • Обязательно настраиваем таймауты
  • 48. Message Queue: очень важные сообщения • Пишем одно и то же сообщение в несколько брокеров, убираем дубли на уровне обработчиков • Или имеем механизм проверки целостности и восстановления состояния по другим источникам (БД)
  • 49. Message Queue: мониторинг • Потребление ресурсов • Размеры очередей • Скорость приема/доставки сообщений
  • 52. Message Queue: что может произойти • Сломалась железка • Потеря данных (умерла железка с необработанной очередью) • Умер сервис (crash, oom killer, всякое бывает) • Умерли все обработчики (копятся сообщения) - мониторинг • Тормоза из-за нехватки ресурсов - мониторинг
  • 53. Цена вопроса • Начали с 1 dedicated сервера за 20тр/месяц • Минимум: ставим еще один такой же (40тр) • Норма: 2+ БД отдельно на хорошем железе, все остальное размазано по 2+ серверам
  • 54. А что в “облаках”? • Есть возможность поднять новую машину за N минут + API • Есть готовые балансировщики • Есть готовые MQ сервисы • Ресурсы дороже • Можно нарваться на latency (сеть, диск), недополучить ресурсов (cpu) • Готовые сервисы – черные ящики для вас
  • 55. Резервный ДЦ • Данные (репликация) • Актуальная конфигурация ПО • Актуальные версии вашего софта • План переключения трафика в резервный ДЦ: • DNS (помним про ttl) • PI адреса + BGP
  • 56. Самое главное • Составьте список возможных отказов • Исключайте (закрывайте) простые • Если сценарий сложный: • уменьшаем вероятность • закрываем часть • мониторинг + план на ручное вмешательство • Главное – иметь план действий, всё остальное — оптимизация