VK Cloud

Модуль 3

Хранение и анализ данных с использованием облачных сервисов

Тема 3

Как сделать базу данных ещё надежнее

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

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

  • что-то случилось с инфраструктурой, на которой была развернута база. Данные недоступны какое-то время, а в самых худших случаях потеряны;
  • злоумышленник получил доступ к данным;
  • используется база данных без обеспечения транзакционности для сохранения важной информации. Доверие к данным теряется: теперь сложно понять, корректна ли записанная информация.

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

Высокая доступность

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

  • Использовать реплики, а для критичных систем — синхронные реплики. Они позволят продолжить работу с минимальным простоем в случае проблем с мастером.
  • Использовать инструменты для мониторинга и алертинга. В облаке это Cloud Alerting, Cloud Monitoring, Cloud Logging. Так вы сможете отследить возросшую нагрузку и критический объем занятости диска. Хорошая практика — расширять диск уже при 70–80% занятости диска. Кстати, сделать это можно с помощью автомасштабирования — когда объем автоматически увеличивается при достижении определенного порога.
  • Использовать среды для разработки и тестирования. В облаке легко создать еще один экземпляр базы данных, на котором вы предварительно сможете протестировать новую настройку или обновление.
  • Регулярно создавать бэкапы. Делать их нужно регулярно. В облаке расписание с указанием глубины хранения бэкапов автоматизировано и занимает несколько минут. А сами бэкапы надежно хранятся в объектном хранилище в нескольких копиях.

Комплексная безопасность

Безопасность — это комплекс мер и средств на разных уровнях: от настройки ролей в базе данных до защищенности сервера и файлов.

Вот минимальные шаги по обеспечению защищенности баз данных:

  • Тщательная настройка ролей пользователей в базе данных по принципу минимального доступа. Пользователи должны иметь доступ только к объектам и функциональности, которые обоснованно им необходимы.
  • Настройка сетевых доступов. Сначала нужно запретить вообще все соединения, а потом пробить «дыры» до нужных ресурсов по IP и протоколу.
  • Отсутствие внешних, белых IP-адресов. Доступ для приложений по серым адресам, доступ для администраторов — только из внутренней сети с VPN.
  • Контроль расширений. Иногда базовой функциональности не хватает и требуются различные расширения. Устанавливать нужно только те, что проверены и протестированы.
  • Минимальные доступы в личном кабинете облака. Из личного кабинета можно сделать некоторые операции с привилегиями администратора. Поэтому доступ туда нужно давать только по обоснованной необходимости
  • Двухфакторная аутентификация. Безопасность личного кабинета возрастает на порядок, пароль — это недостаточное средство защиты критически важных инструментов.

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

Надежность

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

  • Каждая база — под свою задачу. Если вам нужно записывать критически важную информацию, нужно использовать транзакционную базу данных, которая поддерживает принципы ACID.
  • Корректная настройка транзакционности базы данных. Нужно настроить уровни изоляции в соответствии с требованиями вашей компании. Может немного пострадать производительность, но зато данным можно будет доверять.
  • Покрытие тестами. Искажение информации может быть и на уровне приложения. Поэтому очень важно покрыть тестами весь путь данных: обработка в приложении, сохранение в базе, считывание из базы, отображение пользователю.

Обзор инструментов безопасности

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

Бэкап баз данных

Творческое задание

github_cover (1).svg

В завершение этого модуля мы предлагаем выполнить творческое задание.