Привет, Хабр! На связи Михаил Семенов, лидер дивизиона баз данных в СберТехе, Артем Лаптев, руководитель эксплуатации продукта 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, облачной цифровой платформы Сбера для разработки бизнес-приложений. 

  1. Прикладной шардинг

По мере роста микросервисов и объема данных важно обеспечить масштабирование и при этом защититься от простоев системы.

Решение — прикладной шардинг. Это метод, который делит базу данных на небольшие управляемые объекты-шарды, внутри которых могут содержаться данные — несколько таблиц или даже экземпляров БД. Объекты размещаются на независимых серверах, которые в свою очередь могут обрабатывать информацию из одного или нескольких сегментов шарда.

Шардинг снимает ограничения на количество одновременно обрабатываемых запросов в кластере, увеличивая пропускную способность шины, сохраняет 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)


  1. alexhott
    05.10.2022 12:21
    +1

    Если постгресс допиливали, то там вроде по лицензии должны выложить все в общий доступ?


    1. norguhtar
      05.10.2022 12:39
      +1

      У PostgreSQL лицензия не GPL можно не возвращать.


      1. dbax
        05.10.2022 14:41
        +4

        Даже если бы и GPL. В наше время "трофейного ПО" выдуманные "там" лицензии можно и проигнорировать ;)


        1. Dakar
          05.10.2022 18:58
          +2

          По gpl исходники выдаются пользователю ПО, в не всем подряд. Следовательно если ПО для внутреннего пользователя, то вам никто и ничем не обязан.


    1. MI7
      06.10.2022 19:32

      PostgreSQL имеет собственную лицензию, ее тип можно отнести к академической (вроде так называется).

      Основное ограничение - это запрет на использование слона и слова postgres в названии производного продукта.


  1. pazhitnov
    05.10.2022 12:42

    Как, с помощью чего, решается задача резервного копирования и восстановления баз данных?


    1. MI7
      06.10.2022 19:27

      Пара утилит собственной реализации + pg_probackup + интеграция с СРК Сбер.


  1. insighter
    05.10.2022 14:26
    +2

    В открытый доступ с исходниками будете выкладывать?


    1. MI7
      06.10.2022 19:24

      Привет!
      Весь код точно нет, а вот точечные патчи планируем.


  1. ijsgaus
    05.10.2022 14:28
    +2

    Плюсы то есть по сравнению с голым Postgres, и описаны хорошо. Вот только не понимаю, это предложение сменить одного поставщика на другого, у которого нет санкций, но нет цен и поддержка 40 специалистов. Был бы опенсоурс - а так - ничем не отличается с точки зрения рисков от всего нашего "импортозамещения". Сомнительно, что я продам это руководству.


  1. PaulIsh
    05.10.2022 18:00
    +1

    Тоже интересует вопрос выдачи патчей в upstream. И как обстоит процесс получения наоборот изменений из исходного postgres. Есть ли сотрудничество с postgres pro?


    1. MI7
      06.10.2022 19:24

      Привет!
      На текущий момент патчи в upstream не выдавали, но желание такое есть.


  1. vagon333
    05.10.2022 19:48
    +5

    Рад за Сбер, но для IT общества какова польза от вашего перехода?
    Смысл в статье для IT community, если вы ушли от открытого решения к закрытому и допиливаете движок для внутренних целей?


    1. AlexeyK77
      05.10.2022 20:41
      +5

      1.KPI по отраслевым статьям

      1. просто похвастаться.


    1. MI7
      06.10.2022 19:37

      Привет!
      Это скорее обзорная статья :)
      По технике тоже материалы готовим: https://habr.com/ru/company/sberbank/blog/678370/


  1. Pulso
    06.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) - расскажите как вы умудрились пройти аттестацию ФСБ/РКН для системы такого класса, да еще если вы так много воды пролили про цель сделать ее надежной, как броня Панголина..?


    1. Portnov
      06.10.2022 15:25
      -1

      (disclamer: не имею никакого отношения ни к postgres pro, ни к сберу).

      В конторе размером со Сбер используется такое большое количество различного софта для такого количества разных задач, что нет совершенно ничего удивительного, если для одних задач используется ванильный постгрес, для других - постгрес про, для третьих — самодельный панголин. Не удивлюсь, если там найдутся системы и на ms sql, и на mysql, и на оракле, и на ms access, и старый добрый эксель с макросами, и всё это одновременно.

      Разным сертификациям подлежат не все вообще информационные системы, а только некоторые, по довольно чётким критериям.


      1. Pulso
        06.10.2022 16:18
        +1

        На это можно было бы сослаться, если бы не собственный пафос авторов:

        Весной 2020 года Platform V Pangolin был признан целевой СУБД в Сбере вместо Oracle и MSSQL. Тогда же команда продукта защитила roadmap развития, а ещё спустя несколько месяцев начались первые инсталляции в компании.

        По состоянию на 2022 год количество активных экземпляров Platform V Pangolin превысило 6 тыс., из которых более 1600 — в промышленной эксплуатации. Число инсталляций составило 8721, на базе продукта работают более 380 приложений Сбера. 


    1. MI7
      06.10.2022 19:18

      Добрый вечер!

      В данной ветке комментариев подняли сразу несколько вопросов, постараюсь ответить тезисно :)

      Признак "целевой" означает, что разработка новых систем осуществляется с применением Pangolin в качестве реляционной СУБД.

      При этом есть определенное количество систем, на текущий момент, которые созданы до 2020 и используют в качестве СУБД: оригинальный PostgreSQL, Oracle, MS SQL или DB2.

      Решение о необходимости миграции для каждой системы принимается в отдельности, в зависимости от ряда факторов.

      Pangolin разрабатывали полностью своими силами на базе оригинальной версии PostgreSQL.

      В благодарственном письме все написано корректно. Речь про оригинальный PostgreSQL.

      Продукт сертифицирован по 4 уровню доверия ФСТЭК. Сертификация же от ФСБ в качестве СКЗИ в планах.


      1. Sleuthhound
        07.10.2022 09:58

        Сертификация же от ФСБ в качестве СКЗИ в планах.

        Вероятно в планах и останется, они никому просто так не дают сертификаты на СЗИ. Так что вероятно Вам придется использовать уже существующие СКЗИ в виде КриптоПРО или иных. Я про сертификат дающий право на разработку и производство шифровальных средств, а так же на разработку защищенных с использованием шифровальных средств информационных систем и прочее.

        Кстате если верить технической статье, то шифрование у Вас через OpenSSL и вероятность получения сертификата при данном крипто-провайдере близиться к нулю.


  1. SteelRat
    07.10.2022 16:19

    188 БД в масштабах сбера это ничто. Только баз данных Oracle год назад там было около 8000. Что-то мне подсказывает, что на этой поделке крутятся только маленькие/новые системы в пилотном режиме.