Платежная система Деньги@Mail.Ru

28

description

Типичные и нетипичные проблемы устройства платежных систем. Их решение. Архитектура платежной системы Деньги@Mail.Ru

Transcript of Платежная система Деньги@Mail.Ru

Page 1: Платежная система Деньги@Mail.Ru
Page 2: Платежная система Деньги@Mail.Ru

2

Платежная системаДеньги@Mail.Ru

простые решения сложных вопросов

Page 3: Платежная система Деньги@Mail.Ru

3

Что такое ДМР?

• Платежи между пользователями и в магазины• Пластиковые карты• API и мобильные приложения• Квази-валюты

Page 4: Платежная система Деньги@Mail.Ru

4

Проблемы в ПС

Типичные проблемы HighLoad• высокая доступность и отказоустойчивость• обработка больших объемов данных / запросов

Нетипичные проблемы• любая ошибка — очень дорого• безопасность — наше всё• внешний мир — такой внешний

Page 5: Платежная система Деньги@Mail.Ru

5

Учимся считать

Финансовая математика

Математика с плавающей точкой2 × 2 = 42.0 × 2.0 = ?

Page 6: Платежная система Деньги@Mail.Ru

Безопасность в ПС

Типичные уязвимостиВ сети:• перехват трафикаНа сервере:• SQL-инъекции• 0-строки и раскрытие данныхНа клиенте:• XSS• XSRF

Page 7: Платежная система Деньги@Mail.Ru

7

Безопасность в ПС

Шифрование данныхПри передаче:• https-соединение• cookies со спец-флагами

При хранении:• можно шифровать данные в БД• можно шифровать диски• данные отдельно, ключи отдельно

Page 8: Платежная система Деньги@Mail.Ru

Безопасность в ПС

8

Обработка данныхSQL-инъекции?

• хранимые процедуры и связанные переменные

XSS?• шаблонизаторы и экранирование переменных

XSRF?• подпись форм и ссылок

Page 9: Платежная система Деньги@Mail.Ru

9

Интеграция

Проблема:• Многообразие протоколов• Многообразие алгоритмов• Чрезмерная паранойя

Решение:• Унификация — хотя бы свои делайте одинаково• Простота — чем проще вы, тем проще вам• Совместимость

Page 10: Платежная система Деньги@Mail.Ru

10

Где Rocket Science?

Скорость

Масштабируемость

Надежность

Page 11: Платежная система Деньги@Mail.Ru

11

Где Rocket Science?

Платежная система —это не Rocket Science…

…но есть нюанс ©

Page 12: Платежная система Деньги@Mail.Ru

Проблема:Масштабируемость — scale-up или scale-out?

Хранилище данных

Выбор технологии:•Промышленные СУБД?•Open-source?•NoSQL?

С этим выбором жить долго: платежные системы консервативны

Page 13: Платежная система Деньги@Mail.Ru

13

• Данные — в сотнях узлов одинаковой структуры• Каждый пользователь — в своем узле• Работа с данными — через хранимые процедуры

Решение:

Хранилище данных

Page 14: Платежная система Деньги@Mail.Ru

• Данные слабосвязаны, разных типов мало• Многие данные не меняются

• Можно забыть про нормализацию • JSON рулит. Разница — всего 34.8%. Жалко? Можно и 20.5%

• Дублируем, если нужно• Безопасность + меньше сетевые издержки

Почему?

Хранилище данных

Page 15: Платежная система Деньги@Mail.Ru

15

Хранилище данных

Технологии:MySQL 5.x + хранимые процедуры

Page 16: Платежная система Деньги@Mail.Ru

16

Транзакции

start transaction;

UPDATE account SET balance = balance + :amountWHERE uid = :user1;

UPDATE account SET balance = balance - :amountWHERE uid = :user2;

commit;

классика жанра…

…не работает!

Хранилище данных

Page 17: Платежная система Деньги@Mail.Ru

17

Требования:

• Гарантированная доставка• Отсутствие дублей• И снова масштабирование

Хранилище данных

Page 18: Платежная система Деньги@Mail.Ru

18

Требования:

• Гарантированная доставка• Отсутствие дублей• И снова масштабирование

Решение:• Упрощение 2PC• Журналы транзакций

Хранилище данных

Page 19: Платежная система Деньги@Mail.Ru

19

Распределенные транзакции

Этапы:• списание на транзитный счёт• передача между узлами• зачисление на счёт получателя

Хранилище данных

Page 20: Платежная система Деньги@Mail.Ru

Распределенные транзакции

В узлах: ACID + скорость

Координатор: • доставка• отсутствие дублей• масштабируемость

Хранилище данных

Page 21: Платежная система Деньги@Mail.Ru

21

• распределенные транзакции• взаимодействие с внешними системами• различные уведомления внутри системы

Эволюция: асинхронная работа

• От транзакций к сообщениям• 99.9% работы платежной системы — в фоне

Очереди

В фоне:

Page 22: Платежная система Деньги@Mail.Ru

22

• NginX + apache + mod_perl• Где кэш?

Задачи:• Координация запросов• Контроль соединений• Выдача результатов ХП• Бизнес-логика (не СУБД)

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

Page 23: Платежная система Деньги@Mail.Ru

23

Жертвы будут

Неочевидные проблемы

• Ой! Мы же зашифровали данные!• Контакт? Нет контакта! Коннект?...• Распределенные вычисления• Распределенный поиск• Точки G

Page 24: Платежная система Деньги@Mail.Ru

24

Главная проблема

© А. Лукацкий

Регуляторы в области ИБ

Page 25: Платежная система Деньги@Mail.Ru

25

Главная проблема

Нормативно-правовые акты по ИБ в НПС

© А. Лукацкий

Page 26: Платежная система Деньги@Mail.Ru

26

Главная проблема

Главные проблемы — не технические

• Стандарты безопасности • Закон о НПС + нормативные акты• Отчетность: 1С, SAP, АБС…• Люди

Page 27: Платежная система Деньги@Mail.Ru

27

Статистика

Серверы БД:200 000 qps

Очередей:2M msg/d, 1800 t/m67% сообщений — 0.02 сек97% — 0.05 сек

Приложений:До 5K qpsБаланс: 0.003 сек

Page 28: Платежная система Деньги@Mail.Ru

Максим БабичДеньги@Mail.Ru

[email protected]

СПАСИБО!