概要
Go は、企業がクラウドコンピューティングシステムを構築し、拡張するのに役立ちます
アプリケーションと処理がクラウドに移行するにつれて、並行処理は非常に大きな問題になります。クラウドコンピューティングシステムは、その性質上、リソースを共有および拡張します。共有リソースへのアクセスを調整することは、クラウドで処理するすべてのアプリケーションに影響を与える問題であり、「信頼性の高い並行アプリケーションを開発するために明示的に調整された」プログラミング言語が必要です。
Go を使用すると、企業として非常に簡単に拡張できます。当社のエンジニアリングチームが成長するにつれて、各サービスを異なるユニットで管理できるようになるため、これは非常に重要です。
主な利点
開発サイクル時間とサーバーパフォーマンス間のトレードオフに対処
Go は、スケーリングされたアプリケーション、マイクロサービス、およびクラウド開発におけるまさにこれらの並行処理ニーズに対処するために作成されました。実際、Cloud Native Computing Foundation のプロジェクトの 75% 以上が Go で記述されています。
Go は、反復開発を可能にする高速なビルド時間、メモリと CPU 使用率の低下により、このトレードオフを行う必要性を減らすのに役立ちます。Go で構築されたサーバーは、瞬時の起動時間を実現し、従量課金制およびサーバーレスデプロイメントでの実行コストが安くなります。
標準的な慣用的な API を提供し、最新のクラウドの課題に対処
Go は、標準的な慣用的な API を提供し、マルチコアプロセッサを活用するための組み込みの並行処理を備えて、開発者が現代のクラウドで直面する多くの課題に対処します。Go の低レイテンシーと「ノブなし」チューニングにより、Go はパフォーマンスと生産性のバランスが取れており、エンジニアリングチームに選択する力と移動する力を与えます。
ユースケース
クラウドコンピューティングに Go を使用
サービスの構築に関しては、Go の強みが際立っています。そのスピードと並行処理の組み込みサポートにより、高速で効率的なサービスが実現しますが、静的型付け、堅牢なツール、およびシンプルさと可読性の重視により、信頼性が高く保守可能なコードの構築に役立ちます。
Go には、サービス開発をサポートする強力なエコシステムがあります。標準ライブラリには、HTTP サーバーとクライアント、JSON/XML パーシング、SQL データベース、およびさまざまなセキュリティ/暗号化機能などの一般的なニーズに対応するパッケージが含まれており、Go ランタイムには、競合状態検出、ベンチマーク/プロファイリング、コード生成、および静的コード分析のためのツールが含まれています。
主要なクラウドプロバイダー (GCP、AWS、Azure) には、サービスの Go API があり、一般的なオープンソースライブラリは、API ツール(Swagger)、トランスポート(プロトコルバッファー、gRPC)、モニタリング(OpenCensus)、オブジェクト関係マッピング(gORM)、および認証(JWT) をサポートしています。オープンソースコミュニティは、Go Kit、Go Micro、およびGizmoなどのいくつかのサービスフレームワークも提供しており、これらはすぐに始めるのに最適な方法です。
クラウドコンピューティング向けの Go ツール
Docker は、コンテナでソフトウェアを提供するプラットフォームとしてのサービスです。コンテナは、ソフトウェア、ライブラリ、および設定ファイルをバンドルし、Docker Engine によってホストされ、単一のオペレーティングシステムカーネルによって実行されます (仮想マシンよりも少ないシステムリソースを使用します)。
クラウド開発者は Docker を使用して Go コードを管理し、複数のプラットフォームをサポートします。Docker は開発ワークフローとデプロイメントプロセスをサポートするためです。
Kubernetes は、Go で記述された、Web アプリのデプロイメントを自動化するためのオープンソースのコンテナオーケストレーションシステムです。Web アプリは、多くの場合、依存関係と構成とともにパッケージ化されたコンテナ (上記のように) を使用して構築されます。Kubernetes は、それらのコンテナを大規模にデプロイおよび管理するのに役立ちます。クラウドプログラマーは、Kubernetes を使用して、コンテナ化されたアプリを迅速に構築、配信、および拡張し、コンテナの実行方法を制御する API を介して増大する複雑さを管理します。
注目のユーザー
顧客 | 簡単な紹介 | Go を使用するプロジェクト |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
始めましょう
クラウドコンピューティング用の Go の書籍
-
Building Microservices with Go
-
Hands-On Software Architecture with Golang
-
Building RESTful Web services with Go
-
Mastering Go Web Services
Web フレームワーク
-
Echo
高性能で拡張可能、かつミニマリストな Go Web フレームワーク
-
Flamingo
クリーンでスケーラブルなアーキテクチャを備えた Go ベースの高速オープンソースフレームワーク
-
Gin
martini のような API を使用した Go で記述された Web フレームワーク。
-
Gorilla
Go プログラミング言語用の Web ツールキット。
ルーター
-
net/http
標準ライブラリの HTTP パッケージ
-
julienschmidt/httprouter
軽量で高性能な HTTP リクエストルーター
-
gorilla/mux
🦍 を使用して Go Web サーバーを構築するための強力な HTTP ルーターと URL マッチャー
-
Chi
Go HTTP サービスを構築するための軽量で、慣用的で、構成可能なルーター。
データベースとドライバー
-
database/sql
MySQL、Postgres、Oracle、MS SQL、BigQuery、およびほとんどの SQL データベースをサポートするドライバーを備えた標準ライブラリインターフェイス
-
mongo-driver/mongo
Go 用の MongoDB サポート対象ドライバー
-
elastic/go-elasticsearch
Go 用の Elasticsearch クライアント
-
GORM
Go 用の ORM ライブラリ
-
Bleve
Go 用の全文検索とインデックス作成
-
CockroachDB
クラウド向けに設計されたデータベースの進化。大規模で回復力があり、一貫性のある分散 SQL を提供します
Web ライブラリ
-
markbates/goth
Web アプリケーションの認証
-
jinzhu/gorm
Go 用の ORM ライブラリ
-
dgrijalva/jwt-go
JSON Web トークンの Go 実装