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

Post on 11-Aug-2015

187 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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)

Битрикс24…

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

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

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

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

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

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

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

и другие

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Детализация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ФТ!

ТЗ!!

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

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

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

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

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

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

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

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

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

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

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

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

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

сначала.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дорого!!!

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

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

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

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

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

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

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

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

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

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

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

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

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

WebRTC звонки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модульность

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

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

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

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

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

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

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

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

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

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

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

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

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

Александр Сербулserbul@1c-bitrix.ru

@AlexSerbul

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

top related