Бессерверные сервисы на AWS

by moiseevrus

Модель бессерверных вычислений позволяет создавать и запускать приложения и службы, не беспокоясь об инфраструктуре или серверах. Он устраняет такие задачи управления инфраструктурой, как подготовка серверов, установка исправлений, обслуживание операционной системы, масштабирование и выделение емкости. В этой статье блога я хотел бы дать вам обзор некоторых полностью управляемых бессерверных сервисов, предоставляемых Amazon Web Services (AWS), которые можно использовать для создания полностью облачных бессерверных приложений.

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

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

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

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

Обзор бессерверных сервисов AWS

Обзор бессерверных сервисов AWS 

Compute предоставляет среду выполнения кода вашего приложения.

С AWS Lambda, вы можете выполнять код как функцию, запускаемую различными источниками событий, такими как, например, HTTP-запросы на AWS API Gateway, обновления файлов на S3 или метрические оповещения в AWS Cloudwatch. Lambda — это решение FaaS от AWS, где вы можете запускать код для любого типа приложения или серверной службы. Он запускает код в полностью управляемой высокодоступной инфраструктуре и выполняет все задачи администрирования вычислительных ресурсов, включая обслуживание серверов и систем, выделение ресурсов и автоматическое масштабирование, мониторинг кода и ведение журналов. Вы платите только за время вычислений, фактически потребляемое вашим приложением. Lambda можно комбинировать со многими другими сервисами AWS и использовать во многих сценариях, таких как авторизация HTTP-запроса путем проверки веб-токена JSON, фильтрация и преобразование потоковых данных в реальном времени, обработка данных в S3, управление обработкой базы данных и т. д.

С помощью AWS Fargate вы можете запускать контейнеры Docker без какого-либо управления серверами или кластерами. Это решение для оркестрации контейнеров, упрощающее развертывание, управление и масштабирование контейнерных приложений. Вам не нужно определять типы инстансов EC2, управлять планированием кластера, оптимизировать использование серверов или определять метрики наблюдения за облаком для масштабирования инстансов. Fargate управляет инфраструктурой, необходимой для обеспечения высокой доступности ваших контейнеров. Чтобы запустить приложение, вам необходимо упаковать контейнеры, указать требования к ЦП и памяти, а также определить сетевые и IAM-политики.

Обмен сообщениями

AWS Simple Notification Service (SNS) — это полностью управляемая служба обмена сообщениями для публикации и подписки, которая позволяет разделить микросервисы, распределенные системы и бессерверные приложения.

Вы можете отправлять уведомления между различными службами, приложениями, устройствами и платформами по нескольким транспортным протоколам. SNS позволяет публиковать сообщения из одного приложения большому количеству подписчиков для параллельной обработки. Помимо push-уведомлений на мобильные устройства, вы можете доставлять уведомления по электронной почте, SMS, SQS, Lambda или на любую конечную точку HTTP.

Amazon Simple Queue Service (SQS) — это полностью управляемая распределенная служба очередей сообщений, которая позволяет разделить и масштабировать распределенные системы с микросервисами и бессерверные приложения. Вы можете отправлять, получать и кэшировать сообщения между программными компонентами для решения проблем, связанных с проблемой производитель-потребитель . SQS предлагает два типа очередей сообщений: стандартные очереди имеют максимальную пропускную способность, упорядочение с наилучшими усилиями и доставку хотя бы один раз. Кроме того, вы можете использовать очереди FIFO, которые гарантируют однократную доставку сообщений в строгом порядке.

Интеграция

Amazon API Gateway — это полностью управляемый сервис для создания, публикации, обслуживания, мониторинга и защиты API REST и WebSocket любого масштаба. Он обрабатывает до сотен тысяч одновременных вызовов API, включая управление трафиком, авторизацию, контроль доступа и управление версиями API. Вы можете создать свой API в пользовательском интерфейсе консоли управления и получить доступ к данным, бизнес-логике или функциям из ваших серверных служб, таких как рабочие нагрузки, выполняемые в EC2, или код, выполняемый в функции Lambda. Вы платите только за полученные вызовы API и за объем исходящих данных, переданных AWS.

С помощью AWS Step Functions вы можете организовать компоненты своего приложения в виде последовательности шагов для создания сложных бессерверных рабочих процессов с использованием функций Lambda. Рабочий процесс моделируется как диаграмма конечного автомата, где каждое состояние представляет компонент приложения. Используя графическое средство просмотра, вы можете визуализировать эти компоненты и проверить ход выполнения в режиме реального времени. Все шаги автоматически запускаются, отслеживаются и повторяются в случае ошибок, чтобы приложение выполнялось по порядку и в соответствии с ожиданиями.

Безопасность

Амазон Когнито— это полностью управляемая, масштабируемая и экономичная служба регистрации/входа, которая обеспечивает аутентификацию пользователей, авторизацию и управление веб-приложениями и мобильными приложениями. Двумя основными компонентами Amazon Cognito являются пулы пользователей и пулы удостоверений. Пул пользователей — это каталог пользователей, который предоставляет службы регистрации и входа на основе собственного или внешнего поставщика удостоверений, реализующего протокол SAML, OAuth2 или OpenID Connect, например Facebook или Google. Вы можете использовать настраиваемый веб-интерфейс для входа пользователя, который можно интегрировать в существующую веб-страницу. С помощью пула удостоверений ваш авторизованный пользователь или анонимный гость может обменять токены пула пользователей на временные учетные данные AWS для доступа к ресурсам AWS. На основе политик ролей IAM вы можете предоставить своим пользователям или группам детальный доступ к вашим ресурсам или сервисам AWS.

Служба управления ключами AWS (KMS)— это полностью управляемый сервис, который позволяет создавать ключи безопасности и управлять ими, а также контролировать использование шифрования в широком спектре сервисов AWS и в ваших приложениях. KMS интегрирован со многими сервисами AWS, чтобы упростить обработку шифрования в вашем приложении. Это позволяет разработчикам легко добавлять в приложение функции шифрования либо напрямую через сервисные API, либо с помощью AWS Encryption SDK. Главные ключи клиента (CMK) используются для управления доступом к ключам шифрования данных, которые шифруют и расшифровывают данные. Вы можете предоставлять и управлять своим собственным CMK, включая собственный криптографический материал, или использовать CMK, предоставляемый и управляемый AWS. С помощью AWS CloudHSM вы можете дополнительно использовать облачный аппаратный модуль безопасности (HSM), который позволяет легко создавать и использовать собственные ключи шифрования в облаке AWS. Ключи шифрования, которые вы создаете и используете с CloudHSM, доступны только указанным вами пользователям HSM. AWS не видит и не имеет доступа к вашим ключам шифрования.

Мониторинг

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

AWS Quicksight — это полностью управляемый сервис бизнес-аналитики, который позволяет визуализировать данные и создавать интерактивные информационные панели для анализа приложений. Доступ к этим панелям можно получить с любого мобильного устройства или браузера. Вы можете встраивать их в свои приложения, порталы или веб-сайты, предоставляя вам мощную аналитику самообслуживания. QuickSight позволяет подключаться и импортировать данные из самых разных облачных или локальных источников данных и масштабируется до десятков тысяч пользователей без какой-либо инфраструктуры для управления.

База данных

Amazon DynamoDB  — это служба базы данных NoSQL, которая поддерживает пары «ключ-значение» и структуры данных документов. Поскольку это полностью управляемая служба, вам не нужно беспокоиться о предоставлении оборудования, установке и настройке, репликации, резервном копировании, установке исправлений программного обеспечения или масштабировании кластера. Он обеспечивает такие функции, как высокая доступность и надежность, автоматическое и неограниченное масштабирование ввода-вывода для чтения и записи, резервное копирование по требованию с восстановлением на определенный момент времени, шифрование в состоянии покоя и задержка в несколько миллисекунд. Благодаря модели ценообразования с оплатой по мере использования и интеграции со многими другими сервисами AWS DynamoDB является отличным сервисом баз данных для многих бессерверных приложений на AWS.

Amazon Aurora — это полностью управляемый механизм реляционной базы данных, совместимый с MySQL и PostgreSQL. Он автоматизирует и стандартизирует кластеризацию и репликацию базы данных, избавляя от трудоемких административных задач, таких как подготовка оборудования, автоматическое масштабирование хранилища, настройка базы данных, установка исправлений и резервное копирование. Aurora также доступна в виде конфигурации по требованию, называемой Aurora Serverless , с автоматическим масштабированием вычислительной мощности, что является экономически эффективным способом поддержки нечастых и непредсказуемых рабочих нагрузок.

Аналитика

Amazon Kinesis — это полностью управляемый и масштабируемый потоковый сервис для сбора, обработки и анализа потоковых данных в режиме реального времени, таких как потоки посещений веб-сайтов, потоки событий базы данных, финансовые транзакции, каналы социальных сетей, журналы приложений, данные телеметрии IoT или события отслеживания местоположения. Он позволяет обрабатывать и анализировать данные по мере их поступления и мгновенно реагировать, что позволяет создавать приложения, работающие в режиме реального времени. Amazon Kinesis состоит из 3 сервисов, которые можно использовать для обработки потоковых данных. С потоками данных Amazon Kinesis, вы можете принимать и хранить большие потоки данных в режиме реального времени, не управляя инфраструктурой, хранилищем, сетью и конфигурацией. Приложения могут получать данные из потока, поэтому несколько действий, таких как анализ данных, архивирование или обработка, могут выполняться одновременно и независимо. Amazon Kinesis Data Firehose можно использовать для загрузки потоковых данных в озера данных (Amazon Redshift), хранилища данных (S3) и инструменты аналитики (Amazon Elasticsearch). Он позволяет захватывать, преобразовывать и загружать (ETL) потоковые данные в режиме реального времени из множества источников данных одновременно и автоматически отправлять их в указанное место назначения. С помощью Amazon Kinesis Data AnalyticsВ Amazon Kinesis Data Analytics вы можете фильтровать, агрегировать и преобразовывать потоковые данные для расширенной аналитики. Вы можете запускать стандартные SQL-запросы к потоковым данным, чтобы выполнять анализ временных рядов, предоставлять данные на информационные панели в реальном времени и извлекать метрики.

Amazon Athena — это сервис запросов, который предоставляет стандартный язык SQL для анализа крупномасштабных наборов данных в AWS Simple Storage Service (S3). Нет инфраструктуры для управления, и вы платите только за выполненные запросы. Athena автоматически масштабируется за счет параллельного выполнения запросов. Это упрощает выполнение специального анализа или более сложного анализа, содержащего большие соединения.

Вывод

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

Статья является переводом blogs.itemis.com

You may also like

Leave a Comment