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

43
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные камни и надводные скалы Александр Сербул руководитель направления контроля качества интеграции и внедрений «1С-Битрикс»

Upload: sqalab

Post on 11-Aug-2015

198 views

Category:

Education


4 download

TRANSCRIPT

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

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

Александр Сербулруководитель направления

контроля качества интеграции и внедрений«1С-Битрикс»

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

Глубокий вдох…

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

Elastic Load Balancing

Web 1

Elastic Load Balancing

DynamicHTTPS

*.com/*.de

Web N

…CloudWatch + AutoScaling

Web 1 Web 2 Web N

…CloudWatch + AutoScaling

Архитектура Битрикс24

S3

management, monitoring,

backup

StaticHTTPS

*.com/*.de

CDN (Amazon CloudFront)

js, css

DynamicHTTPS

*.ru

StaticHTTPS

*.ru

CDN (CDNvideo)

js, css

imag

es (c

lient

s)

imag

es (c

lient

s)

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 replicationmysqld

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)

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

Битрикс24…

450 000+ компаний зарегистрировано

70 000+ активных компаний

60+ активных пользователей в компании

99,99% доступность сервиса за 2015 г.

47,5 миллионов сообщений в ленте

4 миллиона звонков совершено 42 тысячи звонков в среднем в день

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

«Скорость сайта» (54485+ сайтов, 1000+ запр./сек) Бэкап в облако (25000+ сайтов, 42 ТБ) Мониторинг сайтов из двух датацентров CDN и оптимизация ресурсов (27000+ сайтов, 5 ТБ в день) «Обратный» CDN – для динамики Bigdata, рекомендации (220+ млн. активных пользователей) Push-уведомления Мгновенные сообщения (NodeJS, redis) WebRTC - звонки

и другие

Облачные сервисы

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

Прототип на доске

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

Инфраструктура в Амазоне Отказоустойчивость, автоматизация MySQL мастер-мастер репликация Композитный кэш «Параноидальный» мониторинг PHP на высоких нагрузках Bigdata, математика, машинное обучение, java, Spark, Hadoop, Mahout

Технологические «вкусности»…

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

Глубокий выдох…

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

Системы изнутри - анализ

Левое и правое полушарие мозга

Формализация эмоций

Коммуникации с клиентом

Страх и отвага, организация команды разработки

Эксперты в предметной области

Роль аналитика

Интуиция, туман и ответственность

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

Системы изнутри - проектирование

Опыт, инструменты, люди

Клиент, квалификация и согласование

Предвидение вектора развития системы

Детализация

Оценка рисков, прототипы

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

Системы изнутри – управление проектом

Сроки, риски, теория вероятностей

«Сделай то, никто не знает что, уже вчера»

Управление - Пирамида

Управление - Круг

Управление - Пирамида с кругами

Суровость, справедливость, профессионализм

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

Системы изнутри – разработчики

Опыт и квалификация

Опыт и квалификация

Опыт и квалификация

«Поиграться/поучиться и …свалить»

Ответственность, храбрость, прозрачность

Коммуникации

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

Системы изнутри – тестировщики

А что покликать? Тест-кейсы?

Покликать много

Покликать роботом

Автоматизация тестирования

Как найти настоящего тестировщика?

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

Идеальный процесс тестирования

ФТ!

ТЗ!!

Модульные тесты

Тестирование модульных тестов

Тестирование тестов модульных тестов

Функциональное тестирование, тест-кейсы

Приемочное тестирование …

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

Идеальный процесс тестирования

Интеграционное тестирование

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

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

Нагрузочное тестирование

Тестирование настройки сред выполнения

Тестирование собственной адекватности

А теперь давайте тут подправим логику и все

сначала.

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

Вавилонская башня

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

Краб, НЛО и подводная лодка…

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

Требования, блин, меняются

Идеальный процесс – не панацея

Ресурсы – ограничены!

Много кода – проблема!

Много людей – проблема!

Сложность системы – проблема!

Собственный мозг – проблема!

Жизнь устроена иначе…

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

Баги – наше всё! Предпочитаем сосредотачиваться на позитивном Здравый смысл Глубокий анализ и управление сложностью Математика, анализ, модели

«Усложнение и размножение сущностей – первый враг качества».

Философия качества

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

Баги – наше всё!Баги – наше всё!

Баги – наше всё!

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

Багтрекеры, мантисы, … Юнит-тесты, *-тесты … Альфа, бета, гамма … «омега»-тестирование Метрики Ура, нашли последний баг Agile и … другие заблуждения человечества

Мы это с вами хорошо знаем

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

«Хорошо тестируемый» код, mocks Инварианты, предикаты, исключения, asserts? ООП его за ногу Тестирование unit-тестов unit-тестов Поддержка unit-тестов Тестов больше чем кода

Дорого!!!

Это мы тоже знаем: unit-tests

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

Среда разработки

«Идеальная» схема

Среда тестирования

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

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

Amazon SQS PHP-воркеры Шлюз к APNS, Google Cloud Messaging Собственный протокол

Как протестировать, что сообщение дошло до клиента?

Push-уведомления

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

Long polling Web sockets Сторонний модуль для nginx Отладка сторонних модулей для nginx ;-) Свое решение на NodeJS/Redis

Как протестировать работу WebSockets на 10 открытых вкладках за глючным файерволом?

Мгновенные сообщения

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

WebRTC – технология STUN TURN Сигналинг Видео-кластер Битрикс Групповые звонки и конференции

Как протестировать работу протокола между «стационарным» браузером и клиентом мобильной сети?

WebRTC звонки

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

Почему «многие» кодят на бою и молчат об этом? Почему «многие» тестируют на клиентах и молчат об этом?

Страшная тайна – открыта.

Архитектура и статистический анализ

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

Глубокий анализ сложности Теория вероятностей Логирование и мониторинг Простые, работающие решения Модульная разработка Инкрементальный дизайн Чистый, вкусный, читаемый, разумный код Компетенция

«Здоровый пофигизм» управления качеством

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

Блокировки, тормоза в БД Сетевые задержки, недоступности Диск переполнился Процесс – убит Транзакции – не спасут! Гибкие техники программирования

Логировать, измерять, повышать прозрачность и понимание

Как не сойти с ума?

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

Munin, Zabbix Pinba – температура по больнице XHProf – граф вызовов Логи в ElasticSearch Percona MySQL

Базовая простая математика и предикаты.

Инструменты статистического анализа

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

ORM и реальность ORM и компетенция Тестирование «ацких» SQL-запросов Percona Innodb патчи Гистограммы запросов

Объектно-реляционный импеданс

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

Разработчик и код Код и ООП Код и операционная система Диски Сетевые протоколы Компетенция и отвага

Как протестировать 20-этажный join?

Программистско-сисадминский импеданс

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

Логи, awk strace sysstat top, ps, apachetop tcpdump Сетевые протоколы

Unix – как инструмент тестировщика

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

Процессы приложения (число) Память приложения (реальная, виртуальная) Лог ошибок – чист Лог работы – обновляется

Нагрузка на процессор: user/system modeВиртуализация

Минимальный набор

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

Основные сценарии Все сценарии Покрытие curl, bash Smoke-тестирование nagios

Функциональные тесты

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

Диски – по сети Связность между машинами Raid-10 и молния Отказы балансировщика ELB CloudWatch – польза и не очень

Amazon Web Services – как точка отказа

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

Как тестировать верстку, selenium Браузеры Мобильные устройства Посидеть, покликать Быстрые изменения и тестирование

Верстка и роботы

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

Круг vs пирамида, командная игра

Ситуационное лидерство

Проблемы – наверх!

Меньше артефактов - утоните

Визуализация, метафора, коммуникации

Модульность

Общий понятный код

Работающие техники

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

Тотальная регистрация ошибок

Информационные каналы

Поиск корня проблем

Прозрачность

Роль внутренней культуры компании

Уважение клиентов

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

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

Управление качеством начинается с обсуждения первой фичи…

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

От 85 до 150 виртуальных серверов + доп. сервисы: S3, SQS, CloudFront, Route 53, DynamoDB, Kinesis.

Три человека – у которых админство не является единственной деятельностью.

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

Спасибо за внимание! Вопросы?

Александр Сербул[email protected]

@AlexSerbul

http://www.1c-bitrix.ru