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. Битрикс24…
450 000+ компаний зарегистрировано
70 000+ активных компаний
60+ активных пользователей в компании
99,99% доступность сервиса за 2015 г.
47,5 миллионов сообщений в ленте
4 миллиона звонков совершено
42 тысячи звонков в среднем в день
5. «Скорость сайта» (54485+ сайтов, 1000+ запр./сек)
Бэкап в облако (25000+ сайтов, 42 ТБ)
Мониторинг сайтов из двух датацентров
CDN и оптимизация ресурсов (27000+ сайтов, 5 ТБ в день)
«Обратный» CDN – для динамики
Bigdata, рекомендации (220+ млн. активных пользователей)
Push-уведомления
Мгновенные сообщения (NodeJS, redis)
WebRTC - звонки
и другие
Облачные сервисы
9. Системы изнутри - анализ
Левое и правое полушарие мозга
Формализация эмоций
Коммуникации с клиентом
Страх и отвага, организация команды разработки
Эксперты в предметной области
Роль аналитика
Интуиция, туман и ответственность
10. Системы изнутри -
проектирование
Опыт, инструменты, люди
Клиент, квалификация и согласование
Предвидение вектора развития системы
Детализация
Оценка рисков, прототипы
11. Системы изнутри –
управление проектом
Сроки, риски, теория вероятностей
«Сделай то, никто не знает что, уже вчера»
Управление - Пирамида
Управление - Круг
Управление - Пирамида с кругами
Суровость, справедливость, профессионализм
12. Системы изнутри –
разработчики
Опыт и квалификация
Опыт и квалификация
Опыт и квалификация
«Поиграться/поучиться и …свалить»
Ответственность, храбрость, прозрачность
Коммуникации
13. Системы изнутри –
тестировщики
А что покликать? Тест-кейсы?
Покликать много
Покликать роботом
Автоматизация тестирования
Как найти настоящего тестировщика?
18. Требования, блин, меняются
Идеальный процесс – не панацея
Ресурсы – ограничены!
Много кода – проблема!
Много людей – проблема!
Сложность системы – проблема!
Собственный мозг – проблема!
Жизнь устроена иначе…
19. Баги – наше всё!
Предпочитаем сосредотачиваться на
позитивном
Здравый смысл
Глубокий анализ и управление сложностью
Математика, анализ, модели
«Усложнение и размножение сущностей – первый враг
качества».
Философия качества
21. Багтрекеры, мантисы, …
Юнит-тесты, *-тесты …
Альфа, бета, гамма … «омега»-тестирование
Метрики
Ура, нашли последний баг
Agile и … другие заблуждения человечества
Мы это с вами хорошо
знаем
22. «Хорошо тестируемый» код, mocks
Инварианты, предикаты, исключения,
asserts? ООП его за ногу
Тестирование unit-тестов unit-тестов
Поддержка unit-тестов
Тестов больше чем кода
Дорого!!!
Это мы тоже знаем: unit-
tests
24. Amazon SQS
PHP-воркеры
Шлюз к APNS, Google Cloud Messaging
Собственный протокол
Как протестировать, что сообщение дошло до клиента?
Push-уведомления
25. Long polling
Web sockets
Сторонний модуль для nginx
Отладка сторонних модулей для nginx ;-)
Свое решение на NodeJS/Redis
Как протестировать работу WebSockets на 10 открытых
вкладках за глючным файерволом?
Мгновенные сообщения
27. Почему «многие» кодят на бою и молчат об
этом?
Почему «многие» тестируют на клиентах и
молчат об этом?
Страшная тайна – открыта.
Архитектура и
статистический анализ
28. Глубокий анализ сложности
Теория вероятностей
Логирование и мониторинг
Простые, работающие решения
Модульная разработка
Инкрементальный дизайн
Чистый, вкусный, читаемый, разумный код
Компетенция
«Здоровый пофигизм»
управления качеством
29. Блокировки, тормоза в БД
Сетевые задержки, недоступности
Диск переполнился
Процесс – убит
Транзакции – не спасут!
Гибкие техники программирования
Логировать, измерять, повышать прозрачность
и понимание
Как не сойти с ума?
30. Munin, Zabbix
Pinba – температура по больнице
XHProf – граф вызовов
Логи в ElasticSearch
Percona MySQL
Базовая простая математика и предикаты.
Инструменты
статистического анализа
31. ORM и реальность
ORM и компетенция
Тестирование «ацких» SQL-запросов
Percona Innodb патчи
Гистограммы запросов
Объектно-реляционный
импеданс
32. Разработчик и код
Код и ООП
Код и операционная система
Диски
Сетевые протоколы
Компетенция и отвага
Как протестировать 20-этажный join?
Программистско-
сисадминский импеданс
34. Процессы приложения (число)
Память приложения (реальная,
виртуальная)
Лог ошибок – чист
Лог работы – обновляется
Нагрузка на процессор: user/system mode
Виртуализация
Минимальный набор
36. Диски – по сети
Связность между машинами
Raid-10 и молния
Отказы балансировщика ELB
CloudWatch – польза и не очень
Amazon Web Services – как
точка отказа
37. Как тестировать верстку, selenium
Браузеры
Мобильные устройства
Посидеть, покликать
Быстрые изменения и тестирование
Верстка и роботы
38. Круг vs пирамида, командная игра
Ситуационное лидерство
Проблемы – наверх!
Меньше артефактов - утоните
Визуализация, метафора, коммуникации
Модульность
Общий понятный код
Работающие техники
41. От 85 до 150
виртуальных
серверов + доп.
сервисы: S3, SQS,
CloudFront, Route
53, DynamoDB,
Kinesis.
Три человека – у
которых админство
не является
единственной
деятельностью.