3. Что такое ДМР?
• Платежи между пользователями и в магазины
• Пластиковые карты
• API и мобильные приложения
• Квази-валюты
3
4. Проблемы в ПС
Типичные проблемы HighLoad
• высокая доступность и отказоустойчивость
• обработка больших объемов данных / запросов
Нетипичные проблемы
• любая ошибка — очень дорого
• безопасность — наше всѐ
• внешний мир — такой внешний
4
6. Безопасность в ПС
Типичные уязвимости
В сети:
• перехват трафика
На сервере:
• SQL-инъекции
• 0-строки и раскрытие данных
На клиенте:
• XSS
• XSRF
7. Безопасность в ПС
Шифрование данных
При передаче:
• https-соединение
• cookies со спец-флагами
При хранении:
• можно шифровать данные в БД
• можно шифровать диски
• данные отдельно, ключи отдельно 7
8. Безопасность в ПС
Обработка данных
SQL-инъекции?
• хранимые процедуры и связанные переменные
XSS?
• шаблонизаторы и экранирование переменных
XSRF?
• подпись форм и ссылок
8
9. Интеграция
Проблема:
• Многообразие протоколов
• Многообразие алгоритмов
• Чрезмерная паранойя
Решение:
• Унификация — хотя бы свои делайте одинаково
• Простота — чем проще вы, тем проще вам
• Совместимость
9
12. Хранилище данных
Проблема:
Масштабируемость — scale-up или scale-out?
Выбор технологии:
•Промышленные СУБД?
•Open-source?
•NoSQL?
С этим выбором жить долго:
платежные системы консервативны
13. Хранилище данных
Решение:
• Данные — в сотнях узлов одинаковой структуры
• Каждый пользователь — в своем узле
• Работа с данными — через хранимые процедуры 13
14. Хранилище данных
Почему?
• Данные слабосвязаны, разных типов мало
• Многие данные не меняются
• Можно забыть про нормализацию
• JSON рулит. Разница — всего 34.8%. Жалко? Можно и 20.5%
• Дублируем, если нужно
• Безопасность + меньше сетевые издержки
21. Очереди
Эволюция: асинхронная работа
• От транзакций к сообщениям
• 99.9% работы платежной системы — в фоне
В фоне:
• распределенные транзакции
• взаимодействие с внешними системами
• различные уведомления внутри системы
21
22. Сервер приложений
• NginX + apache + mod_perl
• Где кэш?
Задачи:
• Координация запросов
• Контроль соединений
• Выдача результатов ХП
• Бизнес-логика (не СУБД)
22
23. Жертвы будут
Неочевидные проблемы
• Ой! Мы же зашифровали данные!
• Контакт? Нет контакта! Коннект?...
• Распределенные вычисления
• Распределенный поиск
• Точки G
23