DBaaS - облачные базы данных (БД) как сервис, управляемые платформы и СУБД

DBaaS: что такое облачные базы данных

Рассказываем о сервисе управляемых баз данных в облаке и объясняем, как разделяется ответственность за работу кластеров БД между провайдером и клиентом.

Изображение записи

Рассказываем о сервисе управляемых баз данных в облаке и объясняем, как разделяется ответственность за работу кластеров БД между провайдером и клиентом.

Что такое база данных?

База данных (БД) — это набор данных, которые хранятся согласно заданной схеме. Для работы с данными используется специализированное программное обеспечение — система  управления базами данных (СУБД).

База данных является неотъемлемой частью современных приложений. При создании приложения необходимо выбрать подходящую СУБД и способ развертывания. Благодаря облачным технологиям базу данных можно развернуть нажатием одной кнопки.

Существует два способа развертывания СУБД:

  • традиционный,
  • в облаке.

Традиционный способ давно известен. База данных разворачивается на отдельном сервере силами специалистов компании — на собственной или арендованной инфраструктуре, в облаке или на выделенных серверах.

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

  • поддержкой инфраструктуры,
  • обеспечением отказоустойчивости,
  • резервным копированием,
  • оптимизацией работы кластеров,
  • масштабированием БД, когда «аппетиты» приложения вырастут.

Это требует выделенного сотрудника, а иногда и целого отдела, если баз данных много. 

Использование облачной базы данных позволяет делегировать большинство из перечисленных задач провайдеру инфраструктуры. Такой подход называется Database as a Service (DBaaS) — базы данных как сервис или управляемые базы данных (managed databases). Проще говоря, в рамках DBaas вы получаете базу данных «под ключ».

Особенности DBaaS — баз данных в облаке

Облачная база данных во многом похожа на облачные серверы. Рассмотрим подробнее.

Администрирование БД как сервис

Провайдер инфраструктуры выполняет все задачи, связанные с развертыванием, настройкой и администрированием кластеров баз данных. Иными словами, клиенту не нужно думать о том, какой сервер покупать, как установить на него нужную БД, настроить резервное копирование для восстановления в случае аварии и собрать отказоустойчивый кластер. Все это делается автоматически.

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

Развертывание БД по нажатию кнопки подходит для команд, у которых недостаточно опыта в самостоятельном администрировании баз данных — например, для программистов, которым необходимо окружение для разработки.

Услуга DBaaS будет полезна и тем, кто умеет «готовить» базы данных. Это избавит инженеров от лишней рутины и позволит сосредоточиться на развитии продукта. Так как это полностью управляемые базы данных, пользователи могут сконфигурировать кластер под потребности приложения — например, можно изменить настройки кластера как при его создании, так и в ходе работы.

Использование DBaaS для разработки и тестирования понятно: утром создал кластер — вечером удалил. В продуктовых окружениях, когда база данных обеспечивает работу приложения, пересоздание БД невозможно, а потребности в ресурсах растут вместе с задачами компании. Поэтому база данных должна иметь возможность масштабироваться.

Масштабируемость управляемых баз данных

Облачные продукты отличаются возможностью легкого масштабирования, и облачные базы данных — не исключение. В случае роста потребления вычислительных ресурсов или хранилища их можно быстро добавить.

Это можно сделать двумя способами:

  • изменением конфигурации виртуальных машин кластера (вертикальное масштабирование),
  • добавлением новых нод кластера для увеличения производительности БД на чтение (горизонтальное масштабирование).

Хотя облачные технологии значительно упрощают жизнь, они не всесильны. Так, операция уменьшения хранилища недоступна: изменение объема дискового пространства в меньшую сторону может «испортить» данные.

Подробнее о том, как масштабировать кластер →

Отказоустойчивость кластера и резервное копирование

В облачных базах данных есть опция аварийного переключения на резервную ноду. Если мастер-нода выйдет из строя, ее заменит реплика, которая поменяет роль на мастера, — приложение продолжит работать без сбоев. Бывший мастер пересоздастся и вернется в кластер в виде реплики. Чтобы кластер был отказоустойчивым, нужно создать его с несколькими нодами (репликами).

Еще один аргумент в пользу бесперебойной работы DBaaS — автоматическое резервное копирование. Раз в неделю делается полное резервное копирование кластера. Раз в день создается инкрементальный бэкап, который содержит все изменения с момента последней копии. Также каждые 10 минут (или при накоплении определенного объема изменений) создаются WAL-файлы (binlog-файлы — для MySQL). Последние позволяют восстанавливать базу в режиме Point-in-Time Recovery (восстановление в конкретную точку времени) и максимально обезопасить себя от потери данных. Резервные копии хранятся семь дней, то есть кластер можно восстановить в любую точку времени этого периода.

Какие бывают СУБД?

Систем управления базами данных, которые предлагает рынок, достаточно много. Помимо самых известных MySQL, PostgreSQL, Redis, которые есть в облачных базах данных Selectel, есть MS SQL, Oracle, Greenplum, ClickHouse, Vertica, Tarantool и другие. Компании используют ту или иную СУБД в зависимости от задач и компетенций специалистов. Например, ClickHouse и Greenplum чаще всего можно встретить в системах обработки данных. Именно эти БД входят в состав платформы обработки данных Selectel. А вот та же PostgreSQL может использоваться для самых разных задач.

Сделаем обзор самых популярных СУБД, которые используются в большинстве известных миру приложений.

MySQL

MySQL — широкоизвестная транзакционная реляционная СУБД с открытым исходным кодом и большим сообществом. Данная СУБД распространяется в некоторых комплексных решениях для веб-технологий — например, LAMP (Linux, Apache HTTP Server, MySQL, PHP).

MySQL отлично подходит для простых приложений, которые не предъявляют к базе данных специфичных требований — например, для CMS (Content Management System, система управления контентом).

PostgreSQL

Эта СУБД — известный конкурент и ровесник MySQL среди транзакционных реляционных баз данных. PostgreSQL всегда отличалась повышенной сложностью и, как следствие, меньшим сообществом. Тем не менее, это отличный инструмент для хранения и анализа сложных структур БД.

Например, PostgreSQL способен извлекать JSON-данные в колонке и использовать их в запросе. Кроме того, плагин PostGIS позволяет обрабатывать картографические данные, что позволяет хранить в БД геоданные.

СУБД PostgreSQL подходит для работы c «1С: Предприятие». В Selectel доступны специальные версии PostgreSQL, которые позволяют использовать их как основную базу данных для 1С. Это хорошая альтернатива серверу MS SQL (продукт Microsoft). 

Redis

Redis — это нереляционная (NoSQL) база данных для хранения структур в виде ассоциативного списка (ключ-значение). Данная СУБД хранит все данные в оперативной памяти (In-Memory Storage), что обеспечивает высокую скорость доступа к данным. Нередко Redis используется в качестве кэша для приложения.

Redis позволяет хранить несколько значений по одному ключу, выстроенных в порядке FIFO (First In, First Out). Таким образом, Redis превращается в брокер сообщений.

Зоны ответственности провайдера Database as a service и клиентов

Облачные базы данных — это managed-сервис. Это значит, что часть ответственности за работу баз данных берет на себя провайдер услуги. В этом одно из важных преимуществ DBaaS. Однако важно понимать, что это не полный аутсорс задач: клиент все еще ответственен за работу самой БД и его действия могут стать причиной ее некорректной работы.

Рассмотрим, что берет на себя провайдер, а что находится в ведомстве клиента. Чаще всего второе касается внутренностей работы баз данных, так как у провайдера нет доступа к данным клиента и логике построения БД.

С ответственностью провайдера все достаточно просто. В нее входят:

  • предоставление инфраструктуры и ее настройка,
  • отказоустойчивость инфраструктуры кластера (работа 24/7),
  • автоматическое развертывание кластера БД и его первоначальная настройка,
  • корректное создание кластера,
  • доступность ресурсов для масштабирования,
  • создание автоматических резервных копий, что обеспечит быстрое восстановление работающих баз данных,
  • техническая поддержка,
  • быстрое реагирование на аварии инфраструктуры,
  • аварийное переключение в случае выхода из строя сервера либо потери сетевой связности между нодами кластера,
  • предоставление инструментов мониторинга.

Ответственность клиента рассмотрим подробнее.

Инициация масштабирования

При росте нагрузки клиенту нужно самостоятельно добавить нужное количество реплик или вычислительной мощности. Делается это нажатием нескольких кнопок в панели управления. Такое «ручное» масштабирование необходимо для контроля стоимости владения базами данных. Иногда дешевле оптимизировать существующую базу, чем добавлять новые ноды и ресурсы в DBaaS. Это решение остается за клиентом.

Следить за достаточностью ресурсов в кластере очень важно. Если место на диске закончится, кластер БД перейдет в режим read-only (только чтение). Поэтому клиенту стоит следить за утилизацией дискового пространства и предусмотреть достаточное свободное место «на вырост». С первым помогут инструменты мониторинга в панели управления или метрики в формате Prometheus. Также Selectel присылает уведомления в тикетах при риске заполнения диска.

Запросы и их оптимальность

Базы данных могут работать медленнее, если будут использоваться неоптимальные запросы. Например, ваше приложение может использовать технологию ORM (Object-Relational Mapping), через которую отправляются запросы к базам данным. Часто с ростом нагрузки такие запросы будут создавать дополнительные издержки и влиять на производительность базы данных. Поэтому в высоконагруженных БД такие запросы чаще переписывают/оптимизируют вручную — силами собственных инженеров или DBA (database administrator) на аутсорсе.

В управляемых базах данных провайдер не может контролировать SQL-запросы, которые использует приложение клиента. Поэтому «торможение» систем — далеко не всегда вина поставщика DBaaS. Неоптимальные запросы можно обнаружить с помощью встроенного в облачные базы данных мониторинга. Также на такие запросы могут указать сотрудники техподдержки провайдера, но для этого нужно инициировать дополнительное «расследование» в тикетах.

Кастомные настройки кластера кластера управляемой БД

При создании кластера баз данных все настройки по умолчанию подобраны для оптимальной работы БД, в зависимости от конфигурации кластера. Они оптимальны для высокой производительности кластера. Если дефолтные значения не подходят, можно установить свои значения при создании кластера либо изменить настройки в уже созданном. Неправильно подобранные настройки могут снизить производительность кластера, поэтому стоит менять настройки только в том случае, если вы точно знаете, зачем это нужно.

Архитектура базы данных

Архитектура БД — это комплекс структурных компонентов базы данных, а также средств, обеспечивающих их взаимодействие как друг с другом, так и с конечным пользователем. Условно говоря, это про то, как данные работают между собой и с другими системами приложения. Все это — вотчина клиента, поскольку только ему известна логика работы баз данных для достижения задач бизнеса.

Архитектурные проблемы также могут влиять на производительность работы БД. Если в компании нет компетенций для разработки эффективной архитектуры, можно взять специалиста на аутсорсе или уточнить, есть ли соответствующие услуги у провайдера DBaaS.

Корректное подключение

Наконец, к базе данных нужно правильно подключиться. Для этого можно обратиться к базе знаний провайдера. Как правило, там достаточно подробно описываются шаги. В Selectel эта информация доступна по ссылкам: для PostgreSQL, PostgreSQL для 1С, TimescaleDB, MySQL sync, MySQL semi-sync, Redis и Kafka.

Важно помнить, что провайдер не отвечает за стабильную работу кластера, если запросы и подключение к базе данных приводят к заполнению пула соединений с базой и взаимоблокировке (deadlock). Все это может привести к некорректной работе кластера. 

Пример создания проекта с DBaaS в облачной платформе Selectel

Создание проекта

Начнем обзор DBaaS c создания проекта. Если у вас уже есть проект, доступный в облаке Selectel, этот пункт можно пропустить. На вкладке Облачная платформа вас встретит кнопка Создать проект.

Создание проекта

Задайте имя проекта и нажмите Создать проект. В течение пары минут будет создан облачный проект, в котором можно будет создать базу данных.

Создание кластера облачной базы данных Selectel

В боковом меню проекта выберите Базы данных.

Создаем кластер

Выберите подходящий регион и соответствующую зону доступности для обеспечения связности ваших облачных серверов и базы данных. Если у вас нет облачных серверов, то можно выбрать географически ближайший регион. Если вам нужно связать облачную базу данных с выделенным сервером в Selectel или с собственной инфраструктурой на другой площадке, воспользуйтесь услугой L3 VPN.

После выбора региона нажмите Создать кластер.

Выбор СУБД

После нажатия кнопки откроется расширенное меню конфигурации кластера. На данный момент доступны следующие СУБД.

  • PostgreSQL — с 10 по 14 версии ,
  • PostgreSQL для 1С — с 10 по 14 версии,
  • TimescaleDB — база данных для хранения временных рядов,
  • MySQL 5.7 и 8,
  • MySQL semi-synk,
  • Redis 6,
  • Kafka 3.5.

Так как СУБД запускается на виртуальном сервере, можно выбрать одну из готовых конфигураций или определить собственную.

Настройка отказоустойчивости кластера и сети

Далее следуют параметры отказоустойчивости и сетевой доступности кластера. Реплики создавать не обязательно. Например, при развертывании окружения для разработчика отказоустойчивость базы данных может быть избыточна.

Настройка резервного копирования базы данных

В зависимости от выбранной СУБД на странице могут появиться специфические настройки. Например, для PostgreSQL можно переопределить некоторые параметры в файле конфигурации. Также в БД настроено ежедневное резервное копирование.

После определения всех необходимых параметров можно создать кластер. Спустя несколько минут кластер будет создан.

Подключение к кластеру БД

Карточка кластера

Облачная база данных не отличается от локальной, разве что доступна в интернете. На странице кластера доступен список адресов для мастер-узла и реплик.

Что мы узнали о DBaaS в облаке

Итак, мы рассмотрели особенности DBaaS. Облачные базы данных — удобный инструмент для всех, кто работает с БД в своих сервисах. Это возможность не тратить время на настройку кластеров, не думать об инфраструктуре и масштабируемости системы.

Однако важно понимать, что провайдер не может брать на себя ответственность за все, что происходит внутри кластеров. У провайдера DBaaS нет и не может быть доступа к клиентским данным. Поэтому о ряде вещей, в числе которых схема баз данных, оптимальность запросов, кастомные настройки, должен подумать клиент.