Маштабирование веб-приложений

17
1

description

Все сервисы Яндекса, даже инфраструктурные, испытывают огромную нагрузку и должны быть доступны постоянно. Доклад посвящен вопросам масштабирования систем для обеспечения их повышенной производительности и доступности. Будет рассказано также о мониторинге и планировании нагрузки, выравнивании производительности веб-сервиса, методах балансировки нагрузки и разделения данных.

Transcript of Маштабирование веб-приложений

Page 1: Маштабирование веб-приложений

1

Page 2: Маштабирование веб-приложений

2

Масштабирование

веб-приложений

Олег Алистратов Руководитель офиса разработки в Киеве

Я.Студент, Киев, 2014

Page 3: Маштабирование веб-приложений

3

Зачем?

Высокая производительность

Высокая доступность

Page 4: Маштабирование веб-приложений

4

Мониторинг

o Системы мониторинга o Nagios, Zabbix, Cacti, Ganglia

o Объекты мониторинга o ОС и аппаратура

o Стороннее ПО (БД, веб-сервер)

o Собственное ПО

Page 5: Маштабирование веб-приложений

5

— Приборы? — Семнадцать!

Page 6: Маштабирование веб-приложений

6

Метрики

o SLA o Время ответа, p95: 300 мс

o Доля ошибок: 0,1%

Page 7: Маштабирование веб-приложений

7

Масштабирование

Вертикальное

Горизонтальное

Page 8: Маштабирование веб-приложений

8

Облака

o PaaS o Amazon WS

o GAE

o Частное облако o Cocaine api.yandex.ru/cocaine/

Page 9: Маштабирование веб-приложений

9

Архитектура

Page 10: Маштабирование веб-приложений

10

Хранение файлов

o rsync

o NFS

o NoSQL как хранилище файлов o Elliptics api.yandex.ru/elliptics/

Page 11: Маштабирование веб-приложений

11

Базы данных

o Репликация o master-slave

o multi-master

o Разделение таблиц

o Разделение данных (шардирование) o горизонтальное

o вертикальное

Page 12: Маштабирование веб-приложений

12

Трафик

Page 13: Маштабирование веб-приложений

13

Трафик

Page 14: Маштабирование веб-приложений

14

Прочее

o Сервис распределенных блокировок o Zookeeper

o Распределенная очередь задач o Celery

o Kafka

Page 15: Маштабирование веб-приложений

15

Тестирование

o Нагрузочное o JMeter

o Siege

o Яндекс.Танк github.com/yandex-load

o Интеграционное o Jenkins

o TeamCity

o Travis CI

Page 16: Маштабирование веб-приложений

16

Эксплуатация

o Служба конфигурирования

o Служба развертывания o Горячая замена кода

o Непрерывный мониторинг

Page 17: Маштабирование веб-приложений

17

Спасибо!

Олег Алистратов

[email protected]