Привет, я Александр Радаев, аналитик компании proCATT. В последнее время занимался вопросами переезда клиентов в облака. И постоянно сталкивался с тем, что постоянно приходилось сопоставлять сервисы различных облачных провайдеров друг с другом.
В результате в базе знаний появилась полезная информация, частью которой я сегодня хочу поделиться. Речь пойдет об инструментах, нужных для организации среды для приложений, использующих бессерверный подход.
В России сейчас всего 3 облачных провайдера, предлагающих облачные функции. Я расскажу, у кого что есть, и как это соотносится с сервисами общеизвестных облаков Google, Amazon и Azure.
В России три облака, в которых поддерживаются облачные функции: Yandex Cloud, SberCloud и Selectel. Так как наиболее частое применение сопоставления – это переезд из иностранного облака в отечественное, я добавил в таблицу три самых популярных иностранных облака.
Сразу признаюсь, что ограничил сопоставление бессерверными вычислениями не случайно, так значительно сокращается объем сравнения. Например, российских облачных операторов, предлагающих просто Managed Kubernetes, уже как минимум 8. Если хабр-сообществу зайдет сама идея сопоставления облаков – сделаю еще. Вообще, есть идея собрать базовый набор сервисов, нужных для развертывания нормального DevOps, и сопоставить с сервисами в различных российских облаках. Если считаете, что нужно – дайте знать в комментариях.
Для Serverless разработки я определил минимальный набор сервисов таким образом: в облаке надо хостить сайт (+DNS, сертификаты), хранить и доставлять статический контент (Объектное хранилище, CDN), организовать хранение и обработку данных в СУБД, обеспечить интеграцию приложений, а также мониторить работоспособность. Суммарно вышло 12 сервисов. Таблицы приведены ниже, для удобства разделил на две: по российским и зарубежным облакам. Общая же таблица в редактируемом формате доступна по ссылке.
Вычисления
Сервис, позволяющий размещать и запускать код в бессерверной среде, почти у всех называется одинаково, обыгрывается слово «функция». Именно его наличие стало критерием для отбора облачных операторов.
Статический сайт и контент
Только в Google и Azure разделены объектное хранилище и хостинг сайта приложения. У остальных провайдеров статический сайт развертывается из бакета в объектном хранилище. Там же могут быть элементы, отвечающие за управление сертификатами (так сделано у Selectel).
Сопоставление сервисов иностранных облаков
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), |
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), |
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 |
- |
|
Сеть распространения контента |
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 же пока выглядит не совсем полным. Кто разворачивал в нем свои облака, поделитесь в комментариях, что там есть по факту из того, что в таблице у меня отсутствует. А пока так. Спасибо за то, прочитали пост. Буду благодарен за предложения и дополнения по таблице.