HighLoad++ 2017
Зал «Сингапур», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2948.html
Не так часто на конференциях рассказывают про архитектуру платежных систем, особенно если они делались без legacy. Нашей платежной системе всего три года, из которых два в продакшне. Мы изначально проектировали надежную и масштабируемую систему, и за прошедшее время накопилось тем для рассказа.
...
5. Из мира больших корпораций:
Деньги
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
5
Бухгалтерский учет
Надежность
Ответственность
6. Из мира больших корпораций
Деньги
НКО Почти банк
Отчетность перед ЦБ/Финмониторингом
Коллеги с банковским опытом
Автоматизированная Банковская Система
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
6
7. Из мира больших корпораций
Деньги
НКО
Юристы 115-ФЗ – О противодействии отмыванию доходов
161-ФЗ – О национальной платежной системе
152-ФЗ – О защите персональных данных
222-ФЗ – Об азартных играх
PCI DSS – О безопасности кредитных карт
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
7
9. Из мира Web
Удобство пользователя
Частые выкладки 2-3 раза в неделю
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
9
10. Из мира Web
Удобство пользователя
Частые выкладки 2-3 раза в неделю
Минимальный time-to-market
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
10
11. Из мира Web
Удобство пользователя
Частые выкладки 2-3 раза в неделю
Минимальный time-to-market
Не очень много денег
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
11
26. Kafka
Только транспортный уровень
С гарантией доставки
И понятной надежностью/кластеризацией
Резервный источник данных об операции
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
26
30. Мониторинг
Prometheus + Grafana
Требует много доработок на стороне сервиса
Нельзя использовать как events time-series db
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
30
31. Мониторинг
Prometheus + Grafana
Требует много доработок на стороне сервиса
Нельзя использовать как events time-series db
Сложно делать интегрированные метрики
например, персентили времени отклика клиентам по всем серверам фронтенда
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
31
40. Простой сервис c данными карт
Шифруем средствами PostgreSQL
Доверяем руководителю эксплуатации
Active-Standby
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
40
41. Требования PCI DSS
Контроль доступа к данным
Регулярная смена ключей доступа
Регулярное обновление системы
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
41
42. Простой сервис c данными карт
Доверяем руководителю эксплуатации
Шифруем средствами PostgreSQL
Active-Standby
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
42
43. Простой? сервис c данными карт
Доверяем руководителю эксплуатации
Шифруем средствами PostgreSQL
Active-Standby
Схема Шамира (многокомпонентный ключ)
Логика генерации и смены ключей
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
43
44. Простой? сервис c данными карт
Доверяем руководителю эксплуатации
Шифруем средствами PostgreSQL
Active-Standby
Схема Шамира (многокомпонентный ключ)
Логика генерации и смены ключей
Active-Active
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
44
45. Простой? сервис c данными карт
Доверяем руководителю эксплуатации
Шифруем средствами PostgreSQL
Active-Standby
Схема Шамира (многокомпонентный ключ)
Логика генерации и смены ключей
Active-Active
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
45
49. Вначале была FSM
Каждое событие обрабатывается в транзакции
Текущее состояние сохраняем в СУБД
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
49
50. Вначале была FSM
Каждое событие обрабатывается в транзакции
Текущее состояние сохраняем в СУБД
? Одновременные события
? Максимальная длительность отдельных шагов
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
50
51. Вначале была FSM
Каждое событие обрабатывается в транзакции
Текущее состояние сохраняем в СУБД
? Одновременные события
? Максимальная длительность отдельных шагов
Блокировки и timers на уровне JVM
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
51
52. Вначале была FSM
Каждое событие обрабатывается в транзакции
Текущее состояние сохраняем в СУБД
? Одновременные события
? Максимальная длительность отдельных шагов
Блокировки и timers на уровне JVM
Active-Standby
Специальная логика восстановления контекстов и timeout
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
52
54. Платеж – это
Множество событий с последовательной обработкой
Сложное изменяемое состояние
Параллельность
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
54
55. Платеж – это актор!
Множество событий с последовательной обработкой
Сложное изменяемое состояние
Параллельность
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
55
59. Свой велосипед
Очередь в PostgreSQL
через select for update skip locked
Обработка событий в транзакции
Свои bells&whistles
1000 строчек кода
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
59
60. Как работает skip locked
Акторы События
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
60
67. Свой велосипед
Удобно
Строгая типизация сообщений
Транзакционные сообщения
Удобная работа с контекстом
Не нужно думать о блокировках
Сложные политики обработки ошибок
Эффективно
100 платежей в секунду
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
67
68. Свой велосипед
Удобно
Строгая типизация сообщений
Транзакционные сообщения
Удобная работа с контекстом
Не нужно думать о блокировках
Сложные политики обработки ошибок
Эффективно
100 платежей в секунду
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
68
72. Реальная ситуация
Проблема: упал один из шлюзов
Кончились соединения в пуле
Долгое ожидание ответа от контрагента
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
72
75. Что делать?
Увеличивать число соединений?
Нельзя, PostgreSQL не выдержит
Сетевой вызов сделать асинхронным
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
75
76. Что делать?
Увеличивать число соединений?
Нельзя, PostgreSQL не выдержит
Сетевой вызов сделать асинхронным
И увеличить число шагов в платеже в несколько раз
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
76
77. Что делать?
Увеличивать число соединений?
Нельзя, PostgreSQL не выдержит
Сетевой вызов сделать асинхронным
И увеличить число шагов в платеже в несколько раз
Тонко управлять гарантиями сохранения
Не все делая через БД
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
77
78. Выводы
Если в системе появились акторы
они проползут всюду
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
78
80. Платежи требуют учета
Нужна система BI
Не очень много данных
Для топ-менеджеров
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
80
81. Платежи требуют учета
Нужна система BI
Не очень много данных
Для топ-менеджеров
Быстро и дешево
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
81
82. PowerBI
Система –> CSV –> Azure cloud –> PowerBI
Дешево
Быстро
Просто
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
82
83. PowerBI
Система –> CSV –> Azure cloud –> PowerBI
Дешево (если очень мало данных)
Быстро (если очень мало данных)
Просто
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
83
85. Clickhouse
Система –> Kafka –> Clickhouse –> redash
Круто
Быстро
Бесплатно
Не симпатично
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
85
86. Vertica + Tableau
Система –> Kafka –> Vertica –> Tableau Server
Красиво
Быстро
Дорого
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
86
87. Vertica + Tableau
Система –> Kafka –> Vertica –> Tableau Server
Красиво
Быстро
Дорого Дешево на наших объемах
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
87
88. Vertica + Tableau
Система –> Kafka –> Vertica –> Tableau Server
Красиво
Быстро
Дорого Дешево на наших объемах
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
88
90. А еще у нас много текстов
Юридическая информация
Информация о контрагентах
Инструкции для пользователя
Блог
Информация об ошибках
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
90
91. Текст – это тоже код
Ошибки дорого стоят
Нужно проверять перед публикацией
Задействовано много людей
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
91
92. Текст – это тоже код
Ошибки дорого стоят
Нужно проверять перед публикацией
Задействовано много людей
Простые CMS не подходят
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
92
93. Текст – это тоже код
Ошибки дорого стоят
Нужно проверять перед публикацией
Задействовано много людей
Простые CMS не подходят
Непростые слишком дорогие
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
93
94. Текст – это тоже код
Ошибки дорого стоят
Нужно проверять перед публикацией
Задействовано много людей
Простые CMS не подходят
Непростые слишком дорогие
git сложен в освоении
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
94
95. Опять велосипед
Простой редактор текста
Простой редактор html
Простая концепция версий
пакеты изменений, публикация пакетами,
откат/восстановление всего контента сразу
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
95
96. Опять велосипед
Простой редактор текста
Простой редактор html
Простая концепция версий
пакеты изменений, публикация пакетами,
откат/восстановление всего контента сразу
Запрет изменений на продакшене
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
96
97. Опять велосипед
Простой редактор текста
Простой редактор html
Простая концепция версий
пакеты изменений, публикация пакетами,
откат/восстановление всего контента сразу
Запрет изменений на продакшене
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
97
99. Жизнь на грани
Можно заимствовать идеи из мира корпораций
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
99
100. Жизнь на грани
Можно заимствовать идеи из мира корпораций
Иногда можно заимствовать и решения
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
100
101. Жизнь на грани
Можно заимствовать идеи из мира корпораций
Иногда можно заимствовать и решения
Большие проблемы можно решить просто
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
101
102. И еще уроки
Архитектура – понятие динамическое
Хорошей сразу не получается
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
102
103. И еще уроки
Архитектура – понятие динамическое
Хорошей сразу не получается
Java + SQL – это круто
Если их правильно готовить
(С) Дельгядо Филипп, 2017, ООО "ИТИС"
103