Upload
sqalab
View
671
Download
0
Embed Size (px)
Citation preview
Software quality assurance days18 Международная конференция по вопросам качества ПОsqadays.com
Москва. 27–28 ноября 2015
Андрей ШоринHeadHunter, Москва, Россия
Практический опыт создания
уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Андрей Шорин
Заместитель директора эксплуатации сайта hh.ru
https://linkedin.com/in/andshorin
учился в МФТИ на ФУПМ
портировал Squid-cache под Windows
оптимизировал .masterhost в 1,5 раза
принес HeadHunter экономию в 9,5 млн. руб/год
hh.ru
за 2 года uptime ⇗ 99,9%
hh.ru
за 2 года uptime ⇗ 99,9%
экономия 6 млн. руб в год
hh.ru
за 2 года uptime ⇗ 99,9%
экономия 6 млн. руб в год
время доставки задач 7 дней ⇘ 4 часа
hh.ru
за 2 года uptime ⇗ 99,9%
экономия 6 млн. руб в год
время доставки задач 7 дней ⇘ 4 часа
1 мин. простоя затрагивает более 30 тыс. пользователей
hh.ru
3-й в мире работный сайт по посещаемости
1,5 млн. посетителей в день
2 тыс. RPS
hh.ru
116 сервисов
280 серверов и виртуальных машин
1,5 ТБ логов в день
610 тыс. метрик в мониторинге
hh.ru
7 релизов сервисов в день
40 ГБ памяти на стенд
80 тестовых стендов
20 запусков автотестов в день
5,5 тыс. тестов в одном прогоне
одинаково ли запускаются сервисы?
одинаково ли запускаются сервисы?
в одинаковых ли местах лежат логи?
одинаково ли запускаются сервисы?
в одинаковых ли местах лежат логи?
используются ли одни и те же конфиг-файлы?
Test vs Prod
одинаково ли запускаются сервисы?
в одинаковых ли местах лежат логи?
используются ли одни и те же конфиг-файлы?
Одинаковые конфиги?..
Одинаковые конфиги?..
сначала чистый контейнер
скрипты выкладки из эксплуатации
конфиг-файлы из эксплуатции
Одинаковые конфиги?..
сначала чистый контейнер
скрипты выкладки из эксплуатации
конфиг-файлы из эксплуатции
секретные настройки – в переменные
Одинаковые конфиги?..
сначала чистый контейнер
скрипты выкладки из эксплуатации
конфиг-файлы из эксплуатции
секретные настройки – в переменные
отличия от боевых конфигов – в переменные
Одинаковые конфиги?..
сначала чистый контейнер
скрипты выкладки из эксплуатации
конфиг-файлы из эксплуатции
секретные настройки – в переменные
отличия от боевых конфигов – в переменные
Ansible, Puppet, Salt...
Одинаковые конфиги
ru.headhunter.search.url=http://{{ intbal_ip1 }}:9199
ru.headhunter.search.connectiontimeout = 10
relations.mq.hosts={{ amqp_site_put }}
relations.mq.username={{ amqp_site_l }}
relations.mq.password={{ amqp_site_p }}
relations.mq.virtualhost=site
Балансировщик
Сервер 1
Балансировщик
Сервис A Сервис B
Сервер 2
Балансировщик на стенде
зачем?
Балансировщик на стенде
легче разбирать инциденты
Балансировщик
Сервис AВход A
Вход B Сервис B
Балансировщик
Сервис AВход A
Вход B Сервис B
Балансировщик
Сервис AВход A
Вход B Сервис B
Балансировщик
Сервис AВход A
Вход B Сервис B
Балансировщик
Сервис AВход A
Вход B Сервис B
Критичныйфункционал
Балансировщик
Сервис AВход A
Вход B Сервис B
Критичныйфункционал
500
Балансировщик на стенде
легче разбирать инциденты
тестировать конфигурацию балансировщика
Балансировщик на стенде
легче разбирать инциденты
тестировать конфигурацию балансировщика
Балансировщик на стенде
легче разбирать инциденты
тестировать конфигурацию балансировщика
отладить ретраи
Балансировщик на стенде
легче разбирать инциденты
тестировать конфигурацию балансировщика
отладить ретраи
тестировать выкладку релиза
Балансировщик на стенде
легче разбирать инциденты
тестировать конфигурацию балансировщика
отладить ретраи
тестировать выкладку релиза
Как в бою
сервис == сервер
те же скрипты выкладки и конфиги
различия – в переменные
балансировщик
процесс выкладки
Сократили на 100 мин в месяц простои сайта
Научились автоматически раскатывать кластер
Тестируем Debian пакеты
Стенд создаем заново за 1,5 часа автоматически
Контейнер с сервисом создаем заново за 1 минуту
Сохранили скорость прохождения автотестов
Запросы по памяти увеличились вдвое
Тестируем боевую инфраструктуру
Андрей ШоринSite ops deputy head
linkedin.com/in/andshorin
Алексей АнисимовQA head
facebook.com/irreality.0
Тестируй, как в бою
Тестируй, как в бою
сервис == сервер
Тестируй, как в бою
сервис == сервер
те же скрипты выкладки и конфиги
различия – в переменные
Тестируй, как в бою
сервис == сервер
те же скрипты выкладки и конфиги
различия – в переменные
балансировщик
Тестируй, как в бою
сервис == сервер
те же скрипты выкладки и конфиги
различия – в переменные
балансировщик
процесс выкладки
Тестируй, как в бою
сервис == сервер
те же скрипты выкладки и конфиги
различия – в переменные
балансировщик
процесс выкладки
Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Андрей Шорин