クラウド&ネットワークサービスに 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 ランタイムには、競合状態検出ベンチマーク/プロファイリング、コード生成、および静的コード分析のためのツールが含まれています。

主要なクラウドプロバイダー (GCPAWSAzure) には、サービスの Go API があり、一般的なオープンソースライブラリは、API ツール(Swagger)、トランスポート(プロトコルバッファーgRPC)、モニタリング(OpenCensus)、オブジェクト関係マッピング(gORM)、および認証(JWT) をサポートしています。オープンソースコミュニティは、Go KitGo Micro、およびGizmoなどのいくつかのサービスフレームワークも提供しており、これらはすぐに始めるのに最適な方法です。

クラウドコンピューティング向けの Go ツール

Docker Docker

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

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

Kubernetes Kubernetes

Kubernetes は、Go で記述された、Web アプリのデプロイメントを自動化するためのオープンソースのコンテナオーケストレーションシステムです。Web アプリは、多くの場合、依存関係と構成とともにパッケージ化されたコンテナ (上記のように) を使用して構築されます。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 は、Go を使用して、重要なサービスであるクレジットオファー API を強化しています。エンジニアリングチームは、Go のスピードとシンプルさを挙げて、Go でサーバーレスアーキテクチャを構築しており、「Go なしではサーバーレスにしたくなかった」と述べています。
Dropbox Dropbox Dropbox Dropbox は Python で構築されましたが、2013 年にパフォーマンスが重要なバックエンドを Go に移行することにしました。現在、同社のインフラストラクチャのほとんどが Go で記述されています。

始めましょう

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

  • 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 サービスを構築するための軽量で、慣用的で、構成可能なルーター。

詳細を見る
  • html/template

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

  • flosch/pongo2

    Django シンタックスのようなテンプレート言語

詳細を見る
  • 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 を提供します

詳細を見る
詳細を見る
  • gopherjs

    Go から JavaScript へのコンパイラ。開発者は、すべてのブラウザで実行されるフロントエンドコードを Go で記述できます。

詳細を見る