Cloud & Network Services 向けの Go

概要

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

Docker は、コンテナでソフトウェアを配信するサービスとしてのプラットフォームです。コンテナは、ソフトウェア、ライブラリ、設定ファイルをバンドルし、Docker Engine によってホストされ、単一のオペレーティングシステムカーネルによって実行されます (仮想マシンよりも少ないシステムリソースを使用します)。

クラウド開発者は、Docker が開発ワークフローとデプロイプロセスをサポートするため、Go コードを管理し、複数のプラットフォームをサポートするために Docker を使用します。

Kubernetes Kubernetes

Kubernetes は、ウェブアプリのデプロイを自動化するために Go で書かれたオープンソースのコンテナオーケストレーションシステムです。ウェブアプリは、多くの場合、依存関係と設定がパッケージ化されたコンテナを使用して構築されます (上記のとおり)。Kubernetes は、それらのコンテナを大規模にデプロイおよび管理するのに役立ちます。クラウドプログラマーは、Kubernetes を使用して、コンテナ化されたアプリを迅速に構築、配信、スケールし、コンテナの実行方法を制御する API を介して増大する複雑さを管理します。

顧客 簡単な紹介 Goを使用しているプロジェクト
Google Google Google Google Cloud は、Kubernetes、gVisor、Knative、Istio、Anthos など、製品とツールのエコシステム全体で Go を使用しています。Go は、すべての API とランタイムで Google Cloud で完全にサポートされています。
Capital One Capital One Capital One Capital One は、重要なサービスであるクレジットオファー API を強化するために Go を使用しています。エンジニアリングチームは、Go の速度とシンプルさを引用し、「Go なしではサーバーレスにしたくなかった」と述べ、Go を使用してサーバーレスアーキテクチャも構築しています。
Dropbox Dropbox Dropbox Dropbox は Python で構築されましたが、2013 年にパフォーマンスが重要なバックエンドを Go に移行することを決定しました。今日、同社のインフラストラクチャのほとんどは Go で書かれています。

始める

クラウドコンピューティングのための Go 書籍

  • Echo

    高性能で拡張性のある、ミニマリストな Go ウェブフレームワーク

  • Flamingo

    クリーンでスケーラブルなアーキテクチャを持つ Go ベースの高速オープンソースフレームワーク

  • Gin

    Martini のような API を持つ Go で書かれたウェブフレームワーク。

  • Gorilla

    Go プログラミング言語用のウェブツールキット。

さらに表示
  • net/http

    標準ライブラリ HTTP パッケージ

  • julienschmidt/httprouter

    軽量で高性能な HTTP リクエストルーター

  • gorilla/mux

    🦍 を使用して Go ウェブサーバーを構築するための強力な HTTP ルーターと URL マッチャー

  • Chi

    Go HTTP サービスを構築するための軽量でイディオム的で構成可能なルーター。

さらに表示
  • html/template

    標準ライブラリ HTML テンプレートエンジン

  • flosch/pongo2

    Django 構文のようなテンプレート言語

さらに表示
  • 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 を大規模に提供するデータベースの進化

さらに表示
さらに表示
  • gopherjs

    Go から JavaScript へのコンパイラで、開発者がすべてのブラウザで実行されるフロントエンドコードを Go で書くことを可能にします。

さらに表示