В одном банке исходный код Python хранится в базе данных, а не на диске
Экскурсия Кэла Патерсона по «банковскому Python» спотыкается об одну фразу: внутренняя платформа держит собственный исходный код внутри глобального хранилища объектов, в особом кольце под названием sourcecode. Ни git, ни файлов, ни диска.
Инвестбанки держат секретные форки всей экосистемы Python. По рассказу Патерсона, система одного банка пишет и читает Python-датаклассы прямо в единую глобальную объектную базу под именем Barbara, общую для всей фирмы.
Исходный код самой платформы лежит там же, в базе, а не в файлах. Тред бывших банковских инженеров возводит идею к Goldman SecDB и языку Slang из 1990-х, и один из них называет результат «альтернативной IT-реальностью», из которой не выгуглить выход.
Python, где код живёт прямо в базе данных

Большинство программистов этого никогда не видели: увидеть можно, только если работаешь внутри инвестбанка. Устная история «банковского Python» от Кэла Патерсона описывает проприетарные форки всей экосистемы Python, собранные своими силами и отгороженные от внешнего мира. Одну такую систему он анонимизирует под именем Minerva и разбирает её по частям.
Центр тяжести — Barbara, глобальное иерархическое хранилище объектов «ключ — значение», построенное на ничём более экзотичном, чем pickle и zlib. Приложения не ходят в Postgres и не поднимают микросервисы: они пишут Python-датаклассы прямо внутрь и тут же читают их обратно. По словам Патерсона, «кольцо по умолчанию — это более или менее единая глобальная объектная база данных всего банка». Данные лежат за аккуратными путями вроде /Instruments, /FX и /Equities/XLON/VODA/, с мягким лимитом около 16 МБ на сжатый объект, чтобы держать людей в рамках. Кольца — это пространства имён; «оверлеи» позволяют наложить вид одного кольца поверх другого.
А дальше идёт та самая фраза, к которой тред возвращался снова и снова:
«Пора подбросить небольшую бомбу: исходный код тоже в Barbara, а не на диске. Он лежит в особом кольце Barbara под названием sourcecode.»
Никаких файлов. Никакого git. Код, на котором работает банк, — это просто ещё одни объекты в той же базе, которой он управляет. Поэтому Minerva и нужны собственная обязательная IDE и собственный запускальщик задач, иначе она вообще не работает.
Остальной стек рифмуется с этим выбором. Dagger держит каждый финансовый инструмент в направленном ациклическом графе и автоматически переоценивает деривативы, когда сдвигается базовый актив: получается моделирование в духе таблиц, но на Python и с контролем версий сверху. Инструменты складываются в позиции, позиции в книги, книги вложены вверх вплоть до банка целиком. Walpole — общебанковский запускальщик задач, сплав Jenkins и systemd, где задеплоить сервис значит написать ini-файл, а не воевать с Kubernetes. MnTable — библиотека плотных в памяти таблиц, заточенная под гигабайтные данные с b-tree-индексами, там, где pandas уже сдаётся.
Тезис Патерсона намеренно еретичен: «одно большое что-то вместо множества маленьких». Одна кодовая база, одна база данных, один запускальщик задач, и случайная сложность современного микросервисного стека почти испаряется. Финансисты, которым не суждено стать отличными инженерами, всё равно пишут полезный Python и выкатывают его. Цена тоже крутая, и Патерсон её называет: навыки атрофируются в монокультуре, новички тратят месяцы или увольняются «в приступе раздражения», а вся конструкция не может покинуть здание.
Тред дописывает, кто это построил и когда
Обсуждение невелико, но набито людьми, которые явно жили внутри таких систем. Самый полезный вклад — родословная. Комментатор, работавший рядом с исходной системой, возводит весь паттерн к одному месту:
«Многое из этого пошло от SecDB/Slang в Goldman — SecDB… был хранилищем объектов, а slang — слегка чудаковатым C-подобным языком… Часть людей, кто это строил… осели в JPM и Merrill, где собрали Python-ориентированную версию — Alpha и Quartz соответственно.» — комментатор, профессионально писавший на Slang
Значит, у Barbara есть реальная линия: Goldman SecDB и его язык Slang в 1990-х, перерождённые на Python как Athena/Alpha в JP Morgan и Quartz в Bank of America Merrill. Тот же человек отмечает, что в Slang можно было ставить пробелы внутри имён переменных — деталь, которую знаешь, только если сам это набирал.
Второй голос дал имя тому, как это ощущается изнутри:
«У таких штук обычно адски паршивая документация. Удачи во всём этом разобраться. И не выгуглишь, и твой ИИ заблудился ровно так же, как ты.» — инженер, работавший внутри крупной финансовой организации
В этом и скрытая цена приватного форка целой экосистемы: каждый ответ со Stack Overflow, каждый вес модели, обученной на публичном коде, вдруг бесполезен. Тех, кто проводит в этом всю карьеру, он сравнивает с консультантами по SAP: набор навыков, приваренный к одному работодателю.
Не все видят в архитектуре экзотику. Один ответ кивнул на куда более старого родственника:
«Странным образом не так уж и непохоже на системы на MUMPS.» — читатель, узнавший паттерн постарше
MUMPS, язык 1960-х, чьи глобальные постоянные массивы до сих пор крутят бэкенды больниц и банков, провернул трюк «код и данные в одном хранилище» за десятилетия до того, как кто-либо форкнул Python. Ещё один завсегдатай возразил инстинкту фыркать над самодельным изобретением велосипеда:
«„Почему они просто не взяли <готовое решение>“… Ответ часто в том, что закалённого зрелого готового решения попросту не существовало, когда писался код. Вы занимаетесь софтверной археологией.» — читатель, отвечающий на инстинкт „почему не купили готовое“
Сожаление в треде в том, что ничего из этого никогда не выйдет наружу. Финансовые модели — это секретный соус; а вот эта сантехника — нет, и всё равно она остаётся запертой в сейфе.
«Жаль, что они, скорее всего, никогда не выложат это в опенсорс… такая базовая инфраструктура на самом деле не „секретный соус“.» — комментатор, разделяющий модели и инфраструктуру
И это тихая суть всего материала. Банки тридцать лет независимо изобретали один и тот же паттерн «глобальная объектная база плюс граф», шлифовали его на реальных деньгах, а остальная индустрия не увидит ни строчки и будет выводить те же идеи заново, плохо, на публике.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Ушёл Ом Малик, призывавший писать «как человек». Ему было 59
Семья оставила четыре фразы в блоге, который он вёл 25 лет: Ом Малик умер 24 июня в Стэнфордской больнице, после долгого пути с больным сердцем, в окружении родных и друзей.