2020年3月29日日曜日

「autorest」および「go-autorest」とは?

Azure SDK for Go documentation」サイトの「Install the Azure SDK for Go」ページを読み進めています。

Include the Azure SDK for Go in your project」セクションにて、GoでAzure サービスを使うには Azure/azure-sdk-for-go とは別に Azure/go-autorest もインポートする必要があるとの記述がありましたので、autorestについて少し調べてみました。

ちなみに Azure/go-autorest は Azure/azure-sdk-for-go をgo getした時に一緒にダウンロードされます。

  • go get -u -d github.com/Azure/azure-sdk-for-go/...

AzureのREST API

AzureにはREST APIが用意されており、各プログラミング言語はAzure SDKで用意されているHTTPクライアントを通じてこのAPIにアクセスし、Azureとの連携を図ります。

AzureのREST API 仕様はOpen API 仕様 形式で書かれており、また、公開されています。


Azure SDKで用意されているHTTPクライアントは、この仕様書をautorestに読み込ませて自動作成されています。

Azure/autorest

autorestは、Microsoft社が開発している汎用(Azure専用ではない)オープンソースのツールで、Open API 仕様 形式を読み込んでRESTful Webサービスにアクセスするクライアント ライブラリーを生成します。

OpenAPI 3.0をサポートしており、PowerShall、C#、Python、Java、TypeScript、Ruby、そしてGoのHTTPクライアント ライブラリーを生成できます。

Azure/go-autorest

go-autorestは、autorestで作成されたAzure SDK for Goのクライアント ライブラリーに対して、ゴルーチンを使ってHTTPリクエストを並列処理できる機能を追加するパッケージで、

  • Azure Active Directory 認証 ライブラリー (autorest/adal)
  • 日付型を正確にパースするパッケージ (autorest/date)
  • 型アサーション(autorest/to)
  • モック (autorest/mock)
  • バリデーション (autorest/validation)
  • ロガー (logger)

なども含まれています。

例:autorest/adal(Active Directory Authentication Library

クライアント サービスでは、毎回ログイン画面からログインするのはわずらわしいため、リソースを操作するためのアプケーション IDである「サービス プリンシパル」を作成してアクセスします。


autorest/adal はサービス プリンシパルのトークンを扱うためのパッケージです。


今回で「Azure SDK for Go のインストール / Install the Azure SDK for Go」ページを読み終えたことになります。

P.S. これまで通りja-jpでアクセスしたのですが日本語ドキュメントが表示されなくなっていました... > Microsoftさん

2020年3月20日金曜日

「Azure SDK for Go」とは別の独自サービスパッケージ

Azure SDK for Go のドキュメント」サイトの「Azure SDK for Go のインストール」ページを読み進みています。

Azure SDK for Go を入手する」セクションにて、いくつかのAzure サービス用のパッケージは Azure/azure-sdk-for-go とは別に用意されているとの記述があり、それらは主にストレージ サービスとメッセージング サービスのパッケージです。

ストレージ サービス

File Storage(パッケージ:Azure/azure-storage-file-go

  • Azure上に構築されたSMB プロトコルのファイル共有システム。
  • 汎用 OS(Linux, macOS, Windows、など)でのファイル共有で使用。

Blob Storage(パッケージ:Azure/azure-storage-blob-go

  • ファイルをBLOBで扱うストレージ。
  • 大量データの蓄積や操作(アーカイブ、ランダム アクセス、データ解析、など)

Queue storage(パッケージ:Azure/azure-storage-queue-go

  • RESTでのテキストメッセージをキューイングする。
  • Service Busと比べてキューイング(格納)に重きが置かれている。

Table storage(パッケージ:なし)

  • 分散Key-Valueストア。

メッセージング サービス

Service Bus(パッケージ:Azure/azure-service-bus-go

  • TCP プロトコルのメッセージをキューイングしたりPub/Subで処理する。
  • Queue Storageと比べてメッセージングに重きが置かれている。

Event Hubs(パッケージ:Azure/azure-event-hubs-go

  • HTTPS/AMQP/Kafka プロトコルの大量のイベントを受け取って、Kafka プロトコルに対応したサービスに振り分ける。
  • ビッグ データ向け。

Event Grid(パッケージ:なし)

  • 対応したAzure サービスからのイベントを受け取って、対応したAzure サービスに振り分ける。

サービスのパッケージが分家する動きは、Azure SDK for Goがベータ版だった時からあり、最初はストレージでした。

2020年3月15日日曜日

「Azure Stack」とは?

Azure SDK for Go のドキュメント」サイトの「Azure SDK for Go のインストール」ページの「Azure SDK for Go を入手する」セクションにて、Azure SDK for GoはGo 1.8以上をサポートしているが、Azure Stack環境だとGo 1.9以上が必要だと書かれてあります。

Azure Stack」は初めて見聞きするサービス名なので少し調べました。

Azure Stackは、グローバル Azureを利用できない企業などがオンプレミス環境で利用できる様にしたAzureの拡張機能です。

自社内にMicrosoft 認定 ハードウェア パートナーから提供されたAzure Stackをセットアップした物理 サーバーを構えることで、オンプレミスで利用したりグローバル Azureと連携させたりできます。

Azure Stackには3つの製品ファミリーがあります。

Azure Stack Hub

  • 仮想マシン、Webアプリ&関数、コンテナーなどを実行するサーバー製品。
  • 運用はオンプレミスで、グローバル Azureとの連携も可能。

Azure Stack Edge

  • 主にAI/ML向けでFPGAが組み込まれた1Uラックマウント型サーバー製品。
  • 処理したデータはネットワーク経由でグローバル Azureに転送。

Azure Stack HCI

  • Azure HCIを採用したサーバー製品。
  • サービスは仮想マシンとして実行してグローバル Azureと連携する。

個人的には、自社でサーバー用 Azureがインストールされた物理 サーバーを購入して運用するソリューション サービスだと解釈しました。

【用語の補足】

  • グローバル Azure:パブリック クラウド版 Azureのこと
  • オンプレミス (on-premise):自社内にハードウェアやソフトウェアを構築して情報システムを運用する形態。
  • HCI (Hyper Converged Infrastructure):CPU処理、ストレージ、ネットワークを仮想化して統合した基盤

2020年3月12日木曜日

「Azure SDK for Go」とは?

Azure SDK for Goは、マイクロソフト社のパブリッククラウド「Azure」をGoでコーディングして扱うためのSDK(ソフトウェア開発キット)です。

Apache License 2.0ライセンスのオープンソースソフトウェアであり、GitHub上で管理および開発されています。


最初のコミットは2014年8月11日で、2016年、2017年とベータ期間を経て、2018年2月12日のv14.0.0で正式リリースとなりました。


おおよそ毎月末にメジャーバージョンのアップデートが行われます。

現在では、日本語ドキュメントも公開され、サポートされるAzureサービスも増えています。


当時、他のプログラミング言語のSDKやドキュメントが出揃っていた中、Goだけがなかなか正式リリースされずヤキモキしたり、ベータ期間中にストレージ系のパッケージが本家から出たり戻ったりしていたのを眺めていたも良い思い出です。

まずは「Azure/azure-sdk-for-go」の README.md や「Go 開発者向けの Azure」のドキュメントを読み進め、どんなものなのか?何ができるのか?を見て行きます。

2020年3月8日日曜日

私の「AzureとGo」に関する発表資料

Azure SDK for Goウォッチャー(?)として、過去3回「AzureとGo」に関する発表資料を作成しました。

タイトル:Microsoft × Go
イベント:2016年2月20日(土) [岡山] Okayama ComCamp 2016 powered by MVPs
概要説明:マイクロソフト社の組織や製品とGoの関係について、通常セッションで発表させて頂いた「発表済」作品です。



タイトル:Microsoft Azure for Go
イベント:2017年3月25日(土) [東京] Go Conference 2017 Spring
概要説明:AzureでのGoの使われ処について通常セッションで申し込みましたが、残念ながら落選した「未発表」作品です。



タイトル:Just Azure Using Go (7 items)
イベント:2017年9月9日(土) [東京] JAZUG 7周年総会
概要説明:AzureとGoの関係についてLTセッションで申し込んでいましたが、病欠で不参加となった「未発表」作品です。



1勝2負で負け越し中。マイクロソフトさん、イベントでGoの発表をさせてください!q@w@p

2020年は「Azure SDK for Go」をまったりと

「Azure SDK for Go」は、2015年にその存在を知り、2016年から本格的に、まったりとウォッチしてきました。


2019年からは、Goのクラウド開発キット「Go CDK」でもAzureがサポートされました。


2020年、英語や日本語を問わず、相変わらず情報量は少ないです。

そのため、2020年は「Azure SDK for Go」をまったりと触って行こうと思います。

触った内容については、本ブログやQiitaなどでアウトプットしていきます。

ハッシュタグやラベルとして「azuregojp」を使います。

2020年3月1日のツイート: