Сопоставление облаков: инструменты бессерверной разработки

от автора

Привет, я Александр Радаев, аналитик компании proCATT. В последнее время занимался вопросами переезда клиентов в облака. И постоянно сталкивался с тем, что постоянно приходилось сопоставлять сервисы различных облачных провайдеров друг с другом.

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

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

В России три облака, в которых поддерживаются облачные функции: Yandex Cloud, SberCloud и Selectel. Так как наиболее частое применение сопоставления – это переезд из иностранного облака в отечественное, я добавил в таблицу три самых популярных иностранных облака.

Сразу признаюсь, что ограничил сопоставление бессерверными вычислениями не случайно, так значительно сокращается объем сравнения. Например, российских облачных операторов, предлагающих просто Managed Kubernetes, уже как минимум 8. Если хабр-сообществу зайдет сама идея сопоставления облаков – сделаю еще. Вообще, есть идея собрать базовый набор сервисов, нужных для развертывания нормального DevOps, и сопоставить с сервисами в различных российских облаках. Если считаете, что нужно – дайте знать в комментариях.

Для Serverless разработки я определил минимальный набор сервисов таким образом: в облаке надо хостить сайт (+DNS, сертификаты), хранить и доставлять статический контент (Объектное хранилище, CDN), организовать хранение и обработку данных в СУБД, обеспечить интеграцию приложений, а также мониторить работоспособность. Суммарно вышло 12 сервисов. Таблицы приведены ниже, для удобства разделил на две: по российским и зарубежным облакам. Общая же таблица в редактируемом формате доступна по ссылке.

Вычисления

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

Статический сайт и контент

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

Сопоставление сервисов иностранных облаков

Google

Amazon

Azure

Вычисления

Cloud Functions

AWS Lambda

Azure Functions Serverless Compute

Хранение файлов

Cloud Storage

AWS Simple Storage Service (S3)

Azure Blob Storage

Serverless DB

Firebase Realtime Database (NoSQL)

AWS DynamoDB (NoSQL),
AWS Aurora Serverless (SQL)

Azure Cosmos DB (NoSQL)

Хостинг сайта

Firebase Hosting

AWS Simple Storage Service (S3)

GitHub Pages, Static Web Apps

Управление доменами

Cloud DNS

Route 53

Azure DNS

Управление сертификатами

Cloud Load Balancing, App Engine, Cloud Run

AWS Certificate Manager

Azure Key Vault

Бессерверная шина событий

Eventarc

AWS EventBridge

Azure Event Grid

Оркестрация потока

Workflows

AWS Step Functions

Azure Logic Apps

Службы обмена сообщениями

Cloud Pub/Sub

Amazon Kinesis Data Streams, Amazon Simple Notification Service (SNS),
Simple Queue Service (SQS)

Azure Event Hubs, Azure Service Bus, Azure Queue Storage

Мониторинг

Clouds Operation Suite, Firebase Crashlytics, Firebase Performance Monitoring

CloudWatch

Azure App Center

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

AWS Identity and Access Management, AWS Cognito

Identity and Access Management, Systems Manager

Azure Active Directory

Сеть распространения контента

Cloud CDN

Amazon CloudFront

Для управления DNS у каждого есть отдельный сервис. А вот управление сертификатами может быть вообще доступно из нескольких сервисов, как у Google. Главное – знать, что у всех такая возможность есть.

Статический контент может загружаться максимально быстро, особенно если его расположить поближе к потребителю в сети доставки контента (CDN). Такой сервис есть у всех, кроме Azure и SberCloud.

Хранение данных

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

Сопоставление сервисов российских облаков

Yandex

Sber

Selectel

Вычисления

Yandex Cloud Functions

FunctionGraph

Облачные функции

Хранение файлов

Yandex Object Storage

Object Storage Service (OBS)

Объектное хранилище

Serverless DB

YDB Serverless (NewSQL)

Хостинг сайта

Yandex Object Storage

Object Storage Service (OBS)

Объектное хранилище

Управление доменами

Yandex Cloud DNS

Domain Name Service (DNS)

DNS-Хостинг

Управление сертификатами

Yandex Certificate Manager

Объектное хранилище

Бессерверная шина событий

Оркестрация потока

Yandex Data Streams

Application Orchestration Service (AOS)

Службы обмена сообщениями

Yandex Message Queue

Simple Message Notification (SMN), Distributed Message Service for RabbitMQ

Мониторинг

Yandex Monitoring

Application Operations Management, Application Performance Management

Мониторинг

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

Yandex Identity and Access Management

Identity and Access Management (IAM)

Сеть распространения контента

Yandex Cloud CDN

CDN

Настоящих бессерверных решений не так много. У зарубежных операторов это AWS DynamoDB, AWS Aurora Serverless, Azure Cosmos DB (NoSQL) и с некоторой натяжкой гугловская Firebase Realtime Database. У российских операторов в serverless-режиме может работать только YBD в Yandex Cloud.

Что касается обычных управляемых SQL, NoSQL и документоориентированных СУБД, то все операторы поддерживают широкий набор доступных решений, но в первую очередь MySQL, PostgreSQL, Redis, MongoDB.

Интеграция приложений

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

Самая понятная история, которая есть практически у каждого – очереди сообщений (только не ясно, как это реализовано в Selectel – если кто знает, напишите в комментариях). Это аналог SQS и SNS в Amazon. Плюс в иностранных облаках есть дополнительные сервисы, позволяющие построить бессерверную шину событий: Google Eventarc, Amazon EventBridge и Azure Event Grid. 

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

Сквозные сервисы

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

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

Итогов подводить как таковых не буду, планирую поддерживать этот пост в актуальном состоянии, пополняя его вновь появляющимися сервисами и российскими облаками. На данный момент самый широкий набор облачных сервисов для бессерверной разработки предоставляет Yandex Cloud. Selectel же пока выглядит не совсем полным. Кто разворачивал в нем свои облака, поделитесь в комментариях, что там есть по факту из того, что в таблице у меня отсутствует. А пока так. Спасибо за то, прочитали пост. Буду благодарен за предложения и дополнения по таблице.  


ссылка на оригинал статьи https://habr.com/ru/post/671512/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *