52
Software quality assurance days 18 Международная конференция по вопросам качества ПО sqadays.com Москва. 27–28 ноября 2015 Андрей Шорин HeadHunter, Москва, Россия Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

  • Upload
    sqalab

  • View
    671

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Software quality assurance days18 Международная конференция по вопросам качества ПОsqadays.com

Москва. 27–28 ноября 2015

Андрей ШоринHeadHunter, Москва, Россия

Практический опыт создания

уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Page 2: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 3: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Андрей Шорин

Заместитель директора эксплуатации сайта hh.ru

https://linkedin.com/in/andshorin

учился в МФТИ на ФУПМ

портировал Squid-cache под Windows

оптимизировал .masterhost в 1,5 раза

принес HeadHunter экономию в 9,5 млн. руб/год

Page 4: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

за 2 года uptime ⇗ 99,9%

Page 5: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

за 2 года uptime ⇗ 99,9%

экономия 6 млн. руб в год

Page 6: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

за 2 года uptime ⇗ 99,9%

экономия 6 млн. руб в год

время доставки задач 7 дней ⇘ 4 часа

Page 7: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

за 2 года uptime ⇗ 99,9%

экономия 6 млн. руб в год

время доставки задач 7 дней ⇘ 4 часа

1 мин. простоя затрагивает более 30 тыс. пользователей

Page 8: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

3-й в мире работный сайт по посещаемости

1,5 млн. посетителей в день

2 тыс. RPS

Page 9: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

116 сервисов

280 серверов и виртуальных машин

1,5 ТБ логов в день

610 тыс. метрик в мониторинге

Page 10: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

hh.ru

7 релизов сервисов в день

40 ГБ памяти на стенд

80 тестовых стендов

20 запусков автотестов в день

5,5 тыс. тестов в одном прогоне

Page 11: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 12: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

одинаково ли запускаются сервисы?

Page 13: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

одинаково ли запускаются сервисы?

в одинаковых ли местах лежат логи?

Page 14: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

одинаково ли запускаются сервисы?

в одинаковых ли местах лежат логи?

используются ли одни и те же конфиг-файлы?

Page 15: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Test vs Prod

одинаково ли запускаются сервисы?

в одинаковых ли местах лежат логи?

используются ли одни и те же конфиг-файлы?

Page 16: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 17: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 18: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги?..

Page 19: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги?..

сначала чистый контейнер

скрипты выкладки из эксплуатации

конфиг-файлы из эксплуатции

Page 20: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 21: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги?..

сначала чистый контейнер

скрипты выкладки из эксплуатации

конфиг-файлы из эксплуатции

секретные настройки – в переменные

Page 22: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги?..

сначала чистый контейнер

скрипты выкладки из эксплуатации

конфиг-файлы из эксплуатции

секретные настройки – в переменные

отличия от боевых конфигов – в переменные

Page 23: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги?..

сначала чистый контейнер

скрипты выкладки из эксплуатации

конфиг-файлы из эксплуатции

секретные настройки – в переменные

отличия от боевых конфигов – в переменные

Ansible, Puppet, Salt...

Page 24: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Одинаковые конфиги

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

Page 25: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 26: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервер 1

Балансировщик

Сервис A Сервис B

Сервер 2

Page 27: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

зачем?

Page 28: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

Page 29: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Page 30: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Page 31: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Page 32: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Page 33: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Критичныйфункционал

Page 34: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик

Сервис AВход A

Вход B Сервис B

Критичныйфункционал

500

Page 35: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

тестировать конфигурацию балансировщика

Page 36: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 37: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

тестировать конфигурацию балансировщика

Page 38: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

тестировать конфигурацию балансировщика

отладить ретраи

Page 39: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

тестировать конфигурацию балансировщика

отладить ретраи

тестировать выкладку релиза

Page 40: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 41: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Балансировщик на стенде

легче разбирать инциденты

тестировать конфигурацию балансировщика

отладить ретраи

тестировать выкладку релиза

Page 42: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 43: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков
Page 44: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Как в бою

сервис == сервер

те же скрипты выкладки и конфиги

различия – в переменные

балансировщик

процесс выкладки

Page 45: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Сократили на 100 мин в месяц простои сайта

Научились автоматически раскатывать кластер

Тестируем Debian пакеты

Стенд создаем заново за 1,5 часа автоматически

Контейнер с сервисом создаем заново за 1 минуту

Сохранили скорость прохождения автотестов

Запросы по памяти увеличились вдвое

Тестируем боевую инфраструктуру

Page 46: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Андрей ШоринSite ops deputy head

linkedin.com/in/andshorin

Алексей АнисимовQA head

facebook.com/irreality.0

Page 47: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

Page 48: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

сервис == сервер

Page 49: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

сервис == сервер

те же скрипты выкладки и конфиги

различия – в переменные

Page 50: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

сервис == сервер

те же скрипты выкладки и конфиги

различия – в переменные

балансировщик

Page 51: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

сервис == сервер

те же скрипты выкладки и конфиги

различия – в переменные

балансировщик

процесс выкладки

Page 52: Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Тестируй, как в бою

сервис == сервер

те же скрипты выкладки и конфиги

различия – в переменные

балансировщик

процесс выкладки

Практический опыт создания уменьшенной копии боевой инфраструктуры сайта для тестировщиков

Андрей Шорин