Создание автоматизированной программной системы означало установку нескольких серверов с выделенной конфигурацией ЦП, памяти, хранилища и других ресурсов на многие годы. Далее была сформирована команда администраторов для управления этими системами. Затем команда разработчиков взяла на себя инфраструктуру и начала создавать процессы, соединяющие серверы.

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

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

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

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

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

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

Это пример построения такой архитектуры с использованием только собственных сервисов AWS.

Переход к бессерверному потоку сервисов

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

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

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

Сегменты AWS S3

Источник: aws.amazon.com

Сегменты Amazon S3 — отличный способ хранить файлы или изображения в облаке AWS. Цена хранилища в корзине S3 удивительно низкая. Более того, введение политики жизненного цикла корзины S3 еще больше снижает эту цену.

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

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

Ведро S3 по своей конструкции является бессерверным. Это просто место для хранения ваших данных.

База данных AWS Athena

Источник: aws.amazon.com

Athena упрощает создание озера базовых данных AWS. Это база данных без серверов, которая использует корзину S3 для хранения своих данных. Организация данных поддерживается структурированными форматами файлов, такими как паркет или файлы со значениями, разделенными запятыми (CSV). Корзина S3 содержит файлы, и Athena обращается к ним всякий раз, когда процессы выбирают данные из базы данных.

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

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

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

Athena DB — отличный выбор, который хорошо подходит для вашей цели, если вы хотите создать простой и неизменяемый пул данных, который легко масштабировать по горизонтали с течением времени.

База данных AWS Аврора

Источник: aws.amazon.com

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

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

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

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

  • Чтобы настроить кластер Aurora, используйте консоль AWS. Вам нужно будет указать стандартные уровни ЦП и ОЗУ, а также максимальный интервал функциональности автоматического масштабирования. Это повлияет на производительность, которую кластер Aurora может динамически добавлять или удалять. В зависимости от текущего использования базы данных AWS принимает решение об увеличении или уменьшении масштаба.
  • Кластер Aurora не запустится, пока пользователь или процесс не инициирует реальный запрос. Например, когда начинается запланированная пакетная обработка. Или если приложение выполняет внутренний вызов API для извлечения данных из базы данных. База данных откроется автоматически и будет оставаться активной в течение заданного времени после завершения процессов запроса.
  • Кластер Aurora автоматически отключится, если в базе данных больше не будет работы.

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

Бессерверная Aurora полностью управляется AWS и не требует администратора.

АМС Усиление

Amplify предлагает бессерверную платформу для быстрого развертывания интерфейсных приложений, созданных с помощью библиотек JavaScript и React. Нет необходимости настраивать кластерные серверы. Используйте консоль AWS для непосредственного развертывания кода или используйте автоматизированный конвейер DevOps.

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

Пошаговые функции AWS

Источник: aws.amazon.com

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

Функции AWS Step предоставляют лучшее решение в облаке AWS. Связанный список функций AWS Lambda составляет пошаговую функцию. Эти функции создают блок-схему с четкими начальным и конечным состояниями. Лямбда-функция, обычно написанная на языках Python или Node JS, представляет собой исполняемый фрагмент кода, который обрабатывает все, что необходимо.

Ниже приведен пример того, как вы можете выполнить пошаговую функцию:

  • AWS запускает автоматическую лямбда-функцию всякий раз, когда новый файл попадает в папку S3. После анализа файла лямбда загружает его в Athena. Лямбда сохраняет свои результаты либо в формате CSV в корзине S3 (или в таблице отслеживания базы данных) перед закрытием.
  • Затем этот результат используется следующей лямбдой для выполнения следующих шагов. Это может включать вызов модели машинного обучения и преобразование подмножества новых данных в нормализованные таблицы. Последним шагом может быть загрузка данных в базу данных Aurora.
  • Пошаговая функция связывает эти лямбды вместе, чтобы сформировать пакетный поток. Можно даже выполнить другую пошаговую функцию вместо шага другой корневой пошаговой функции. Таким образом, можно охватить множество сценариев.
  • У этого бессерверного потока есть один существенный недостаток: каждая лямбда-функция может работать не более 15 минут. Следовательно, разделение потока на более мелкие лямбда-функции может сделать это менее проблематичным.

    Можно одновременно вызывать несколько лямбда-функций за один шаг, что в основном означает распараллеливание шага с несколькими лямбда-выражениями, выполняемыми одновременно. Просто дождитесь завершения всей параллельной лямбда-обработки, прежде чем продолжить. Затем перейдите к следующей лямбда-обработке.

    Заключительные слова

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

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

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

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