Платежная система Деньги@mail.ru
Post on 16-Jun-2015
331 Views
Preview:
DESCRIPTION
TRANSCRIPT
2
Платежная системаДеньги@Mail.Ru
простые решения сложных вопросов
3
Что такое ДМР?
• Платежи между пользователями и в магазины• Пластиковые карты• API и мобильные приложения• Квази-валюты
4
Проблемы в ПС
Типичные проблемы HighLoad• высокая доступность и отказоустойчивость• обработка больших объемов данных / запросов
Нетипичные проблемы• любая ошибка — очень дорого• безопасность — наше всё• внешний мир — такой внешний
5
Учимся считать
Финансовая математика
Математика с плавающей точкой2 × 2 = 42.0 × 2.0 = ?
Безопасность в ПС
Типичные уязвимостиВ сети:• перехват трафикаНа сервере:• SQL-инъекции• 0-строки и раскрытие данныхНа клиенте:• XSS• XSRF
7
Безопасность в ПС
Шифрование данныхПри передаче:• https-соединение• cookies со спец-флагами
При хранении:• можно шифровать данные в БД• можно шифровать диски• данные отдельно, ключи отдельно
Безопасность в ПС
8
Обработка данныхSQL-инъекции?
• хранимые процедуры и связанные переменные
XSS?• шаблонизаторы и экранирование переменных
XSRF?• подпись форм и ссылок
9
Интеграция
Проблема:• Многообразие протоколов• Многообразие алгоритмов• Чрезмерная паранойя
Решение:• Унификация — хотя бы свои делайте одинаково• Простота — чем проще вы, тем проще вам• Совместимость
10
Где Rocket Science?
Скорость
Масштабируемость
Надежность
11
Где Rocket Science?
Платежная система —это не Rocket Science…
…но есть нюанс ©
Проблема:Масштабируемость — scale-up или scale-out?
Хранилище данных
Выбор технологии:•Промышленные СУБД?•Open-source?•NoSQL?
С этим выбором жить долго: платежные системы консервативны
13
• Данные — в сотнях узлов одинаковой структуры• Каждый пользователь — в своем узле• Работа с данными — через хранимые процедуры
Решение:
Хранилище данных
• Данные слабосвязаны, разных типов мало• Многие данные не меняются
• Можно забыть про нормализацию • JSON рулит. Разница — всего 34.8%. Жалко? Можно и 20.5%
• Дублируем, если нужно• Безопасность + меньше сетевые издержки
Почему?
Хранилище данных
15
Хранилище данных
Технологии:MySQL 5.x + хранимые процедуры
16
Транзакции
start transaction;
UPDATE account SET balance = balance + :amountWHERE uid = :user1;
UPDATE account SET balance = balance - :amountWHERE uid = :user2;
commit;
классика жанра…
…не работает!
Хранилище данных
17
Требования:
• Гарантированная доставка• Отсутствие дублей• И снова масштабирование
Хранилище данных
18
Требования:
• Гарантированная доставка• Отсутствие дублей• И снова масштабирование
Решение:• Упрощение 2PC• Журналы транзакций
Хранилище данных
19
Распределенные транзакции
Этапы:• списание на транзитный счёт• передача между узлами• зачисление на счёт получателя
Хранилище данных
Распределенные транзакции
В узлах: ACID + скорость
Координатор: • доставка• отсутствие дублей• масштабируемость
Хранилище данных
21
• распределенные транзакции• взаимодействие с внешними системами• различные уведомления внутри системы
Эволюция: асинхронная работа
• От транзакций к сообщениям• 99.9% работы платежной системы — в фоне
Очереди
В фоне:
22
• NginX + apache + mod_perl• Где кэш?
Задачи:• Координация запросов• Контроль соединений• Выдача результатов ХП• Бизнес-логика (не СУБД)
Сервер приложений
23
Жертвы будут
Неочевидные проблемы
• Ой! Мы же зашифровали данные!• Контакт? Нет контакта! Коннект?...• Распределенные вычисления• Распределенный поиск• Точки G
24
Главная проблема
© А. Лукацкий
Регуляторы в области ИБ
25
Главная проблема
Нормативно-правовые акты по ИБ в НПС
© А. Лукацкий
26
Главная проблема
Главные проблемы — не технические
• Стандарты безопасности • Закон о НПС + нормативные акты• Отчетность: 1С, SAP, АБС…• Люди
27
Статистика
Серверы БД:200 000 qps
Очередей:2M msg/d, 1800 t/m67% сообщений — 0.02 сек97% — 0.05 сек
Приложений:До 5K qpsБаланс: 0.003 сек
Максим БабичДеньги@Mail.Ru
babich@corp.mail.ru
СПАСИБО!
top related