Привет, Хабр! На связи Михаил Семенов, лидер дивизиона баз данных в СберТехе, Артем Лаптев, руководитель эксплуатации продукта 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)
ijsgaus
05.10.2022 14:28+2Плюсы то есть по сравнению с голым Postgres, и описаны хорошо. Вот только не понимаю, это предложение сменить одного поставщика на другого, у которого нет санкций, но нет цен и поддержка 40 специалистов. Был бы опенсоурс - а так - ничем не отличается с точки зрения рисков от всего нашего "импортозамещения". Сомнительно, что я продам это руководству.
vagon333
05.10.2022 19:48+5Рад за Сбер, но для IT общества какова польза от вашего перехода?
Смысл в статье для IT community, если вы ушли от открытого решения к закрытому и допиливаете движок для внутренних целей?MI7
06.10.2022 19:37Привет!
Это скорее обзорная статья :)
По технике тоже материалы готовим: https://habr.com/ru/company/sberbank/blog/678370/
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) - расскажите как вы умудрились пройти аттестацию ФСБ/РКН для системы такого класса, да еще если вы так много воды пролили про цель сделать ее надежной, как броня Панголина..?
Portnov
06.10.2022 15:25-1(disclamer: не имею никакого отношения ни к postgres pro, ни к сберу).
В конторе размером со Сбер используется такое большое количество различного софта для такого количества разных задач, что нет совершенно ничего удивительного, если для одних задач используется ванильный постгрес, для других - постгрес про, для третьих — самодельный панголин. Не удивлюсь, если там найдутся системы и на ms sql, и на mysql, и на оракле, и на ms access, и старый добрый эксель с макросами, и всё это одновременно.
Разным сертификациям подлежат не все вообще информационные системы, а только некоторые, по довольно чётким критериям.
Pulso
06.10.2022 16:18+1На это можно было бы сослаться, если бы не собственный пафос авторов:
Весной 2020 года Platform V Pangolin был признан целевой СУБД в Сбере вместо Oracle и MSSQL. Тогда же команда продукта защитила roadmap развития, а ещё спустя несколько месяцев начались первые инсталляции в компании.
По состоянию на 2022 год количество активных экземпляров Platform V Pangolin превысило 6 тыс., из которых более 1600 — в промышленной эксплуатации. Число инсталляций составило 8721, на базе продукта работают более 380 приложений Сбера.
MI7
06.10.2022 19:18Добрый вечер!
В данной ветке комментариев подняли сразу несколько вопросов, постараюсь ответить тезисно :)
Признак "целевой" означает, что разработка новых систем осуществляется с применением Pangolin в качестве реляционной СУБД.
При этом есть определенное количество систем, на текущий момент, которые созданы до 2020 и используют в качестве СУБД: оригинальный PostgreSQL, Oracle, MS SQL или DB2.
Решение о необходимости миграции для каждой системы принимается в отдельности, в зависимости от ряда факторов.
Pangolin разрабатывали полностью своими силами на базе оригинальной версии PostgreSQL.
В благодарственном письме все написано корректно. Речь про оригинальный PostgreSQL.
Продукт сертифицирован по 4 уровню доверия ФСТЭК. Сертификация же от ФСБ в качестве СКЗИ в планах.
Sleuthhound
07.10.2022 09:58Сертификация же от ФСБ в качестве СКЗИ в планах.
Вероятно в планах и останется, они никому просто так не дают сертификаты на СЗИ. Так что вероятно Вам придется использовать уже существующие СКЗИ в виде КриптоПРО или иных. Я про сертификат дающий право на разработку и производство шифровальных средств, а так же на разработку защищенных с использованием шифровальных средств информационных систем и прочее.
Кстате если верить технической статье, то шифрование у Вас через OpenSSL и вероятность получения сертификата при данном крипто-провайдере близиться к нулю.
SteelRat
07.10.2022 16:19188 БД в масштабах сбера это ничто. Только баз данных Oracle год назад там было около 8000. Что-то мне подсказывает, что на этой поделке крутятся только маленькие/новые системы в пилотном режиме.
alexhott
Если постгресс допиливали, то там вроде по лицензии должны выложить все в общий доступ?
norguhtar
У PostgreSQL лицензия не GPL можно не возвращать.
dbax
Даже если бы и GPL. В наше время "трофейного ПО" выдуманные "там" лицензии можно и проигнорировать ;)
Dakar
По gpl исходники выдаются пользователю ПО, в не всем подряд. Следовательно если ПО для внутреннего пользователя, то вам никто и ничем не обязан.
MI7
PostgreSQL имеет собственную лицензию, ее тип можно отнести к академической (вроде так называется).
Основное ограничение - это запрет на использование слона и слова postgres в названии производного продукта.