Архитектура микросервисов переносит сложность из внутреннего проектирования приложений во внешнюю архитектуру подключенных к сети услуг. Поставщики облачных услуг предлагают различные подходы для управления этой сложностью. В этой статье представлен обзор параметров, доступных в Google Cloud Platform (GCP).

Обзор инструментов микросервисов GCP

Вы можете получить общее представление о микросервисах здесь. Есть несколько подходов к работе с такой архитектурой небольших взаимосвязанных сервисов. Ниже приведен список опций, доступных в GCP.

  • Создайте свой собственный Kubernetes с Google Compute Engine
  • Управляемый Kubernetes с помощью Google Kubernetes Engine
  • Бессерверная контейнерная архитектура с Google Cloud Run
  • Платформа как услуга в Google App Engine
  • Бессерверные функции с помощью Google Cloud Functions

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

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

Создайте свой собственный Kubernetes с Google Compute Engine

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

Самый практический подход к созданию приложений микросервисов – это определить свои виртуальные машины и сеть в Google Compute Engine, а затем установить Kubernetes в эту инфраструктуру. Затем вы отвечаете за настройку и запуск кластера Kubernetes поверх этой инфраструктуры.

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

Определение инфраструктуры вручную дает разработчику максимальную степень контроля. Обратной стороной медали является то, что она требует максимального вмешательства. Настройкой инфраструктуры, например выделением виртуальных машин и конфигурацией сети, можно управлять с помощью таких инструментов, как Ansible и Terraform, а автоматическое масштабирование может поддерживаться такими инструментами, как GCP Cloud Monitor.

Управляемый Kubernetes с GKE

Google Kubernetes Engine (GKE) – это абстракция более высокого уровня, построенная на основе Kubernetes. Он предназначен для автоматизации определенных аспектов управления кластером. Это включает:

  • Автоматическая балансировка нагрузки
  • Подмножества пула узлов
  • Автоматическое масштабирование количества экземпляров вашего узла
  • Автоматическое обновление программного обеспечения узла вашего кластера
  • Автоматическое восстановление узлов для поддержания работоспособности и доступности узла
  • Ведение журнала и мониторинг с помощью Google Cloud Operations

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

GKE включает ведение журнала как на уровне контейнера, так и на уровне хоста. GKE также поддерживает интеграцию с инструментами GCP CI / CD, такими как Cloud Build. Вы можете опубликовать образы контейнеров в Реестре контейнеров Google.

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

Бессерверная контейнерная архитектура с Google Cloud Run

Google Cloud Run – это бессерверный уровень абстракции, созданный поверх Knative, который является проект с открытым исходным кодом для создания бессерверных приложений поверх Kubernetes.

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

Google Cloud Run также включает возможность использовать средство управления с существующим GKE Anthos кластер, который вы используете, тем самым открывая большую степень контроля разработчика.

Выбирая между GKE и Google Cloud Run, Google рекомендует «понимать свои функциональные и нефункциональные требования к сервису, такие как возможность масштабирования до нуля или возможность контролировать подробную конфигурацию». В любом случае это разумный совет, но, в частности, здесь возникает вопрос, предлагает ли Cloud Run контроль, необходимый для архитектуры вашего приложения. Если нет, вам нужно использовать GKE.

Как и решения PaaS, Google Cloud Run требует, чтобы вы использовали архитектуру приложений без сохранения состояния.

Платформа как услуга в Google App Engine

Как абстракция инфраструктуры приложений, платформа как услуга (PaaS) стоит где-то между IaaS и бессерверной. Хотя вы увидите, что Google App Engine называется бессерверным, по сути, это PaaS.

Google App Engine также использует Kubernetes под капотом, но это в значительной степени скрыто от вас как разработчика.

Как и в случае с другими предложениями PaaS, такими как Cloud Foundry, приложения Google App Engine не должны иметь состояния. Это связано с тем, что PaaS сам отвечает за масштабирование вверх и вниз и маршрутизацию запросов. Разработчик не может контролировать, как ресурсы приложения добавляются или удаляются. Узел приложения, обрабатывающий данный клиентский запрос, может не существовать для следующего запроса.

Бессерверные функции с помощью Google Cloud Functions

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

Облачные функции Google запускаются событиями и выполняют простые действия в рамках функции. Триггеры на момент написания включают триггеры HTTP, Cloud Storage и Pub / Sub. Данные из триггеров передаются в облачные функции в качестве параметров.

На данный момент облачные функции Google поддерживают Go, Java, .NET, Node.js, Python и Ruby как языки исполнения. Это позволяет идиоматически использовать родственные технологии. В качестве примера вы можете использовать API сервлетов Java для обработки триггеров HTTP или принять более продвинутые подходы, такие как использование таких фреймворков, как Функция Spring Cloud или же Node.js Экспресс.

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

Google предлагает облачные функции для этих типов сценарии использования:

  • Облегченная обработка данных и ETL: запуск триггеров на основе данных или файлов для обработки таких задач, как обработка или сжатие изображений.
  • Веб-перехватчики: отвечать на HTTP-запросы от таких систем, как GitHub или Stripe.
  • Облегченные API: обработка отдельных запросов или событий, которые могут быть взаимосвязаны для создания более крупных приложений.
  • Серверная часть для мобильных устройств: выступает в качестве посредника между облачными сервисами, такими как Firebase, и другими сервисами.
  • Интернет вещей: используйте триггеры Pub / Sub для обработки событий в масштабе Интернета вещей

Множество вариантов микросервисов

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

Авторские права © 2021 IDG Communications, Inc.


#Запуск #микросервисов #на #Google #Cloud #Platform

Source link