AzureでGoogle Goを使い始める

こんにちは、Habr! 記事「AzureでGoogle Goを始めよう」の翻訳を紹介します



Microsoftは、Go開発者にVisual Studio、Azure Stack、およびAzure自体のAzure SDKを提供しています。



システムレベルでのプログラミング用に設計された言語の場合、Google Go( Golang )は驚くほど人気が​​あります。 多くのC開発者が開発に参加したため、Azureで使用されている多くの開発者を含む低レベルシステムを開発するためのツールとして評判を得たのはおそらくそのためです。 Dockerコンテナーを起動した場合、Azure Kubernetesサービスをアクティブ化した場合、またはOpen Service Brokerを使用した場合は、Goで記述されたコードを使用しています。



Goの開発はGoogleで始まりましたが、現在では広範な開発チームによるオープンソースプロジェクトです。 Azureクラウドデベロッパーアドボカシーチームの最近のメンバーは、Microsoftでいくつかの主要なプレーヤーを募集しており、そこでGoと関連プロジェクトの作業を続けています。 また、MicrosoftはGoを使用する他の企業(Hashicorpなど)と連携しています。Hashicorpは、Terraform多層インフラストラクチャツールを使用してAzureコンテナーの展開を管理しています。



Cと同様に、Goは低レベル言語です。 しかし、Cとは異なり、安全で習得しやすいように、比較的最小限の機能セットで設計されています。 その機能の多くは、クラウドベースの開発モデル、特にプロセス間メッセージを処理するためのチャネルを使用するプロセス間の非同期操作のサポートでうまく機能します。



Goではチャネルを3つ以上のプロセスで使用できるため、Goアプリケーションが多くのよく知られているマイクロサービスパターンをサポートできるようにする複雑な並列アーキテクチャをすばやく構築できます。 プロセスはgoroutinesとして実装され、簡単に開始できます。 優れたGoアプリには、何百または何千ものゴルーチンをいつでも含めることができます。



この機能の組み合わせにより、MicrosoftがGoコードをコアAzureサービスにリンクするツールとAzureリソースを管理するツールを備えたAzure用Go SDKを最近リリースしたことは驚くことではありません。 Githubリポジトリから入手でき、特に人気のあるVisual StudioのGo拡張機能を使用している場合は、開発環境に簡単に追加できます。 必要なのは、Goコンパイラとコマンドラインだけです。



AzureでGoを開始する



開始するのに最適なオプションの1つは、MicrosoftのVisual Studio用 Microsoftの無料go拡張機能です 。 WindowsコマンドラインとWindowsサブシステムfor Linux(WSL)の両方にアクセスできるビルトインターミナルのサポートのおかげで、ターミナルを使用してコードをチェックするエディターでGoコードを操作できます。 ダウンロードとインストールには数分かかります。インストーラーを起動した後は、Goソースディレクトリを作成するだけです。 次に、簡単な「Hello World」を作成すると、開発を開始できます。



Go用Azure SDKのインストールは、独自のgo get Goツールを使用すれば簡単です。 必要なのは、Github上のSDKリポジトリのURLです。 次のステップは、必要な依存関係をインストールすることです。 Azureストレージを操作するための個別のSDKがあります。そのため、Azure BlobsでGoを使用する予定がある場合は、それもインストールする必要があります。 すべてをインストールしたら、認証管理ツールなど、Azureサービスの操作に必要なモジュールを追加する必要があります。 Microsoftは、Azure CLIをインストールすることもお勧めします。AzureCLIは、Dockerイメージとして、またはAzure Cloudシェルを介してローカルで実行できます。 Visual Studioを使用する場合、Azure Tools拡張機能を介してAzure CLIにアクセスします。



Go用のAzure SDKの使用



すべてをインストールして構成したら、Azureサービスを管理するGoコードの記述を開始できます。 重要な警告 :Microsoftのドキュメントのサンプルコードの最初の部分では、ソースコードの構造に認証データを追加してからコンパイルする必要があります。 これは悪い考えです。新しいサービスを作成する場合、特にGitHubまたは同様のバージョン管理ツールを使用している場合は、この情報をソースコードの外部に保存することをお勧めします。



実際には、Azure CLI環境変数を使用して、Azureリソースの保護と管理に必要な情報を保存する必要があります。 その後、Goコードはそれらを要求し、すべてのインスタンスと管理者アカウント間で移植可能にします。 Githubにはこのアプローチを使用する幅広いサンプルがあるため、基本を超えた後は、これらのサンプルの認証機能をより安全なコードを実装するためのガイドとして使用できます。



Microsoft Azure SDKは包括的で、ARMリソース管理サービスと連携するためのツール、Azure機械学習サービスとのGo統合、サービス消費の監視、ストレージ管理および分析を備えています。 また、Goで使用するサービスがまだ存在しない場合は、近い将来追加される可能性があります。



実際には、Goコードのほとんどは、おそらく複数のAzureアカウントとリージョンでシステム管理タスクを処理しますが、これらはすべてスクリプトによって制御されます。 特にKubelet内またはAzure CLIからGoアプリケーションを呼び出す場合は、コマンドラインや管理環境などの外部ソースから入力を受け取るコードを記述します。 独自の自動クラウド管理ツールの基盤として使用できます。



ロギングとデバッグ



コードがスクリプトを実行しているとき、またはサービス管理構造の一部として、自動的に切り替わります-ログを有効にする必要があります。 Goには独自のロギングパッケージが含まれています。 致命的なエラーを含む一般的なアクションのログが含まれます。 致命的なエラーが発生すると、エラーメッセージが記録され、その後プログラムが自動的に終了します。 ログエントリには自動的にタイムスタンプが付けられ、選択をマイクロ秒まで適用できます。 複数のゴルーチンが単一のログファイルを共有できるため、プロセス全体を追跡できます。



Microsoftは、GoコードをApplication Insightsと統合するためのツールも提供しています。 Application Insightsを使用すると、すべてのコードの監視情報を1か所にまとめることができ、管理対象アプリケーション、コード、Azureリソース間の相互作用のデバッグに役立ちます。



GoのプログラミングスキルはWindowsとUnixの間で移植可能であるため、Microsoftのハイブリッド化が進むAzureに最適です。 新しいオープンソースツールの多くを作成するために使用される言語をサポートすることにより、Goを使用してAzure PortalをKubernetesまたはDockerとより深いレベルでリンクすることにより、管理ツールを改善する機会もあります。



GoのAzureサポートは、Azure Stackでも利用できます。 パブリッククラウドサービスを管理するために記述されたコードはローカルで実行され、ハイブリッドクラウドインフラストラクチャの自動化をサポートします。 オンプレミスのコンテナーまたは仮想マシンインスタンスを実行するコードは、追加のリソースが必要な場合にワークロードをパブリッククラウドに移動し、可能な限りコストを抑えながら内部運用を拡大できます。



All Articles