Найти тему
Golang-news

Комплект для разработки в облаке Go

В этом посте я расскажу об интересном проекте, поддерживаемом командой разработчиков языка Go: Go Cloud Development Kit , также известном как Go CDK .

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

Но вам может быть интересно что-то вроде:

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

Я вижу некоторые преимущества использования Go CDK:

  • Тестовое письмо . Использование абстракций позволяет легко использовать хранилище в памяти в тестах, а в производственной среде мы можем использовать облачного провайдера.
  • Различные среды . Мы можем использовать более дешевого поставщика в тестовой среде и более надежного и дорогого в производственной среде.
  • Эволюция . Ваше приложение может начинаться с более простого решения, скажем, SQS для pub/sub , а по мере увеличения нагрузки и сложности вы можете изменить свое решение и начать использовать Kafka .

Например, давайте посмотрим на следующий код:

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

-2

Настраиваем S3 соединение и создаем bucket на этом провайдере. Остальной код не меняется. Мы продолжаем использовать функции read и write.

На данный момент в проекте есть абстракции для:

  • Blob , то есть файловое хранилище. Он поддерживает Google Cloud Storage , S3 , Azure Blob Storage и локальное хранилище.
  • Docstore , то есть базы данных документов, с поддержкой Google Cloud Firestore , Amazon DynamoDB , Azure Cosmos DB , MongoDB и хранилища в оперативной памяти.
  • MySQL/PostgreSQL с поддержкой локальных баз данных, GCP Cloud SQL , AWS RDS и базы данных Azure .
  • Pub/Sub Пожалуй самый полный, с поддержкой Google Cloud Pub/Sub , Amazon Simple Notification Service (SNS) , Amazon Simple Queue Service (SQS) , Azure Service Bus , RabbitMQ , NATS , Kafka и хранилища в памяти.
  • И список продолжается.

И помимо кода на официальном сайте есть область с некоторыми важными понятиями .

Несмотря на то, что проект все еще находится на ранней стадии (последняя версия на момент написания этого поста — 0.28), это проект, который развивается и очень активен, помимо того, что поддерживается самой языковой командой. Вот почему это стоит вложений и использования, чтобы абстрагироваться от сложностей, о которых я упоминал в этом посте.