high-availability architecture of unified frontend platform (in russian)

74
Отказоустойчивая архитектура Единой Фронтальной Системы Зелинский Максим Сбербанк-Технологии

Upload: max-zelinski

Post on 07-Jan-2017

23 views

Category:

Software


0 download

TRANSCRIPT

Page 1: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивая архитектура Единой Фронтальной Системы Зелинский Максим

Сбербанк-Технологии

Page 2: High-availability architecture of Unified Frontend Platform (in Russian)

Для кого этот доклад?

Page 3: High-availability architecture of Unified Frontend Platform (in Russian)

Единая Фронтальная Система

Page 4: High-availability architecture of Unified Frontend Platform (in Russian)

Единая Фронтальная Система

Open API Web Mobile

ATM

Page 5: High-availability architecture of Unified Frontend Platform (in Russian)

Open API Web Mobile

ATM

Единая Фронтальная Система

Page 6: High-availability architecture of Unified Frontend Platform (in Russian)

Open API

Web

Mobile

ATM

Единая Фронтальная Система

Page 7: High-availability architecture of Unified Frontend Platform (in Russian)

Наши показатели на 2016 г.

Интернет банк для физических лиц

• Общее количество пользователей: ~85 000 000

• Количество активных пользователей: ~48 000 000

• Среднее количество операций, в день: ~11 000 000

Page 8: High-availability architecture of Unified Frontend Platform (in Russian)

Наш технологический стек

Языки разработки: • JavaScript/ Native на frontend’е (никакого server side!) • Java на стороне backend’а (никакого JEE, ну почти ) Инфраструктура: • NGINX - «умная» балансировка/ отдача статики • IBM WebSphere Application Server - сервер приложений • IBM WebSphere ExtremeScale - распределенный кеш • IBM WebSphere MQ - асинхронный обмен сообщениями • Oracle Database - хранилище

Page 9: High-availability architecture of Unified Frontend Platform (in Russian)

Наш Service Level Agreement

• Режим работы: 24 х 7

• Доступность: 99.99%

• Наличие технологических окон: нет

• RTO (Return Time Objective): не более 1 минуты

• RPO (Return Point Objective): 0 минут

• Disaster Recovery: не более 1 минуты

Page 10: High-availability architecture of Unified Frontend Platform (in Russian)

Типичная архитектура типичной Фронтальной Системы

Page 11: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система

СУБД

Серверы приложений

Page 12: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система

СУБД

Серверы приложений

Точки отказа?

Page 13: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система

СУБД

Серверы приложений

Точки отказа?

Page 14: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система

СУБД

Серверы приложений

Точки отказа?

Page 15: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система Очереди

Зависимость от внешних систем

СУБД

Серверы приложений

Page 16: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Внешняя система Очереди

Зависимость от внешних систем Единая точка отказа БД

Серверы приложений

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Page 17: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

2N

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Page 18: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

Распределенный кэш

2N

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Page 19: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

СУБД (active)

СУБД (standby)

Распределенный кэш

2N

DNS / Virtual IP

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП Единая точка отказа БН

реп

ли

кац

ия

Page 20: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

СУБД (active)

СУБД (standby)

Распределенный кэш

2N

DNS / Virtual IP

Локальный кэш

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП Единая точка отказа БН Возможность скрыть недоступность (< 1 мин)

реп

ли

кац

ия

Page 21: High-availability architecture of Unified Frontend Platform (in Russian)

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП Единая точка отказа БН Возможность скрыть недоступность (< 1 мин)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Распределенный кэш

2N

DNS / Virtual IP

Локальный кэш

И это все?

Page 22: High-availability architecture of Unified Frontend Platform (in Russian)

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП Единая точка отказа БН Возможность скрыть недоступность (< 1 мин)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Распределенный кэш

2N

DNS / Virtual IP

Локальный кэш

И это все?

Page 23: High-availability architecture of Unified Frontend Platform (in Russian)

Зависимость от внешних систем Единая точка отказа БД Уменьшение надежности из за отказа СП Прерывание в обслуживании из за отказа СП Единая точка отказа БН Возможность скрыть недоступность (< 1 мин)

Браузер Балансировщик

нагрузки

Серверы приложений

Внешняя система Очереди

СУБД (active)

СУБД (standby)

реп

ли

кац

ия

Распределенный кэш

2N

DNS / Virtual IP

Локальный кэш

И это все?

Page 24: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивость и масштабирование СУБД

Page 25: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивость • Репликация на уровне СХД

• Репликация средствами СУБД

• Репликация средствами приложения

Page 26: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивость • Репликация на уровне СХД

• Репликация средствами СУБД

• Репликация средствами приложения

Остановка и поднятие занимает

минимум 30 минут на больших объемах

Page 27: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивость • Репликация на уровне СХД

• Репликация средствами СУБД

• Репликация средствами приложения

Graceful shutdown по прежнему может

занять кучу времени!

Остановка и поднятие занимает

минимум 30 минут на больших объемах

Page 28: High-availability architecture of Unified Frontend Platform (in Russian)

Отказоустойчивость • Репликация на уровне СХД

• Репликация средствами СУБД

• Репликация средствами приложения

А это вариант!

Graceful shutdown по прежнему может

занять кучу времени!

Остановка и поднятие занимает

минимум 30 минут на больших объемах

Page 29: High-availability architecture of Unified Frontend Platform (in Russian)

Масштабирование • Использование Oracle RAC или аналога

• Offload нагрузки с основной СУБД (read-only режим)

• Средствами приложения (шардинг)

Page 30: High-availability architecture of Unified Frontend Platform (in Russian)

• Использование Oracle RAC или аналога

• Offload нагрузки с основной СУБД (read-only режим)

• Средствами приложения (шардинг)

Масштабирование

Не работает! А если работает, то в пределах одного ДЦ

Page 31: High-availability architecture of Unified Frontend Platform (in Russian)

• Использование Oracle RAC или аналога

• Offload нагрузки с основной СУБД (read-only режим)

• Средствами приложения (шардинг)

Масштабирование

Не работает! А если работает, то в пределах одного ДЦ

Ограниченное применение

Page 32: High-availability architecture of Unified Frontend Platform (in Russian)

• Использование Oracle RAC или аналога

• Offload нагрузки с основной СУБД (read-only режим)

• Средствами приложения (шардинг)

Масштабирование

А это вариант!

Не работает! А если работает, то в

пределах одного ДЦ

Ограниченное применение

Page 33: High-availability architecture of Unified Frontend Platform (in Russian)

Zero downtime deployment

Page 34: High-availability architecture of Unified Frontend Platform (in Russian)

Типичный подход

1. Обновление серверов приложений по группам кластеров

2. Обновление структуры БД с сохранением обратной совместимости

3. Повторить

Page 35: High-availability architecture of Unified Frontend Platform (in Russian)

Типичный подход

1. Обновление серверов приложений по группам кластеров

2. Обновление структуры БД с сохранением обратной совместимости

3. Повторить Ок, а если меняется схема

данных радикально?

Page 36: High-availability architecture of Unified Frontend Platform (in Russian)

Типичный подход

1. Обновление серверов приложений по группам кластеров

2. Обновление структуры БД с сохранением обратной совместимости

3. Повторить Ок, а если меняется схема

данных радикально?

Blue / Green развертывание!

Page 37: High-availability architecture of Unified Frontend Platform (in Russian)

Решение?

Page 38: High-availability architecture of Unified Frontend Platform (in Russian)

Решение?

Hint: Шардинг, репликация средствами приложения и Blue/Green развертывание

Page 39: High-availability architecture of Unified Frontend Platform (in Russian)

Браузер Балансировщик

нагрузки СУБД Серверы

приложений

Page 40: High-availability architecture of Unified Frontend Platform (in Russian)

Stand-In©

Page 41: High-availability architecture of Unified Frontend Platform (in Russian)

Primary

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Stand-In

СУБД Серверы приложений

Роутер

Консоль управления

реп

ли

кац

ия

Page 42: High-availability architecture of Unified Frontend Platform (in Russian)

Primary

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Stand-In

СУБД Серверы приложений

Роутер

Консоль управления

реп

ли

кац

ия

Disaster Recovery за считанные минуты

Page 43: High-availability architecture of Unified Frontend Platform (in Russian)

Primary

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Stand-In

СУБД Серверы приложений

Роутер

Консоль управления

реп

ли

кац

ия

Disaster Recovery за считанные минуты

Blue / Green развертывание

Page 44: High-availability architecture of Unified Frontend Platform (in Russian)

Primary

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Stand-In

СУБД Серверы приложений

Роутер

Консоль управления

реп

ли

кац

ия

Disaster Recovery за считанные минуты

Blue / Green развертывание

Простой оборудования

Page 45: High-availability architecture of Unified Frontend Platform (in Russian)

Primary

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Stand-In

СУБД Серверы приложений

Роутер

Консоль управления

реп

ли

кац

ия

Disaster Recovery за считанные минуты

Blue / Green развертывание

Простой оборудования

Не решается проблема масштабирования

Page 46: High-availability architecture of Unified Frontend Platform (in Russian)

Многоблочность©

Page 47: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер реп

ли

кац

ия

Disaster Recovery за считанные минуты

Blue / Green развертывание

Простой оборудования

Не решается проблема масштабирования

Блок N Консоль управления

Page 48: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер

Disaster Recovery за считанные минуты

Blue / Green развертывание

Простой оборудования

Не решается проблема масштабирования

Блок N Консоль управления

реп

ли

кац

ия

Page 49: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер

Disaster Recovery за считанные минуты

Blue / Green развертывание

Простой оборудования

Не решается проблема масштабирования

Блок N Консоль управления

реп

ли

кац

ия

Page 50: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер

Блок N Консоль управления

реп

ли

кац

ия

В чем магия?

Page 51: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер

Блок N Консоль управления

реп

ли

кац

ия

В чем магия? • Роутер

Page 52: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

Браузер Балансировщик

нагрузки

СУБД Серверы приложений

Блок 2

СУБД Серверы приложений

Роутер

Блок N Консоль управления

реп

ли

кац

ия

В чем магия? • Роутер

• Репликация

Page 53: High-availability architecture of Unified Frontend Platform (in Russian)

Роутер

Page 54: High-availability architecture of Unified Frontend Platform (in Russian)
Page 55: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

СУБД Серверы приложений

Блок N

Пользователи

Page 56: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

СУБД Серверы приложений

Блок N

Пользователи Auth

Page 57: High-availability architecture of Unified Frontend Platform (in Russian)

Блок 1

СУБД Серверы приложений

Блок N

{ id }

Пользователи Auth

Page 58: High-availability architecture of Unified Frontend Platform (in Russian)

Распределенный кэш

Блок 1

СУБД Серверы приложений

Блок N REST

Маппинг пользователей

{ id }

Пользователи Auth

Page 59: High-availability architecture of Unified Frontend Platform (in Russian)

Распределенный кэш

Блок 1

СУБД Серверы приложений

Блок N REST

Маппинг пользователей

{ id }

Пользователи Auth

Page 60: High-availability architecture of Unified Frontend Platform (in Russian)

Распределенный кэш

Блок 1

СУБД Серверы приложений

Блок N REST

Маппинг пользователей

{ id }

cookie { номер блока }

Пользователи Auth

Page 61: High-availability architecture of Unified Frontend Platform (in Russian)

Репликация между блоками

Page 62: High-availability architecture of Unified Frontend Platform (in Russian)

Какие данные мы храним?

• Справочники (внутренние и внешние)

• Операционные данные

Page 63: High-availability architecture of Unified Frontend Platform (in Russian)

Справочники

Блок 1 Внутренние справочники

Блок N

Управление справочниками

Oracle GoldenGate

Очереди

Внешние справочники

Page 64: High-availability architecture of Unified Frontend Platform (in Russian)

Справочники

Блок 1 Внутренние справочники

Блок N

Управление справочниками

Очереди

Внешние справочники

Page 65: High-availability architecture of Unified Frontend Platform (in Russian)

Операционные данные

Блок 1 Блок N

Консоль управления

dblink

Page 66: High-availability architecture of Unified Frontend Platform (in Russian)

Операционные данные

Блок 1 Блок N

Консоль управления

dblink

В штатном режиме операционные данные не

реплицируются

Page 67: High-availability architecture of Unified Frontend Platform (in Russian)

А как же noSQL решения?

Page 68: High-availability architecture of Unified Frontend Platform (in Russian)

А как же noSQL решения?

Everybody lies!

Page 69: High-availability architecture of Unified Frontend Platform (in Russian)

А как же noSQL решения?

Everything fails!

Page 70: High-availability architecture of Unified Frontend Platform (in Russian)

Выводы

Page 71: High-availability architecture of Unified Frontend Platform (in Russian)

Выводы

• На больших объемах архитектура становится очень нетривиальной

Page 72: High-availability architecture of Unified Frontend Platform (in Russian)

Выводы

• На больших объемах архитектура становится очень нетривиальной

• Если у вас 99.99%, 24 х 7, RPO 0, RTO 1, DR «не 4 часа» - то вы попали

Page 73: High-availability architecture of Unified Frontend Platform (in Russian)

Выводы

• На больших объемах архитектура становится очень нетривиальной

• Если у вас 99.99%, 24 х 7, RPO 0, RTO 1, DR «не 4 часа» - то вы попали

• Все падает