Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Тестирование высоконагруженных
облачных веб-сервисов в Amazon -
подводные камни и надводные скалы
Александр Сербул
руковод...
Глубокий вдох…
Elastic Load Balancing
Web 1
Elastic Load Balancing
Dynamic
HTTPS
*.com/*.de
Web N
…
CloudWatch
+
AutoScaling
Web 1 Web 2 ...
Битрикс24…
450 000+ компаний зарегистрировано
70 000+ активных компаний
60+ активных пользователей в компании
99,99% досту...
«Скорость сайта» (54485+ сайтов, 1000+ запр./сек)
Бэкап в облако (25000+ сайтов, 42 ТБ)
Мониторинг сайтов из двух датацент...
Прототип на доске
Инфраструктура в Амазоне
Отказоустойчивость, автоматизация
MySQL мастер-мастер репликация
Композитный кэш
«Параноидальный»...
Глубокий выдох…
Системы изнутри - анализ
Левое и правое полушарие мозга
Формализация эмоций
Коммуникации с клиентом
Страх и отвага, органи...
Системы изнутри -
проектирование
Опыт, инструменты, люди
Клиент, квалификация и согласование
Предвидение вектора развития ...
Системы изнутри –
управление проектом
Сроки, риски, теория вероятностей
«Сделай то, никто не знает что, уже вчера»
Управле...
Системы изнутри –
разработчики
Опыт и квалификация
Опыт и квалификация
Опыт и квалификация
«Поиграться/поучиться и …свалит...
Системы изнутри –
тестировщики
А что покликать? Тест-кейсы?
Покликать много
Покликать роботом
Автоматизация тестирования
К...
Идеальный процесс
тестирования
ФТ!
ТЗ!!
Модульные тесты
Тестирование модульных тестов
Тестирование тестов модульных тестов...
Идеальный процесс
тестирования
Интеграционное тестирование
Тестирование верстки
Тестирование контента
Нагрузочное тестиров...
Вавилонская башня
Краб, НЛО и подводная лодка…
Требования, блин, меняются
Идеальный процесс – не панацея
Ресурсы – ограничены!
Много кода – проблема!
Много людей – пробл...
Баги – наше всё!
Предпочитаем сосредотачиваться на
позитивном
Здравый смысл
Глубокий анализ и управление сложностью
Матема...
Баги – наше всё!
Баги – наше всё!
Баги – наше всё!
Багтрекеры, мантисы, …
Юнит-тесты, *-тесты …
Альфа, бета, гамма … «омега»-тестирование
Метрики
Ура, нашли последний баг
Ag...
«Хорошо тестируемый» код, mocks
Инварианты, предикаты, исключения,
asserts? ООП его за ногу
Тестирование unit-тестов unit-...
Среда разработки
«Идеальная» схема
Среда тестирования
Эксплуатация
Amazon SQS
PHP-воркеры
Шлюз к APNS, Google Cloud Messaging
Собственный протокол
Как протестировать, что сообщение дошло до...
Long polling
Web sockets
Сторонний модуль для nginx
Отладка сторонних модулей для nginx ;-)
Свое решение на NodeJS/Redis
К...
WebRTC – технология
STUN
TURN
Сигналинг
Видео-кластер Битрикс
Групповые звонки и конференции
Как протестировать работу про...
Почему «многие» кодят на бою и молчат об
этом?
Почему «многие» тестируют на клиентах и
молчат об этом?
Страшная тайна – от...
Глубокий анализ сложности
Теория вероятностей
Логирование и мониторинг
Простые, работающие решения
Модульная разработка
Ин...
Блокировки, тормоза в БД
Сетевые задержки, недоступности
Диск переполнился
Процесс – убит
Транзакции – не спасут!
Гибкие т...
Munin, Zabbix
Pinba – температура по больнице
XHProf – граф вызовов
Логи в ElasticSearch
Percona MySQL
Базовая простая мат...
ORM и реальность
ORM и компетенция
Тестирование «ацких» SQL-запросов
Percona Innodb патчи
Гистограммы запросов
Объектно-ре...
Разработчик и код
Код и ООП
Код и операционная система
Диски
Сетевые протоколы
Компетенция и отвага
Как протестировать 20-...
Логи, awk
strace
sysstat
top, ps, apachetop
tcpdump
Сетевые протоколы
Unix – как инструмент
тестировщика
Процессы приложения (число)
Память приложения (реальная,
виртуальная)
Лог ошибок – чист
Лог работы – обновляется
Нагрузка ...
Основные сценарии
Все сценарии
Покрытие
curl, bash
Smoke-тестирование
nagios
Функциональные тесты
Диски – по сети
Связность между машинами
Raid-10 и молния
Отказы балансировщика ELB
CloudWatch – польза и не очень
Amazon ...
Как тестировать верстку, selenium
Браузеры
Мобильные устройства
Посидеть, покликать
Быстрые изменения и тестирование
Верст...
Круг vs пирамида, командная игра
Ситуационное лидерство
Проблемы – наверх!
Меньше артефактов - утоните
Визуализация, метаф...
Тотальная регистрация ошибок
Информационные каналы
Поиск корня проблем
Прозрачность
Роль внутренней культуры компании
Уваж...
Управление качеством
начинается с обсуждения
первой фичи…
От 85 до 150
виртуальных
серверов + доп.
сервисы: S3, SQS,
CloudFront, Route
53, DynamoDB,
Kinesis.
Три человека – у
котор...
Спасибо за внимание!
Вопросы?
Александр Сербул
serbul@1c-bitrix.ru
@AlexSerbul
http://www.1c-bitrix.ru
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные камни и надводные скалы
Upcoming SlideShare
Loading in …5
×

Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные камни и надводные скалы

915 views

Published on

Доклад Александра Сербула на конференции SQA Days-17,
29-30 мая 2015 г., Минск
www.sqadays.com

Published in: Education
  • Be the first to comment

  • Be the first to like this

Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные камни и надводные скалы

  1. 1. Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные камни и надводные скалы Александр Сербул руководитель направления контроля качества интеграции и внедрений «1С-Битрикс»
  2. 2. Глубокий вдох…
  3. 3. Elastic Load Balancing Web 1 Elastic Load Balancing Dynamic HTTPS *.com/*.de Web N … CloudWatch + AutoScaling Web 1 Web 2 Web N … CloudWatch + AutoScaling Архитектура Битрикс24 S3 management, monitoring, backup Static HTTPS *.com/*.de CDN (Amazon CloudFront) js, css Dynamic HTTPS *.ru Static HTTPS *.ru CDN (CDNvideo) js, css images(clients) images(clients) local cache (APC) local cache (APC) local cache (APC) local cache (APC) local cache (APC) control cache: memcached mysqld mysqld mysqld mysqld mysqld mysqld master-master replication master-master replication master-master replication mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld control cache: memcached control cache: memcached control cache: memcached control cache: memcached control cache: memcached Web 2 local cache (APC)
  4. 4. Битрикс24… 450 000+ компаний зарегистрировано 70 000+ активных компаний 60+ активных пользователей в компании 99,99% доступность сервиса за 2015 г. 47,5 миллионов сообщений в ленте 4 миллиона звонков совершено 42 тысячи звонков в среднем в день
  5. 5. «Скорость сайта» (54485+ сайтов, 1000+ запр./сек) Бэкап в облако (25000+ сайтов, 42 ТБ) Мониторинг сайтов из двух датацентров CDN и оптимизация ресурсов (27000+ сайтов, 5 ТБ в день) «Обратный» CDN – для динамики Bigdata, рекомендации (220+ млн. активных пользователей) Push-уведомления Мгновенные сообщения (NodeJS, redis) WebRTC - звонки и другие Облачные сервисы
  6. 6. Прототип на доске
  7. 7. Инфраструктура в Амазоне Отказоустойчивость, автоматизация MySQL мастер-мастер репликация Композитный кэш «Параноидальный» мониторинг PHP на высоких нагрузках Bigdata, математика, машинное обучение, java, Spark, Hadoop, Mahout Технологические «вкусности»…
  8. 8. Глубокий выдох…
  9. 9. Системы изнутри - анализ Левое и правое полушарие мозга Формализация эмоций Коммуникации с клиентом Страх и отвага, организация команды разработки Эксперты в предметной области Роль аналитика Интуиция, туман и ответственность
  10. 10. Системы изнутри - проектирование Опыт, инструменты, люди Клиент, квалификация и согласование Предвидение вектора развития системы Детализация Оценка рисков, прототипы
  11. 11. Системы изнутри – управление проектом Сроки, риски, теория вероятностей «Сделай то, никто не знает что, уже вчера» Управление - Пирамида Управление - Круг Управление - Пирамида с кругами  Суровость, справедливость, профессионализм
  12. 12. Системы изнутри – разработчики Опыт и квалификация Опыт и квалификация Опыт и квалификация «Поиграться/поучиться и …свалить» Ответственность, храбрость, прозрачность Коммуникации
  13. 13. Системы изнутри – тестировщики А что покликать? Тест-кейсы? Покликать много Покликать роботом Автоматизация тестирования Как найти настоящего тестировщика?
  14. 14. Идеальный процесс тестирования ФТ! ТЗ!! Модульные тесты Тестирование модульных тестов Тестирование тестов модульных тестов Функциональное тестирование, тест-кейсы Приемочное тестирование …
  15. 15. Идеальный процесс тестирования Интеграционное тестирование Тестирование верстки Тестирование контента Нагрузочное тестирование Тестирование настройки сред выполнения Тестирование собственной адекватности  А теперь давайте тут подправим логику и все сначала.
  16. 16. Вавилонская башня
  17. 17. Краб, НЛО и подводная лодка…
  18. 18. Требования, блин, меняются Идеальный процесс – не панацея Ресурсы – ограничены! Много кода – проблема! Много людей – проблема! Сложность системы – проблема! Собственный мозг – проблема!  Жизнь устроена иначе…
  19. 19. Баги – наше всё! Предпочитаем сосредотачиваться на позитивном Здравый смысл Глубокий анализ и управление сложностью Математика, анализ, модели «Усложнение и размножение сущностей – первый враг качества». Философия качества
  20. 20. Баги – наше всё! Баги – наше всё! Баги – наше всё!
  21. 21. Багтрекеры, мантисы, … Юнит-тесты, *-тесты … Альфа, бета, гамма … «омега»-тестирование Метрики Ура, нашли последний баг Agile и … другие заблуждения человечества Мы это с вами хорошо знаем
  22. 22. «Хорошо тестируемый» код, mocks Инварианты, предикаты, исключения, asserts? ООП его за ногу Тестирование unit-тестов unit-тестов Поддержка unit-тестов Тестов больше чем кода Дорого!!! Это мы тоже знаем: unit- tests
  23. 23. Среда разработки «Идеальная» схема Среда тестирования Эксплуатация
  24. 24. Amazon SQS PHP-воркеры Шлюз к APNS, Google Cloud Messaging Собственный протокол Как протестировать, что сообщение дошло до клиента? Push-уведомления
  25. 25. Long polling Web sockets Сторонний модуль для nginx Отладка сторонних модулей для nginx ;-) Свое решение на NodeJS/Redis Как протестировать работу WebSockets на 10 открытых вкладках за глючным файерволом? Мгновенные сообщения
  26. 26. WebRTC – технология STUN TURN Сигналинг Видео-кластер Битрикс Групповые звонки и конференции Как протестировать работу протокола между «стационарным» браузером и клиентом мобильной сети? WebRTC звонки
  27. 27. Почему «многие» кодят на бою и молчат об этом? Почему «многие» тестируют на клиентах и молчат об этом? Страшная тайна – открыта. Архитектура и статистический анализ
  28. 28. Глубокий анализ сложности Теория вероятностей Логирование и мониторинг Простые, работающие решения Модульная разработка Инкрементальный дизайн Чистый, вкусный, читаемый, разумный код Компетенция «Здоровый пофигизм» управления качеством
  29. 29. Блокировки, тормоза в БД Сетевые задержки, недоступности Диск переполнился Процесс – убит Транзакции – не спасут! Гибкие техники программирования Логировать, измерять, повышать прозрачность и понимание Как не сойти с ума?
  30. 30. Munin, Zabbix Pinba – температура по больнице XHProf – граф вызовов Логи в ElasticSearch Percona MySQL Базовая простая математика и предикаты. Инструменты статистического анализа
  31. 31. ORM и реальность ORM и компетенция Тестирование «ацких» SQL-запросов Percona Innodb патчи Гистограммы запросов Объектно-реляционный импеданс
  32. 32. Разработчик и код Код и ООП Код и операционная система Диски Сетевые протоколы Компетенция и отвага Как протестировать 20-этажный join? Программистско- сисадминский импеданс
  33. 33. Логи, awk strace sysstat top, ps, apachetop tcpdump Сетевые протоколы Unix – как инструмент тестировщика
  34. 34. Процессы приложения (число) Память приложения (реальная, виртуальная) Лог ошибок – чист Лог работы – обновляется Нагрузка на процессор: user/system mode Виртуализация Минимальный набор
  35. 35. Основные сценарии Все сценарии Покрытие curl, bash Smoke-тестирование nagios Функциональные тесты
  36. 36. Диски – по сети Связность между машинами Raid-10 и молния Отказы балансировщика ELB CloudWatch – польза и не очень Amazon Web Services – как точка отказа
  37. 37. Как тестировать верстку, selenium Браузеры Мобильные устройства Посидеть, покликать Быстрые изменения и тестирование Верстка и роботы
  38. 38. Круг vs пирамида, командная игра Ситуационное лидерство Проблемы – наверх! Меньше артефактов - утоните Визуализация, метафора, коммуникации Модульность Общий понятный код Работающие техники
  39. 39. Тотальная регистрация ошибок Информационные каналы Поиск корня проблем Прозрачность Роль внутренней культуры компании Уважение клиентов Тестирование
  40. 40. Управление качеством начинается с обсуждения первой фичи…
  41. 41. От 85 до 150 виртуальных серверов + доп. сервисы: S3, SQS, CloudFront, Route 53, DynamoDB, Kinesis. Три человека – у которых админство не является единственной деятельностью.
  42. 42. Спасибо за внимание! Вопросы? Александр Сербул serbul@1c-bitrix.ru @AlexSerbul http://www.1c-bitrix.ru

×