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