SlideShare a Scribd company logo
Стратегия и тактика
улучшения
производительности BSS
систем оператора мобильной
связи Yota
Олег Филатьев
Павел Нашатырев
Александр Семелит
YOTA
Алло
Инкогнито
Aiva Mobile
Matrix Mobile SIM-SIM Другие
Доли рынка
YOTA – 81%
Алло Инкогнито – 7%
SIM-SIM – 4%
Matrix Mobile – 4%
Aiva Mobile – 3%
Другие – 1%
YOTA – самый крупный
MVNO оператор в России
Как сотовый оператор стартовали в середине 2014
MVNO – виртуальный оператор без собственной сети
YOTA занимает
место среди MVNO
операторов в мире
10
Стратегия и тактика улучшения производительности BSS систем оператора мобильной связи Yota / Олег Филатьев, Павел Нашатырев (Yota)
60+ бизнес-процессов
96 систем и сервисов
420+ серверов
13000+ запросов на обслуживание
200+ проектов и релизов
Общая архитектура BSS
BSS – Business Support System
WebAPI
ESB (Java/Tibco)
Billing
(Oracle. PL/SQL)
CRM (MS
Dynamics)
Customer
Interaction
Product
Catalog
Payment
System
Remote Dealer
Business
intelligence
• 30 сервисов
• 70 инстансов сервисов
• Production – 20 серверов.
• 200 читающих вызовов в сек.
• 200 изменяющих вызовов в сек.
• Часть подсистем проприетарная
OSS
Mobile
App
• Каждый вызов запускает процесс на ESB
• Каждый процесс вызывает 5-10 методов
конечных сервисов
• Конечные сервисы выполняют 2-5 атомарных
операций
• 7-10 тыс. атомарных операций в сек
• Процессы меняются часто – каждые 2-3
месяца
• Критичных процессов – около 10 (всего ~ 60)
Оптимизируем критичные EndToEnd
процессы
400 вызовов/сек не много, НО:
Контроль над производительностью
Выделенная группа в разработке-тестировании для контроля над
производительностью выпускаемых релизов.
Тестовый стенд – половина Production с идентичными
настройками.
Несколько видов тестов:
1. Комплексный 3-х часовой с постепенным увеличением нагрузки.
Контрольный для каждого релиза.
2. Длительный 8-часовой для тестирования новых компонентов и
существенных изменениях в старых. Не в каждом релизе.
3. Специализированные тесты, например, на прогрев кэша
Основной инструмент – JMeter 3
Ключевые улучшения за 2016
• Кэширование Product Catalog и справочников
• Оптимизация часто вызываемых EndToEnd
процессов
• Оптимизация запросов и структур БД
• Внедрение in-memory database для быстрого чтения
данных по клиенту – подход CQRS
• Java вместо Tibco ESB
• Асинхронное взаимодействие с MobileAPP
Кэширование Product Catalog (тарифы)
Стратегия кэширования – сохранять вызовы методов
Ключ записи в кэше – хеш-функция от параметров
Pros:
• Легкая реализация + простые структуры
• Возможно хранить кэш на стороне вызывающего сервиса
Cons:
• Комбинаторность, требующая больше памяти при повышении
кол-ва параметров или их комбинаций
• Медленный прогрев кэша
Общий выигрыш в скорости в десятки раз – БД почти не нагружена
после прогрева
В будущем – переход на объекты в памяти
Кэш Product Catalog – разработка
• Ehcache 2.x
• Репликация
• Сохранение на диск для быстрого прогрева
Нагрузка на БД до:
Нагрузка на БД после:
Внедрение in-memory database
Необходимо хранить информацию о СИМ-картах клиентов и подключенные
продукты вне биллинга на Oracle, в более быстрой БД.
Сделали БД для чтения на Tarantool с синхронизацией с Oracle БД – CQRS
подход.
Для синхронизации – GoldenGate. Ограничение по времени синхронизации
(latency) < 0.3 сек.
Эффект:
• Ускорение доступа к данным в 7-10 раз при вызове сервиса.
• Снижение нагрузки на сервера БД на порядок (c 20 сессий до 1 или с 8 ядер
до 1)
Почему Tarantool?
Сравнивали с Apache Ignite, Oracle TimesTen, CoachBase, Haselcast,
Redis
Наличие фич БД
(индексы, скрипты)
Техподдержка в РФ Стоимость
техподдержки
Tarantool + + +
Apache Ignite + -
Oracle Times
Ten
+ + -
CoachBase -/+ - -
Redis + - -
Haselcast - - -
На прошлой Highload 2015 впечатлил доклад о работе Tarantool
Tarantool – разработка
• Разные типы индексов
• Активно используем составные индексы
• Гранулярная очистка кэша
• Обновление процедур без простоев
• Написали свой Java connection pool
• На самом деле connection pool не нужен
Источники
изменения:
• Прямые
вызовы
сервисов
• Звонки
• Биллинговые
процессы
• Скрипты в
Oracle
Service
Oracle DB
Invalidate
Tarantool
Modify
Неконсистентность
Чтение 1Изменение Чтение 2
Sync
Del
Save
Чтение 3
Синхронизация баз данных
Java вместо Tibco BW
• Логика требует вложенных циклов
• Сталкиваемся с ограничениями среды
• Баги, проявляющиеся только под нагрузкой
• Особенности реализации
• XML. Ресурсоемкая реализация DOM
• Тяжелые абстракции
• В итоге переписали под Java 8 и WildFly 10
• Response time уменьшился в 2 раза
Мониторинг
YourKit
Java
Profiler
+
Oracle AWR
JMX
TPS
RT
TPS: 38
Response time: 12 сек.
Результаты 2015
Результаты 2016
TPS
RT
TPS: 240
Response time: 0,4 сек.
Результаты проекта
• Изменение архитектуры системы –
частичный переход на CQRS
• Снижение нагрузок на системы на порядок
• Производительность перестает быть
ограничивающим фактором – дает больше
свободы для бизнес-идей
• Развита экспертиза, получен опыт
применения инструментария и выработаны
подходы
Спасибо за внимание!

More Related Content

PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
PPTX
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Ontico
 
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
PPTX
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Ontico
 
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ontico
 
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Ontico
 
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Ontico
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ontico
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 

What's hot (20)

PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
PDF
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Ontico
 
PPTX
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
PDF
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Ontico
 
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
PPTX
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
PPTX
Как мы готовим MySQL / Николай Королёв (Badoo)
Ontico
 
PPTX
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Ontico
 
PPTX
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Ontico
 
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
PPTX
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Ontico
 
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Ontico
 
PDF
Ровная балансировка нагрузки на фронтенд-кластере
Badoo Development
 
PDF
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Ontico
 
PDF
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Ontico
 
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
Как мы готовим MySQL / Николай Королёв (Badoo)
Ontico
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Ontico
 
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Ontico
 
Ровная балансировка нагрузки на фронтенд-кластере
Badoo Development
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
Ad

Viewers also liked (20)

PDF
Хранение данных на виниле / Константин Осипов (tarantool.org)
Ontico
 
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
PDF
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Ontico
 
PPTX
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Ontico
 
PPTX
Архитектура хранения и отдачи фотографий в Badoo / Артем Денисов (Badoo)
Ontico
 
PDF
Онлайн обучение
Chupas
 
PDF
R top SMM for HR/ fotumhr.tech_16_03_2017
Константин Верховинский
 
PPTX
Yota Leaders
Daria Rudnik
 
PDF
Работа на Yota
Виталий Болатаев
 
PDF
Master-Master Replication and Scaling of an Application Between Each of the I...
vsoshnikov
 
PPTX
Data Driven SEO 3 - Николай Чудинов
Chudinov Nikolay
 
PDF
Popov business models media & telecom
Андрей Лукин
 
PDF
Being Yota
sershova
 
PPTX
Кира Гричанина: Блогеры и бренды: зачем это все?
Svetlana Yavorskaya
 
PPTX
Вовлеченность в Yota
Daria Rudnik
 
PDF
Digital стратегия компании YOTA, Ольга Дорофеева
Константин Верховинский
 
PPT
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Ontico
 
PDF
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Ontico
 
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
PDF
Splunk live мегафон 2015 - v4
Timur Bagirov
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Ontico
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Ontico
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Ontico
 
Архитектура хранения и отдачи фотографий в Badoo / Артем Денисов (Badoo)
Ontico
 
Онлайн обучение
Chupas
 
R top SMM for HR/ fotumhr.tech_16_03_2017
Константин Верховинский
 
Yota Leaders
Daria Rudnik
 
Работа на Yota
Виталий Болатаев
 
Master-Master Replication and Scaling of an Application Between Each of the I...
vsoshnikov
 
Data Driven SEO 3 - Николай Чудинов
Chudinov Nikolay
 
Popov business models media & telecom
Андрей Лукин
 
Being Yota
sershova
 
Кира Гричанина: Блогеры и бренды: зачем это все?
Svetlana Yavorskaya
 
Вовлеченность в Yota
Daria Rudnik
 
Digital стратегия компании YOTA, Ольга Дорофеева
Константин Верховинский
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Ontico
 
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
Splunk live мегафон 2015 - v4
Timur Bagirov
 
Ad

Similar to Стратегия и тактика улучшения производительности BSS систем оператора мобильной связи Yota / Олег Филатьев, Павел Нашатырев (Yota) (20)

PDF
владивосток форум производительность_ha
Elena Ometova
 
PDF
Новости и анонсы конференции Oracle Open World 2013
Andrey Akulov
 
PPT
VMware User Group Community Russia, Сергей Щадных
mikhail.mikheev
 
PPTX
IBM Technology Day 2013 Sy Storage
Sergey Kostenko
 
PPTX
Обзор HP Vertica
i-Teco & Vitte Consulting
 
PDF
Презентация HPE
BairRadnaev
 
PDF
Консолидация вычислительных мощностей и схд — первый шаг на пути к облаку
КРОК
 
PDF
Зачем нужен Flash?
Cisco Russia
 
PDF
Oracle database In-Memory - новая технология обработки в памяти
Andrey Akulov
 
PPTX
Услуга контактный центр по запросу от CTI
CTI2014
 
PDF
Принципы и подходы Cisco для автоматизации в сетях операторов связи
Cisco Russia
 
PPTX
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Ontico
 
PPTX
Виртуализация критически важных приложений
Jack Chikovany
 
PDF
Японские инновации или чем уникальны японские серверы Fujitsu
Fujitsu Russia
 
PPT
С. Перроте (Q Logic) Ускорение работы приложений
Expolink
 
PDF
Оптимизация ЦОД подходы ЕМС и Cisco к построению эффективных ИТ-инфраструктур
КРОК
 
PPT
битрикс Framework сергей рыжиков
Media Gorod
 
PPTX
Oracle Cloud Computing portfolio and strategy
Andrey Akulov
 
PDF
Обзор новых возможностей Cisco Contact Center Express 10
Cisco Russia
 
владивосток форум производительность_ha
Elena Ometova
 
Новости и анонсы конференции Oracle Open World 2013
Andrey Akulov
 
VMware User Group Community Russia, Сергей Щадных
mikhail.mikheev
 
IBM Technology Day 2013 Sy Storage
Sergey Kostenko
 
Обзор HP Vertica
i-Teco & Vitte Consulting
 
Презентация HPE
BairRadnaev
 
Консолидация вычислительных мощностей и схд — первый шаг на пути к облаку
КРОК
 
Зачем нужен Flash?
Cisco Russia
 
Oracle database In-Memory - новая технология обработки в памяти
Andrey Akulov
 
Услуга контактный центр по запросу от CTI
CTI2014
 
Принципы и подходы Cisco для автоматизации в сетях операторов связи
Cisco Russia
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Ontico
 
Виртуализация критически важных приложений
Jack Chikovany
 
Японские инновации или чем уникальны японские серверы Fujitsu
Fujitsu Russia
 
С. Перроте (Q Logic) Ускорение работы приложений
Expolink
 
Оптимизация ЦОД подходы ЕМС и Cisco к построению эффективных ИТ-инфраструктур
КРОК
 
битрикс Framework сергей рыжиков
Media Gorod
 
Oracle Cloud Computing portfolio and strategy
Andrey Akulov
 
Обзор новых возможностей Cisco Contact Center Express 10
Cisco Russia
 

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

Стратегия и тактика улучшения производительности BSS систем оператора мобильной связи Yota / Олег Филатьев, Павел Нашатырев (Yota)

  • 1. Стратегия и тактика улучшения производительности BSS систем оператора мобильной связи Yota Олег Филатьев Павел Нашатырев Александр Семелит
  • 2. YOTA Алло Инкогнито Aiva Mobile Matrix Mobile SIM-SIM Другие Доли рынка YOTA – 81% Алло Инкогнито – 7% SIM-SIM – 4% Matrix Mobile – 4% Aiva Mobile – 3% Другие – 1% YOTA – самый крупный MVNO оператор в России Как сотовый оператор стартовали в середине 2014 MVNO – виртуальный оператор без собственной сети
  • 3. YOTA занимает место среди MVNO операторов в мире 10
  • 5. 60+ бизнес-процессов 96 систем и сервисов 420+ серверов 13000+ запросов на обслуживание 200+ проектов и релизов
  • 6. Общая архитектура BSS BSS – Business Support System WebAPI ESB (Java/Tibco) Billing (Oracle. PL/SQL) CRM (MS Dynamics) Customer Interaction Product Catalog Payment System Remote Dealer Business intelligence • 30 сервисов • 70 инстансов сервисов • Production – 20 серверов. • 200 читающих вызовов в сек. • 200 изменяющих вызовов в сек. • Часть подсистем проприетарная OSS Mobile App
  • 7. • Каждый вызов запускает процесс на ESB • Каждый процесс вызывает 5-10 методов конечных сервисов • Конечные сервисы выполняют 2-5 атомарных операций • 7-10 тыс. атомарных операций в сек • Процессы меняются часто – каждые 2-3 месяца • Критичных процессов – около 10 (всего ~ 60) Оптимизируем критичные EndToEnd процессы 400 вызовов/сек не много, НО:
  • 8. Контроль над производительностью Выделенная группа в разработке-тестировании для контроля над производительностью выпускаемых релизов. Тестовый стенд – половина Production с идентичными настройками. Несколько видов тестов: 1. Комплексный 3-х часовой с постепенным увеличением нагрузки. Контрольный для каждого релиза. 2. Длительный 8-часовой для тестирования новых компонентов и существенных изменениях в старых. Не в каждом релизе. 3. Специализированные тесты, например, на прогрев кэша Основной инструмент – JMeter 3
  • 9. Ключевые улучшения за 2016 • Кэширование Product Catalog и справочников • Оптимизация часто вызываемых EndToEnd процессов • Оптимизация запросов и структур БД • Внедрение in-memory database для быстрого чтения данных по клиенту – подход CQRS • Java вместо Tibco ESB • Асинхронное взаимодействие с MobileAPP
  • 10. Кэширование Product Catalog (тарифы) Стратегия кэширования – сохранять вызовы методов Ключ записи в кэше – хеш-функция от параметров Pros: • Легкая реализация + простые структуры • Возможно хранить кэш на стороне вызывающего сервиса Cons: • Комбинаторность, требующая больше памяти при повышении кол-ва параметров или их комбинаций • Медленный прогрев кэша Общий выигрыш в скорости в десятки раз – БД почти не нагружена после прогрева В будущем – переход на объекты в памяти
  • 11. Кэш Product Catalog – разработка • Ehcache 2.x • Репликация • Сохранение на диск для быстрого прогрева Нагрузка на БД до: Нагрузка на БД после:
  • 12. Внедрение in-memory database Необходимо хранить информацию о СИМ-картах клиентов и подключенные продукты вне биллинга на Oracle, в более быстрой БД. Сделали БД для чтения на Tarantool с синхронизацией с Oracle БД – CQRS подход. Для синхронизации – GoldenGate. Ограничение по времени синхронизации (latency) < 0.3 сек. Эффект: • Ускорение доступа к данным в 7-10 раз при вызове сервиса. • Снижение нагрузки на сервера БД на порядок (c 20 сессий до 1 или с 8 ядер до 1)
  • 13. Почему Tarantool? Сравнивали с Apache Ignite, Oracle TimesTen, CoachBase, Haselcast, Redis Наличие фич БД (индексы, скрипты) Техподдержка в РФ Стоимость техподдержки Tarantool + + + Apache Ignite + - Oracle Times Ten + + - CoachBase -/+ - - Redis + - - Haselcast - - - На прошлой Highload 2015 впечатлил доклад о работе Tarantool
  • 14. Tarantool – разработка • Разные типы индексов • Активно используем составные индексы • Гранулярная очистка кэша • Обновление процедур без простоев • Написали свой Java connection pool • На самом деле connection pool не нужен
  • 15. Источники изменения: • Прямые вызовы сервисов • Звонки • Биллинговые процессы • Скрипты в Oracle Service Oracle DB Invalidate Tarantool Modify Неконсистентность Чтение 1Изменение Чтение 2 Sync Del Save Чтение 3 Синхронизация баз данных
  • 16. Java вместо Tibco BW • Логика требует вложенных циклов • Сталкиваемся с ограничениями среды • Баги, проявляющиеся только под нагрузкой • Особенности реализации • XML. Ресурсоемкая реализация DOM • Тяжелые абстракции • В итоге переписали под Java 8 и WildFly 10 • Response time уменьшился в 2 раза
  • 18. TPS RT TPS: 38 Response time: 12 сек. Результаты 2015
  • 20. Результаты проекта • Изменение архитектуры системы – частичный переход на CQRS • Снижение нагрузок на системы на порядок • Производительность перестает быть ограничивающим фактором – дает больше свободы для бизнес-идей • Развита экспертиза, получен опыт применения инструментария и выработаны подходы