概要
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 で書かれたオープンソースのコンテナオーケストレーションシステムです。ウェブアプリは、多くの場合、依存関係と設定がパッケージ化されたコンテナを使用して構築されます (上記のとおり)。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
ウェブフレームワーク
-
Echo
高性能で拡張性のある、ミニマリストな Go ウェブフレームワーク
-
Flamingo
クリーンでスケーラブルなアーキテクチャを持つ Go ベースの高速オープンソースフレームワーク
-
Gin
Martini のような API を持つ Go で書かれたウェブフレームワーク。
-
Gorilla
Go プログラミング言語用のウェブツールキット。
ルーター
-
net/http
標準ライブラリ HTTP パッケージ
-
julienschmidt/httprouter
軽量で高性能な HTTP リクエストルーター
-
gorilla/mux
🦍 を使用して Go ウェブサーバーを構築するための強力な HTTP ルーターと URL マッチャー
-
Chi
Go HTTP サービスを構築するための軽量でイディオム的で構成可能なルーター。
データベースとドライバー
-
database/sql
MySQL、Postgres、Oracle、MS SQL、BigQuery、およびほとんどの SQL データベースのドライバーをサポートする標準ライブラリインターフェース
-
mongo-driver/mongo
MongoDB がサポートする Go 用ドライバー
-
elastic/go-elasticsearch
Go 用の Elasticsearch クライアント
-
GORM
Go 用の ORM ライブラリ
-
Bleve
Go 用の全文検索とインデックス作成
-
CockroachDB
クラウド向けに設計され、回復力があり、一貫性のある、分散型 SQL を大規模に提供するデータベースの進化
ウェブライブラリ
-
markbates/goth
ウェブアプリの認証
-
jinzhu/gorm
Go 用の ORM ライブラリ
-
dgrijalva/jwt-go
JSON Web トークンの Go 実装