Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Об оптимизации работы с PostgreSQL уже много рассказывали (в этом году, среди прочего, запустили DBaaS PostgreSQL). Однако тема далеко не исчерпана. Подготовили для вас обзор нового инструмента, который поможет работать с базами данных PostgreSQL, не задумываясь о базовой серверной инфраструктуре.
Бессерверные вычисления приобрели популярность в 2010-х и с тех пор остаются актуальными. В отличие от выделенных серверов, бессерверные модули запускаются при необходимости для каждого события. Технология позволяет не резервировать вычислительные ресурсы заранее и экономить.
Рынок бессерверной архитектуры
Недавно аналитики компании Verified Market Research опубликовали следующие данные: к 2028 году объем serverless-рынка превысит 36 млрд долларов. Хотя отдельных данных по российскому сегменту нет, для нашей страны актуален вопрос замещения сервисов бессерверных вычислений. Один из вариантов — open source платформы, которые можно развернуть самостоятельно. Среди таких решений — OpenLambda, OpenFaaS, Apache OpenWhisk или Kubeless.
Правда, с ними не всегда удобно работать: многие решения обладают очень широкой функциональностью, избыточной в рамках небольшого домашнего или тестового корпоративного проекта. А некоторые из открытых платформ, в частности Kubeless, более не поддерживаются разработчиками.
Но недавно группа инженеров представила бессерверную платформу для работы с базами данных PostgreSQL — Neon. Изначально проект назывался Zenith, но прямо перед запуском разработчики решили изменить название. Что интересно, в комментариях к коду все еще можно встретить упоминания оригинального имени, но, по словам авторов, они их постепенно меняют.
Как работает Neon
Уровень хранения данных в 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: при желании развернуть платформу можно на любой инфраструктуре.
Еще несколько полезных инструментов для работы:
- Как ускорить выполнение запросов PostgreSQL в 100 раз
- Облачные сети: что предлагает изолированный VPN
- Падение Звезды Смерти: почему сканирование шаблонов IaC так важно
- Как провайдер помогает выстроить комплексную защиту от киберугроз