
Привет, Хабр! На связи Михаил Семенов, лидер дивизиона баз данных в СберТехе, Артем Лаптев, руководитель эксплуатации продукта Platform V Pangolin в SberInfra, и Вячеслав Гавришин, руководитель команды развития Platform V Pangolin в SberInfra.
В этом посте мы поделимся историей импортозамещения систем управления базами данных в Сбере и опытом миграции с MSSQL и Oracle на собственную СУБД Platform V Pangolin. Расскажем, как разрабатываем и кастомизируем отечественную СУБД уровня enterprise и какие решения помогли нам упростить процесс миграции и использовать продукт в микросервисной архитектуре банка.
Как появился Platform V Pangolin
Несколько лет назад Сбер утвердил новую стратегию развития, одним из векторов которой стала цифровая трансформация и постепенный отказ от иностранного программного обеспечения.
В рамках стратегии в банке начали исследовать систему PostgreSQL, которая могла бы стать альтернативой уже используемым Oracle и MSSQL. Но open source продукт в его исходном виде проигрывал западным и не соответствовал стандартам банка в части безопасности хранения информации, надежности и удобства сопровождения.
Было решено значительно расширить и доработать PostgreSQL, чтобы обеспечить полное соответствие требованиям крупного бизнеса и гарантировать отсутствие технологических гэпов относительно Oracle/MSSQL. В 2019 году в СберТехе появился собственный центр экспертизы и разработки, который должен был создать независимую СУБД корпоративного уровня — Platform V Pangolin. Название выбрали, исходя из важной функциональной особенности: по аналогии с жесткой броней, которой покрыто тело панголина, база данных должна была надежно защищать хранимую информацию.
В течение первого года команда разработки реализовала ключевые требования кибербезопасности: прозрачное шифрование, защиту от привилегированных пользователей. Были существенно переделаны аналогам парольные политики, расширен процесс логирования и аудирования действий пользователя, реализована интеграция со всей инфраструктурой банка с помощью скриптов инсталляций.
Несколько лет назад Platform V Pangolin был признан целевой СУБД в Сбере вместо Oracle и MSSQL.Тогда же команда продукта защитила roadmap развития, а еще спустя несколько месяцев начались первые инсталляции в банке.
Сегодня Platform V Pangolin используется в 188 банковских системах. Среди них 31 система уровня mission critical — это критически важные приложения, работающие в режиме реального времени, — и 63 системы business critical с высоким уровнем критичности, работающие в режиме 24/7/365.
Platform V Pangolin — полностью независимая база данных, над развитием которой работает команда из 40 инженеров. В СУБД реализована функциональность, обеспечивающая, по сравнению с open source версией, значительно более высокий уровень надежности и безопасности:
- Гибкое управление парольными политиками 
Позволяет группировать пользователей по ролям и назначать различные парольные политики, контролировать соответствие задаваемых паролей назначенным парольным политикам и время жизни паролей.
- Шифрование данных 
Предотвращает несанкционированный доступ к пользовательским данным в СУБД, не требует каких-либо доработок со стороны прикладных приложений и обеспечивает устойчивость к раскрытию, в том числе со стороны системных администраторов.
- Защита от привилегированных пользователей 
Позволяет предотвратить доступ к пользовательским данным, хранящимся в базах данных Platform V Pangolin, со стороны неавторизованных лиц, в том числе администраторов сопровождения.
- Расширенные возможности аудита 
Обеспечивает неотключаемые и расширенные функции аудита действий пользователя с различным уровнем детализации, что позволяет настроить уровень аудита, соответствующий требованиям клиента.
- Инструменты анализа производительности СУБД 
Предоставляет возможность администратору СУБД, администратору информационной системы или разработчику приложений возможность анализа истории активности СУБД Pangolin как текущей, так и сохраненной в заданном временном диапазоне.
- Диагностический отчет 
В состав дистрибутива входит набор инструментов для диагностики состояния СУБД, сформированный отчет пригоден для передачи на анализ производителю СУБД и не содержит чувствительной информации.
- Отслеживание блокировок 
Встроенный инструмент для оперативного анализа блокировок и причин их возникновения с целью принятия решения о дальнейших действиях в рамках сопровождения.
- Отслеживание времени изменения объекта 
С целью повышения удобства сопровождения мы реализовали отдельный инструмент, позволяющий отслеживать время последнего изменения объекта, что могло привести к деградации скорости работы СУБД.
- Управление планами запросов 
Позволяет оперативно и без влияния на существующую структуру объектов принудительно определять план выполнения SQL запроса, выполняемого как самостоятельный запрос, подготовленный запрос или запрос в составе PL/pgSQL-блока. А также без изменения текста запроса на стороне приложения корректировать план выполнения запроса на лету, на стороне сервера при его обработке.
- Поддержка prepared statements для пула соединений 
Функциональность подготовленных запросов при включенном транзакционном режиме пула соединений кластера высокой доступности позволяет значительно повысить производительность работы запросов, использовать подготовленные запросы и возможности подключения к СУБД, аналогичные тем, которые доступны в подключении напрямую.
- Управление пулом соединений 
Дополнительно к работе через пул соединений был добавлен новый тип аутентификации пользователя — сквозная аутентификация. При подключении пользователя через пул соединений к СУБД аутентификация выполняется только в СУБД. Пул соединений проксирует запросы/ответы аутентификации, и обеспечивает открытие соединений на основе токенов аутентификации, формируемых при аутентификации на стороне СУБД.
- Секционирование таблиц 
Оптимизировали скорость работы с секциями и добавлены автоматические обработчики создания новых секции по хешу и списку. Дополнительно предоставлена возможность строить (CREATE INDEX) и перестраивать (REINDEX) индексы для секционированных таблиц, не блокируя доступ к ним для других запросов.
- Консоль администрирования для DBA — Kintsugi 
Аналог Oracle Cloud Control, консоль администрирования для DBA — Kintsugi. Это полноценный инструмент, позволяющий решать задачи сопровождения и взаимодействия с базой данных.
5 прикладных решений для масштабируемой архитектуры
Миграция на новые продукты в большинстве случаев невозможна без пересмотра IT-ландшафта. Нельзя просто заменить одну базу данных на другую. В парадигме монолитной архитектуры, где вопросы масштабируемости и надежности решаются на уровне дистрибутива, такая миграция — риск для стабильности бизнес-процессов.
Устранить этот риск поможет смена архитектурной парадигмы разработки приложений и использование микросервисного подхода.
Мы прошли путь от сложной монолитной СУБД к новой архитектуре, в которой функциональность, призванная обеспечить доступность и производительность выносится за контур СУБД. Ниже рассказываем о пяти решениях, которые позволили нам реализовать новый подход в разработке. Многие из этих методов реализованы в инструментах и компонентах Platform V, облачной цифровой платформы Сбера для разработки бизнес-приложений.
- Прикладной шардинг 
По мере роста микросервисов и объема данных важно обеспечить масштабирование и при этом защититься от простоев системы.
Решение — прикладной шардинг. Это метод, который делит базу данных на небольшие управляемые объекты-шарды, внутри которых могут содержаться данные — несколько таблиц или даже экземпляров БД. Объекты размещаются на независимых серверах, которые в свою очередь могут обрабатывать информацию из одного или нескольких сегментов шарда.
Шардинг снимает ограничения на количество одновременно обрабатываемых запросов в кластере, увеличивая пропускную способность шины, сохраняет latency и обеспечивает высокую доступность. Реализовать метод поможет компонент платформы Platform V AppSharding.

2. Stand-in
Любые обновления могут привести к простоям, в том числе в критических для бизнеса-системах.
Решение — stand-in база данных. В Platform V Pangolin это резервная БД, реализованная благодаря компоненту Platform V Data Transfer и поддерживаемая за счет логической репликации. При сбое производится автоматическое переключение и полное резервирование базы данных, что позволяет проводить обновления и технические работы с практически нулевым временем простоя.

3. Оркестрация транзакций
Если у каждого сервиса приложения своя СУБД, в сложных бизнес-транзакциях, охватывающих несколько миксервисов, могут возникнуть проблемы с согласованием данных и процессов в них.
Решение — реализовать сложные транзакции как сагу, набор локальных транзакций. Каждая из них обновляет базу данных и публикацией запускать следующую локальную транзакцию. Управлением при этом занимается multi-instance оркестратор — в Platform V это Platform V Flow, компонент, который управляет всеми атомарными шагами, последовательно выполняя их или отказывая по мере необходимости.
Оркестрация транзакций и паттерн сага обеспечивают полную консистентность данных даже в условиях сбоев и гарантируют работу транзакций на всех уровнях.

4. ORM
ORM-фреймворки связывают базы данных с объектно-ориентированными языками программирования, создавая «виртуальную объектную базу данных». Примеры — NET.Core, Hibernate, Django.
Суть в том, чтобы абстрагироваться от способа хранения объектов, с легкостью переходя от SQL к NoSQL, memcache, файлам или REST/RPC API на удаленном сервере и оперируя на уровне модели простыми объектами. Но мы решили развить эту идею и создали на базе Platform V отдельный облачный инструмент — Platform V DataSpace. Он позволяет быстро создать слой доступа к данным на основе модели данных клиента, обеспечив разработчика продвинутым мониторингом и гибкими возможностями поиска и получения данных.

5. Облачное решение для хранения и управления данными
Для работы с объектами на уровне модели мы разработали Platform V DataSpace — инструмент, который позволяет абстрагироваться от уровня хранения данных.
Platform V DataSpace обеспечивает доступ к данным и к работе с объектной моделью, прикладную репликацию и интеграцию с корпоративной моделью данных, находящейся в аналитике. Такой подход позволяет снизить расходы на создание backend-инфраструктуры и сократить время на разработку бизнес-логики.

Как работает кастомизация и внедрение продукта в Сбере
Кастомизация и сопровождение Platform V Pangolin в банке — отдельный процесс, которым занимаются сотрудники SberInfra. Специалисты подразделения тестируют продукт, проводят приемо-сдаточные испытания, готовят сборку с новой версией на порталах самообслуживания облачной инфраструктуры. Только после этого СУБД уже становится доступна для всех остальных сотрудников Сбера.
Дистрибутив кастомизируется после СберТеха специально под потребности клиентов. SberInfra интегрирует его с различными системами банка — с системой инвентаризации, резервного копирования, мониторинга и прочими — и выстраивает автоматизацию выдачи и обслуживания продукта на портале Динамической инфраструктуры. Плюс подготавливает, тестирует и реализовывает новые сценарии самообслуживания для клиента.
Один из важных этапов — сбор требований и обратной связи. Например, когда клиенты начинают активно пользоваться очередным релизом, у них часто появляются вопросы по функциональности, доступам и т д. За ответами чаще всего обращаются в команду сопровождения, которая анализирует запросы. Если они однотипны и системны, то берут в бэклог, работают над автоматизацией и реализацией нового сценария — такого, при котором пользователь сможет самостоятельно заходить на портал самообслуживания, вводить нужные действия, выбирать определенные параметры и решать задачи без помощи команды сопровождения.
Кстати, клиенты сами могут влиять на функциональность СУБД, в том числе участвуя в исследовании CSI (Customer Satisfaction Index, индекс удовлетворенности). Можно оценивать продукт, информированность о нем, сопровождение, оставлять комментарии по доработке и возможным ошибкам.
Итоги
Мы на собственном опыте убедились в том, что бесшовный переход на новые решения возможен, даже когда речь идет об одном из крупнейших банков со сложными бизнес-процессами и высокими требованиями к безопасности и надежности решений. Используйте проверенные функциональные решения, перестраивайте архитектуру постепенно — и все получится.
В Сбере переход на собственную базу данных занял несколько лет, но за это время Platform V Pangolin стал эффективной заменой Oracle и MSSQL. СУБД поставляется внешним клиентам — бизнесу и государственным структурам. Впереди много амбициозных и интересных задач, бэклог заполнен на три года вперед, поэтому мы активно ищем новые таланты, в том числе в SberInfra. У нас открыты позиции разработчиков, аналитиков, администраторов и экспертов — пишите нам и присоединяйтесь к команде!
Комментарии (21)
 - ijsgaus05.10.2022 14:28+2- Плюсы то есть по сравнению с голым Postgres, и описаны хорошо. Вот только не понимаю, это предложение сменить одного поставщика на другого, у которого нет санкций, но нет цен и поддержка 40 специалистов. Был бы опенсоурс - а так - ничем не отличается с точки зрения рисков от всего нашего "импортозамещения". Сомнительно, что я продам это руководству. 
 - vagon33305.10.2022 19:48+5- Рад за Сбер, но для IT общества какова польза от вашего перехода? 
 Смысл в статье для IT community, если вы ушли от открытого решения к закрытому и допиливаете движок для внутренних целей? - MI706.10.2022 19:37- Привет! 
 Это скорее обзорная статья :)
 По технике тоже материалы готовим: https://habr.com/ru/company/sberbank/blog/678370/
 
 - Pulso06.10.2022 12:27+2- Любопытно, что говоря столько пафоса о сложном выборе между БД и тяжестью их несоответствия требованиям большой компании, не упомянулся старый российский Hi-Load - PostgresPro. - Захожу я на сайт PostgresPro (https://www.postgrespro.ru), что бы взять ссылочку для этого комментария, и о чудо, что я вижу - сразу по центру экрана список ключевых клиентов и среди них зелененький "Сбер". Любопытно, думаю, неужели - это старые заслуги, который хитрый PostgresPro до сих пор не удалил. Щелкаю по отзыву и о второе чудо, попадаю прямо на скан благодарственного письма (https://www.postgrespro.ru/media/2022/03/24/SB-letter.pdf), где Поддубный пишет Бартунову, аж шесть месяцев назад 11.03.2022, о многолетней профессиональной поддержке СУБД PostgreSQL. - Вопрос - о каком тогда продукте речь в данной "статье", кто его на самом деле делал, на каком продукте и кто сопровождает?! Опять красивое российское импортозамещение, точнее "сберозамещение", а всю работу сделали PostgresProfessional на своем продукте - СУБД Postgres Pro Enterprise (https://www.postgrespro.ru/products/postgrespro/enterprisecertified)? Ибо хранение фискальных и ПД данных в БД и контуре не аттестованном ФСБ никто бы не дал. - Любопытно, команда Сбера (Михаил Семёнов, лидер дивизиона баз данных в СберТехе, Артём Лаптев, руководитель эксплуатации продукта Platform V Pangolin в SberInfra, и Вячеслав Гавришин, руководитель команды развития Platform V Pangolin в SberInfra) - расскажите как вы умудрились пройти аттестацию ФСБ/РКН для системы такого класса, да еще если вы так много воды пролили про цель сделать ее надежной, как броня Панголина..?  - Portnov06.10.2022 15:25-1- (disclamer: не имею никакого отношения ни к postgres pro, ни к сберу). - В конторе размером со Сбер используется такое большое количество различного софта для такого количества разных задач, что нет совершенно ничего удивительного, если для одних задач используется ванильный постгрес, для других - постгрес про, для третьих — самодельный панголин. Не удивлюсь, если там найдутся системы и на ms sql, и на mysql, и на оракле, и на ms access, и старый добрый эксель с макросами, и всё это одновременно. - Разным сертификациям подлежат не все вообще информационные системы, а только некоторые, по довольно чётким критериям.  - Pulso06.10.2022 16:18+1- На это можно было бы сослаться, если бы не собственный пафос авторов: - Весной 2020 года Platform V Pangolin был признан целевой СУБД в Сбере вместо Oracle и MSSQL. Тогда же команда продукта защитила roadmap развития, а ещё спустя несколько месяцев начались первые инсталляции в компании.- По состоянию на 2022 год количество активных экземпляров Platform V Pangolin превысило 6 тыс., из которых более 1600 — в промышленной эксплуатации. Число инсталляций составило 8721, на базе продукта работают более 380 приложений Сбера.
 
  - MI706.10.2022 19:18- Добрый вечер! - В данной ветке комментариев подняли сразу несколько вопросов, постараюсь ответить тезисно :) - Признак "целевой" означает, что разработка новых систем осуществляется с применением Pangolin в качестве реляционной СУБД. - При этом есть определенное количество систем, на текущий момент, которые созданы до 2020 и используют в качестве СУБД: оригинальный PostgreSQL, Oracle, MS SQL или DB2. - Решение о необходимости миграции для каждой системы принимается в отдельности, в зависимости от ряда факторов. - Pangolin разрабатывали полностью своими силами на базе оригинальной версии PostgreSQL. - В благодарственном письме все написано корректно. Речь про оригинальный PostgreSQL. - Продукт сертифицирован по 4 уровню доверия ФСТЭК. Сертификация же от ФСБ в качестве СКЗИ в планах.  - Sleuthhound07.10.2022 09:58- Сертификация же от ФСБ в качестве СКЗИ в планах.- Вероятно в планах и останется, они никому просто так не дают сертификаты на СЗИ. Так что вероятно Вам придется использовать уже существующие СКЗИ в виде КриптоПРО или иных. Я про сертификат дающий право на разработку и производство шифровальных средств, а так же на разработку защищенных с использованием шифровальных средств информационных систем и прочее. - Кстате если верить технической статье, то шифрование у Вас через OpenSSL и вероятность получения сертификата при данном крипто-провайдере близиться к нулю. 
 
 
 - SteelRat07.10.2022 16:19- 188 БД в масштабах сбера это ничто. Только баз данных Oracle год назад там было около 8000. Что-то мне подсказывает, что на этой поделке крутятся только маленькие/новые системы в пилотном режиме. 
 
           
 



alexhott
Если постгресс допиливали, то там вроде по лицензии должны выложить все в общий доступ?
norguhtar
У PostgreSQL лицензия не GPL можно не возвращать.
dbax
Даже если бы и GPL. В наше время "трофейного ПО" выдуманные "там" лицензии можно и проигнорировать ;)
Dakar
По gpl исходники выдаются пользователю ПО, в не всем подряд. Следовательно если ПО для внутреннего пользователя, то вам никто и ничем не обязан.
MI7
PostgreSQL имеет собственную лицензию, ее тип можно отнести к академической (вроде так называется).
Основное ограничение - это запрет на использование слона и слова postgres в названии производного продукта.