Все, что нужно знать о вариантах хранения в облаке

В предыдущей статье мы рассмотрели три доступных варианта хранения данных на AWS: Instance Store, EBS и EFS. Это надежные и мощные сервисы, но не единственные. AWS предлагает еще несколько широко используемых сервисов для хранения данных. Мы доработаем комплексные варианты хранения на облачной платформе от Amazon.

Простой сервис хранения

Одним из компонентов AWS, которые были в начальном релизе, является Simple Storage Service или всем известный S3. Это объектное хранилище в облаке. Он хранит данные в корзинах — виртуальном контейнере. Объекты в каждом сегменте имеют имя, которое определяет путь к объекту. И имена бакетов, и объектов представляют собой URL-адрес для доступа к объекту. Например, если файл является общедоступным, мы можем получить к нему доступ через https://bucket-name/object-name.

S3 действительно «простой» сервис и выглядит простым. Мы можем загружать в него файлы в консоли AWS с помощью интерфейса перетаскивания или через интерфейс командной строки. И тогда файлы становятся доступными для остального мира или для ограниченной аудитории.

Но в чем реальная польза от использования S3? Что выделяет его среди других сервисов?

Во-первых, это самый дешевый вариант хранения среди остальных на AWS. Цена состоит из двух частей: хранение данных и извлечение данных. Цены зависят от класса хранения. S3 имеет разные классы хранения в зависимости от шаблонов доступа к данным. Для данных частого доступа мы получаем повышенную производительность, но немного более высокую цену. Когда нам нужно сохранить архив, который редко используется, мы можем выбрать самый дешевый вариант, такой как S3 Glacier. Кроме того, есть возможность определить правила жизненного цикла для файлов в корзинах. Например, через некоторое время объект автоматически перемещается из одного класса хранения в другой или удаляется. Этот вариант обеспечивает еще большую оптимизацию затрат.

Следующей интересной особенностью является интеграция с другими сервисами. Очевидно, что многие сервисы должны взаимодействовать друг с другом в экосистеме Amazon. Тем не менее, не каждый из них так хорошо интегрирован, как S3. У него есть SDK, который позволяет взаимодействовать с ним из приложений и компонентов AWS. Мы можем получить доступ к S3 из EC2 или из функции Lambda. Он имеет интеграцию с уведомлениями, логированием, аналитикой и другими сервисами. S3 хорошо дополняет многие из них.

Наконец, S3 — это отказоустойчивый, безопасный и совместимый с данными сервис, который гарантирует высокую доступность и производительность. Он предоставляет множество функций для защиты контента. Вот некоторые из них: предварительно подписанные URL-адреса, детализированные разрешения на доступ к файлам через политику корзины, общий доступ к корзине. Благодаря управлению версиями файлов можно отслеживать изменения каждого файла, а функция блокировки объектов предотвращает удаление файлов. Это делает сервис S3 признанным сторонними поставщиками соответствующими требованиям.

Кроме того, у S3 есть много других функций, о которых можно рассказать в отдельной статье.



Служба реляционной базы данных

Мы уже знаем, как хранить файлы на AWS. Когда дело доходит до структурированных данных, то выбор приходится на базы данных. Это тот случай, когда данные представлены в виде таблиц и с ними нужно интенсивно работать: извлекать или обновлять.

В наши дни базы данных могут быть либо реляционными базами данных (SQL), либо базами данных ключ-значение (NoSQL). Каждый из них имеет свои преимущества и недостатки. Как разработчик, вы должны сделать выбор, чтобы выбрать подходящую базу данных для ваших нужд. У AWS есть сервисы для работы с обеими базами данных, предлагающие отличительный набор функций.

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

Нам нужно хранить базу данных отдельно от сервера или, по крайней мере, иметь актуальную резервную копию. Когда сервер не отвечает или выходит из строя, мы теряем доступ к базе данных. Аналогично и в облачной среде. Если у нас есть база данных на экземпляре EC2, то при завершении работы экземпляра EC2 мы теряем базу данных.

AWS разработала специальный сервис для реляционных баз данных. Это позволяет иметь базу данных в безопасной, изолированной среде. Другие сервисы, такие как EC2 или Lambda, могут устанавливать соединение с базой данных и выполнять операции с данными.

AWS RDS поддерживает самые популярные на сегодняшний день механизмы баз данных: PostgreSQL, MySQL, Microsoft SQL Server, Oracle. Кроме того, AWS предлагает Amazon Aurora — собственный проприетарный движок базы данных, совместимый с MySQL и PostgreSQL. Независимо от того, какой механизм базы данных вы выберете, набор функций вас порадует.

Наиболее интересны:

  • Реплика чтения: выделенные экземпляры только для чтения, синхронизированные с ведущим узлом базы данных. Основная цель — распределить нагрузку, так как большинство запросов обычно «SELECT». Это становится очень удобным, когда нам нужно создать некоторые аналитические отчеты из базы данных.
  • Автоматическое резервное копирование: автономная операция создания моментального снимка базы данных по расписанию. Таким образом, мы можем восстановить наши данные из резервной копии в случае аварии с минимальной потерей данных. Кроме того, пользователь может в любое время инициировать создание моментального снимка вручную.
  • Автомасштабирование: чтобы выделить больше физического пространства, когда это необходимо. С этой функциональностью у нас никогда не будет нехватки места.
  • Развертывание в нескольких зонах доступности: для повышения доступности базы данных. При каждой операции записи данные будут синхронизироваться с резервной базой данных в другой зоне доступности. В случае выхода из строя основной базы данных запросы будут автоматически перенаправлены в резервную базу данных.

RDS следует модели общей ответственности. Что это значит для нас? AWS позаботится об обновлениях системы, установке исправлений ОС и обслуживании. Гарантируется, что сервис останется надежным и отказоустойчивым. С другой стороны, разработчики несут ответственность за конфигурации, связанные с безопасностью и доступностью службы. Мы должны убедиться, что база данных не имеет общего доступа, а пользователям назначены правильные роли доступа. Такой подход позволяет нам получить максимальную отдачу от этой услуги.

Ценообразование для RDS продумано. С клиентов взимается плата только за то, что они использовали. Это делает сервис привлекательным, так как сложно представить любое современное корпоративное решение без базы данных.

Заключение

Эффективное управление данными — важнейший навык для каждого разработчика, работающего с любым бизнесом. Приложение должно где-то хранить данные и иметь возможность быстро их извлекать. При этом должен соблюдаться баланс стоимости и производительности. Решение о подходящем облачном хранилище может легко привести компанию к успеху или провалу. Имейте в виду все доступные варианты и счастливого кодирования!