Архитектура платформы финансовых вычислений Uber
Для компании маштаба убера: аналитика, бухгалтерский учет есть жизненно необходимыми вещами.
В сфере райдшеринга ежегодно совершается более 4 миллиардов поездок по всему миру, что составляет более 40 миллиардов записей в журнале (финансовых микротранзакций). Каждая из этих записей должна производиться в соответствии с Общепринятыми принципами бухгалтерского учета (GAAP) и управляться идемпотентным, непротиворечивым, точным и воспроизводимым образом.
Чтобы удовлетворить эти специфические требования, Uber создали собственную Платформу FCP (Finance Computation Platform).
Мотивация и технические челленджи
В 2019 году клиенты Uber ежедневно совершали более 15 миллионов поездок с использованием самых разных услуг (еда, поездки, грузоперевозки и т. д.), команде пришлось иметь дело с множеством неупорядоченных данных, и неравномерной нагрузкой, точное, объяснимое и стандартизированное представление.
Типичный финансовый расчет
Для выполнения бухгалтерских операций и регистрации необходимых финансовых показателей в general ledger (GL) Uber нужно было подключиться к системам продаж, сбора и оплаты каждого продукта.
Один из самых простых способов сделать это — создать пайплайны Extract Transform Load (ETL) для заполнения warehouse таблиц, коллекций и т. д. и написать запросы на языке SQL поверх warehouse таблиц для создания бухгалтерской книги. Этот тип типичной конфигурации финансовой системы, показанный ниже на рисунке включает в себя различные хранилища данных и хранилища для приема и хранения финансовой информации для обработки.
Несмотря на то, что для многих компаний работа с финансовыми расчетами типична, размер, масштаб и динамичный характер бизнеса в Uber сделали этот подход несовместимым с их требованиями. В частности, в Uber решили, что типовой системы будет недостаточно, потому что:
- Complex Queries: по мере роста бизнеса и количества доменов модели данных значительно меняются, что увеличивает сложность запросов и затрудняет их обслуживание.
- Потребность в снапшотах и Audit trail. Для существенного финансового аудита может потребоваться подтверждение для каждой записи , представленной в системе на срок до года. Следовательно, он может запросить снапшот и audit trail для источника.
Принимая во внимание всю сложность, финансовые расчеты в Uber были бы слишком сложными для обработки только SQL-запросов, созданных человеком. Поэтому в убер создали собственную Платформу финансовых вычислений (FCP).
Финансовый жизненный цикл поездки
FCP - Finance Computation Platform
PSP - Payment Service Provider
Ключевые принципы Платформы финансовых вычислений (FCP)
Гарантии данных имеют решающее значение для любой финансовой системы, поэтому система Uber построена на принципах:
- Immutable: редактирование транзакции отключено, и любые исправления принимаются как дополнительные транзакции .
- Idempotent и strong Consistency: система гарантирует всегда производить одну и ту же транзакцию для данного события.
- Возможность аудита : ведет контрольный журнал каждой финансовой транзакции с полной объяснимостью для каждого действия, связанного с его корнем .
- Complete: гарантирует полноту финансовых книг за счет измерения бизнес-событий, пропущенных системой, и обеспечения отсутствия пробелов в финансовых показателях.
- Точность: точность обеспечивается постоянным мониторингом просчетов на различных этапах финансового жизненного цикла и выявлением любых пробелов.
- Безопасность: механизмы контроля доступа к базовой инфраструктуре Uber помогают обеспечить ограниченный доступ к финансовым данным.
Выбор дизайна
Прежде чем создавать архитектуру Платформы финансовых вычислений Uber, ребята оценили ряд вариантов дизайна для обеспечения оптимальной производительности и масштабируемости. В конечном итоге остановились на event-driven architecture с Schemaless в качестве хранилища OLTP (Online Transaction Processing) и Apache Hadoop® (распределенная файловая система Apache Hadoop®) в качестве хранилища для OLAP (Online Analytic Processing) для создания отчетов и аналитики.
Архитектура платформы финансовых вычислений Uber
Рассмотрим подробнее детали реализации:
Использование Schemaless на базе MySQL в качестве хранилища данных
Uber разработал Schemaless - единое хранилище данных для транзакций. Чтобы оно обеспечивало управляемые кластеры и высокую пропускную способность, доступность и согласованность данных.
Использованпе Apache Hadoop для батч операций
Некоторые отчеты и проверки качества данных требуют обработки больших объемов данных. Для того чтобы справиться с таким потоком uber юзают Hadoop.