В этом посте я расскажу об интересном проекте, поддерживаемом командой разработчиков языка Go: Go Cloud Development Kit , также известном как Go CDK .
Go CDK предоставляет ряд абстракций для многих функций, часто используемых в приложениях, работающих в облаке, таких как базы данных, хранилище, обмен сообщениями, секреты и т. д. Основная цель проекта при создании этих абстракций — сделать код независимым от облачного поставщика. . По словам AWS S3, вместо того, чтобы ставить свой код в зависимость от одного решения, используя Go CDK, вы можете легко переключиться на другого поставщика, например Google Cloud Storage .
Но вам может быть интересно что-то вроде:
Хорошо, мило. Но на практике вряд ли буду менять поставщиков. Так почему же стоит использовать что-то подобное?
Я вижу некоторые преимущества использования Go CDK:
- Тестовое письмо . Использование абстракций позволяет легко использовать хранилище в памяти в тестах, а в производственной среде мы можем использовать облачного провайдера.
- Различные среды . Мы можем использовать более дешевого поставщика в тестовой среде и более надежного и дорогого в производственной среде.
Например, давайте посмотрим на следующий код:
В коде мы пишем и читаем из документа, хранящегося в памяти bucket. Поэтому, чтобы изменить решение и использовать S3, необходимо только изменить фрагмент ниже в mainфункции:
Настраиваем S3 соединение и создаем bucket на этом провайдере. Остальной код не меняется. Мы продолжаем использовать функции read и write.
На данный момент в проекте есть абстракции для:
- Blob , то есть файловое хранилище. Он поддерживает Google Cloud Storage , S3 , Azure Blob Storage и локальное хранилище.
- Docstore , то есть базы данных документов, с поддержкой Google Cloud Firestore , Amazon DynamoDB , Azure Cosmos DB , MongoDB и хранилища в оперативной памяти.
- Pub/Sub Пожалуй самый полный, с поддержкой Google Cloud Pub/Sub , Amazon Simple Notification Service (SNS) , Amazon Simple Queue Service (SQS) , Azure Service Bus , RabbitMQ , NATS , Kafka и хранилища в памяти.
- И список продолжается.
И помимо кода на официальном сайте есть область с некоторыми важными понятиями .
Несмотря на то, что проект все еще находится на ранней стадии (последняя версия на момент написания этого поста — 0.28), это проект, который развивается и очень активен, помимо того, что поддерживается самой языковой командой. Вот почему это стоит вложений и использования, чтобы абстрагироваться от сложностей, о которых я упоминал в этом посте.