image

Об оптимизации работы с PostgreSQL уже много рассказывали (в этом году, среди прочего, запустили DBaaS PostgreSQL). Однако тема далеко не исчерпана. Подготовили для вас обзор нового инструмента, который поможет работать с базами данных PostgreSQL, не задумываясь о базовой серверной инфраструктуре.

Бессерверные вычисления приобрели популярность в 2010-х и с тех пор остаются актуальными. В отличие от выделенных серверов, бессерверные модули запускаются при необходимости для каждого события. Технология позволяет не резервировать вычислительные ресурсы заранее и экономить.

Рынок бессерверной архитектуры


Недавно аналитики компании Verified Market Research опубликовали следующие данные: к 2028 году объем serverless-рынка превысит 36 млрд долларов. Хотя отдельных данных по российскому сегменту нет, для нашей страны актуален вопрос замещения сервисов бессерверных вычислений. Один из вариантов — open source платформы, которые можно развернуть самостоятельно. Среди таких решений — OpenLambda, OpenFaaS, Apache OpenWhisk или Kubeless.

Правда, с ними не всегда удобно работать: многие решения обладают очень широкой функциональностью, избыточной в рамках небольшого домашнего или тестового корпоративного проекта. А некоторые из открытых платформ, в частности Kubeless, более не поддерживаются разработчиками.

Но недавно группа инженеров представила бессерверную платформу для работы с базами данных PostgreSQL — Neon. Изначально проект назывался Zenith, но прямо перед запуском разработчики решили изменить название. Что интересно, в комментариях к коду все еще можно встретить упоминания оригинального имени, но, по словам авторов, они их постепенно меняют.

Как работает Neon


image

Уровень хранения данных в Neon представлен кластером Kubernetes, информация в котором распределяется автоматически. Система реализует механизм копирования при записи — copy-on-write (COW), когда для внесения изменений предварительно создается копия данных. Также можно формировать контрольные точки и оперативно восстанавливать состояние базы данных.

Что касается движка БД, то он содержит два ключевых компонента: WAL-сервис, собирающий журналы предзаписи (WAL), и pageserver, управляющий нагрузкой на вычислительные узлы. Последний состоит из репозитория (реализация хранилища Neon), WAL-приемника и страничного сервиса, который обменивается информацией с вычислительными узлами, и системы построения страниц баз данных на основе образов.

Neon предоставляет бесплатный доступ к бессерверному инстансу. После получения доступа можно начать работу со встроенным SQL-редактором или подключить привычный Postgres-клиент — например, psql или dbeaver. В то же время можно скомпилировать и развернуть проект на локальной машине или в частном облаке — инструкции есть в репозитории.

Плюсы и минусы открытой платформы


Поскольку проекту Neon чуть больше года, разработчики еще не передали в open source все имеющиеся ресурсы. Например, в репозитории отсутствует код панели управления Neon Control Plane для оркестровки узлов Kubernetes. Из-за этого платформа не позволяет автоматически сворачивать неиспользуемые кластеры баз данных — тут понадобится дополнительная настройка. Хотя авторы обещают, что исходники и документация появятся уже в ближайшее время.

Сама по себе бессерверная платформа позволяет не думать об инфраструктуре и выделении дополнительных вычислительных ресурсов. Однако за удобство приходится платить временем обработки запросов: serverless-конфигурации могут работать на 15% медленнее. Хотя в Neon утверждают, что на большинстве нагрузок производительность баз данных сопоставима с классическими решениями — за рядом исключений. В частности, скорость удаления страниц в кэше ограничена пропускной способностью pageserver’а. При большом количестве изменений она превращается в «бутылочное горлышко».

Neon уже позволяет «откатить» коммит и БД до предыдущего состояния. Однако не умеет модифицировать отдельные схемы, так как уровень хранения ничего о них не знает и отделен от уровня вычислений.

Разработчики также экспериментируют с масштабированием ресурсов. Сейчас перед вычислительным узлом установлен кастомный прокси — такая схема позволяет оперативно подменять размер контейнеров, но плохо совместима с «длинными транзакциями».

В целом Neon может стать неплохой заменой привычным бессерверным платформам. Дело в том, что разные сервис-провайдеры реализуют одни и те же функции разными способами. При смене партнера практически наверняка приходится обновлять операционные инструменты. Открытость Neon должна помочь обойти проблему vendor lock-in: при желании развернуть платформу можно на любой инфраструктуре.

Еще несколько полезных инструментов для работы:



Комментарии (2)


  1. ostinru
    30.08.2022 22:08
    +1

    Привет! Пара вопросов по этом "форку" PostgreSQL-я:

    • поддерживает ли он расширения обычного PostgreSQL?

    • поддерживает ли MTS Cloud эту базу данных? (На сайте вообще не нашел managed баз данных)


    1. randall Автор
      31.08.2022 11:40

      Привет! Спасибо за вопросы, уточню у коллег. Что касается DBAAS - сейчас подключение настроено через наш Хаб. Для этого нужно в нем зарегистрироваться. Попасть можно по прямой ссылке: https://hub.cloud.mts.ru/dbaas/