アドベントカレンダー振り返り【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の25日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

ここまで24日間、アドベントカレンダーを書き続けることができました(遅れた日もあるけれど)。
25日目は振り返りとして、Azureの各種サービスについて感じたこと、アドベントカレンダーを通して感じたことをまとめてみました。

Azureについて

今回、Azureの各種サービスについて調べたり、実際に使ってみた中で感じたことを説明します。

Azureのサービスの豊富さ

今回のアドベントカレンダーでは86個のサービスのうち、24個を取り上げました。まだ3分の1未満・・・
仮想マシンに始まり、データベース、ネットワーク、負荷分散、監視、AI、IoTなど本当にいろんな種類があります。
さらに各サービスの中にも多くの機能があり、本当に何でもできそうです。プレビュー提供のサービスも多くあり、今後もますます機能が拡充されていきそうです。

Azureのドキュメント

今回の記事を書くにあたって、基本的にはAzure公式のドキュメントを読んで記事を作成しました。
Azureのドキュメントは、概要(overview)、チュートリアル、HowTo、リファレンスの読んでいくと順に理解しやすいです。
概要を把握して、実際の作業手順を見て必要な設定を理解して、さらに細かい仕様を見ていくという流れです。
正直、Azureのドキュメントは読んでて分かりにくいものもあります。英語しかなかったり、英語を機械翻訳で日本語にしていたり、Azure独自の概念が出てきたり、それなりに骨が折れることもあります。しかし、ちゃんと読めば、必要な情報が漏れなく書いてあることが今回ドキュメントを読んで分かりました。
願わくば、表記ゆれ(1つのドキュメント中で英語から翻訳した日本語の機能名が違ってて混乱する)、誤字脱字(AsureじゃなくてAzure!)、そしてリンク切れは改善してほしいと思いました。
個人的には、ひたすら1か月ドキュメントを読み込んでAzure言語の文法を理解できたのは収穫の一つです。

他社クラウドとの比較

ちょうど11月上旬にはMicrosoftのTechSummit、11月末にはAWSのRe:inventが開催されてこの数カ月は各クラウドでたくさんの新サービスや機能改善が発表されています。いろいろウォッチしてて感じたのは、他社にあって自社のクラウドにない機能があれば、各社とも同機能の実装を迅速にしているな、ということです。当然ながら各クラウドベンダとも他社も意識しています。なので、だいたいの機能はどのクラウドでも大差なく使えるようになっています。
Azureに関していうと、エンタープライズに特化している感があり、運用や業務との統合も含めて機能が拡充しているのが特徴です。他社クラウドだとクラウドということもあり機能が限定されていることもありますが、Azureは従来のオンプレ機器と同等の機能が提供されたり、設定が可能なことが多いと感じました。一例をあげればロードバランサ周りは他社クラウド対比、機能が豊富で設定の幅も広いです。

アドベントカレンダーで得られたこと

このアドベントカレンダーも含めて1カ月で30記事を書きました。通勤時間などプライベートな時間もある程度侵食しつつも、ほぼ1日1本のペースで記事を書き続けることができました。始めたころと比べて、最後では下調べの時間も各時間も半分くらいにできたので、記事作成効率を上げられたかと思います。

また、twitter経由やいろんな伝手でフィードバックをもらって記事をレベルアップしたり、これまでにない人とのつながりを得られたのも大きな収穫でした。

まとめ

Azureのサービスをまだ全然網羅できていないので、他の人にも協力してもらいながら、このシリーズは継続していきたいと思います。


Face APIを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の24日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

24日目はAzure Cognitive ServicesのFace APIです。静止画から顔に関する情報を抽出できます。

概要

cognitive(コグニティブ)とは日本語で「認知」を意味します。ただ機械的に認識するだけでなく、人間と同じようにモノを理解して推論し、さらに自ら学習する、という意味で使われています。

Azure Congnitive Serviceでは視覚、音声、言語、知識、検索の5つのカテゴリで複数のAPIが提供されています。
今回は画像認識系のサービスの中からFace APIを紹介します。写真に含まれる顔の検出、識別、分析、グループ化、タグ付けができます。
使える機能について説明していきます。

顔検証 Face Recognition

2つの顔が同一人物のものであるかを判別します。

Face Verification 顔認証

写真の中の2つの顔、もしくは写真の中の1つの顔と事前にPerson Groupに登録済の顔が一致するかを判別します。同一人物かどうかと、その確率が返されます。

Finding Similar Face 類似する顔の検索

与えられた顔写真の中から同一人物と推測される顔を返してくれます。matchFace と matchPerson の2つのモードがあります。matchFaceモードではFace Verificationの機能を使って同一人物の顔写真を探します。matchPersonモードでは同一人物かではなく「似た顔」の候補を探してくれます。結果は類似する顔が確率とともに返されます。

Face Grouping 顔のグループ化

顔写真を分類して同一人物であると思われる顔写真にグループ化します。1000枚までの顔写真を分類できます。顔グループと分類できなかった顔グループ(messyGroup)が返されます。

Face Identification 顔識別

person groupと呼ばれる事前に定義した人物データベースから顔の識別を行います。各グループには10000人を登録でき、さらに個人ごとに248パターンの顔を登録できます。

Face Storage 顔ストレージ

Face Identificationなどで登録した顔をFace Storageに登録して使うことができます。1000人までの顔は無料枠で登録できます。
1枚当たり4MBまでの画像を登録できます。

Face Detection(顔検出)

画像内の人間の顔を検出してくれます。最大64人分まで対応できます。検出した顔の位置を示す矩形と、顔の特徴を返してくれます。

顔の特徴は以下のようなものがあります。

faceId

顔を識別するユニークなIDです。

faceAttributes

顔に関連する属性を検出してくれます。

  • age: 年齢を予測します。gender: 性別を予測します。
  • smile: 笑顔の度合いを検出します。
  • facialHair: 口ひげ(moustache)、あごひげ(beard)、もみあげ(sideburns)の長さを検出します。
  • headPose:ロール軸・ピッチ軸・ヨー軸(roll/yaw/pitch)の角度を検出します。
  • glasses: 眼鏡をかけているか、かけているならそのタイプを検出します。NoGlasses、ReadingGlasses、Sunglasses、SwimmingGogglesの4タイプで判定されます。
  • emotion: 感情の度合いを検出します。anger、contempt、disgust、fear、happiness、neutral、sadness、surpriseの8つの感情を判定できます。
  • hair: 髪が見えているか、禿げているか、また髪がある場合は髪の色を検出します。髪の色は種類の中から度合いを検出します(brown、blond、black、other、gray、red)。
  • makeup: 目と唇が化粧されているかどうかを予測します。
  • accessory: 顔周辺のアクセサリとして帽子、眼鏡、マスクをしてるかの度合いを検出します。
  • occlusion: 額、目、口が閉じているかを判定します。
  • blur: 顔のぼやけ具合を検出します。Low、Medium、Highのレベルと度合いで検出します。
  • exposure: 顔の露出具合をGoodExposure、OverExposure、UnderExposureのレベルと度合いで検出します。
  • noise:ノイズのレベルを検出します。Low、Medium、Highのレベルと度合いで検出します。

faceLandmarks

顔の特徴点の位置を検出してくれます。

  • 瞳孔(pupilLeft、pupilRight)
  • 鼻(noseTip、noseRootLeft)
  • 口(mouthLeft、mouthRight)
  • 眉毛(eyebrowLeftOuter、eyebrowLeftInner、eyebrowRightInner、eyebrowRightOuter)
  • 目(eyeLeftOuter、eyeLeftTop、eyeLeftBottom、eyeLeftInner、eyeRightInner、eyeRightTop、eyeRightBottom、eyeRightOuter、noseRootRight、noseLeftAlarTop、noseRightAlarTop、noseLeftAlarOutTip、noseRightAlarOutTip)
  • 唇(upperLipTop、upperLipBottom、underLipTop、underLipBottom)

その他

・特定の人物と認識した顔は24時間保持されて、同じfaceIdが返されます。

・無料枠では20トランザクション/分、有料プランでは10トランザクション/秒の処理件数制限があります。

料金

・トランザクション単位の課金です。

・月間30000トランザクションまでの無料枠あり。

・1000トランザクションごとに課金されます。

・有料枠は153円/1000トランザクションから

・Face Storageは画像1000枚あた月額51円

まとめ

顔に関する様々な属性、顔のパーツの位置などいろんなことができてかなり高性能です。顔系の認識は日本だとNECが長年研究して、製品化してましたが、個人はもちろん法人でもコストの面で導入が難しかったですが、今ならAzureのおかげで低コストでなんでもできて、すごい世の中になりました。


Computer Vision APIを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の23日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

23日目はAzure Cognitive ServicesのComputer Vision APIです。静止画から様々な情報を抽出できます。

概要

cognitive(コグニティブ)とは日本語で「認知」を意味します。ただ機械的に認識するだけでなく、人間と同じようにモノを理解して推論し、さらに自ら学習する、という意味で使われています。

Azure Congnitive Serviceでは視覚、音声、言語、知識、検索の5つのカテゴリで複数のAPIが提供されています。今回は画像認識系のサービスの中からComputer Vision APIを紹介します。静止画や動画などから情報を抽出して認識してくれます。
使える機能について説明していきます。

Tag images based on content

画像にタグ付けします。例えば芝生に建つ家の写真であれば、grass、houseなどのタグが返ってきます。

Categorize images

86のカテゴリから適切なカテゴリを選択してくれます。例えば芝生に建つ家の写真であれば、大カテゴリがOutdoor、小カテゴリがHouseが返されます。


https://docs.microsoft.com/ja-jp/azure/cognitive-services/computer-vision/home から引用

Identify the type and quality of images

画像のタイプを選択します。クリップアートかどうか、線画(Line Drawing)かどうか、を判断してくれます。画像の前処理に使えそうです。

Detect human faces and return their coordinates

静止画から人の顔を認識して、その位置と性別、年齢を予測してくれます。

Recognize domain-specific content

あるカテゴリに特化した認識ができます。現時点で対応しているのは、著名人の顔認識(celebrity recognition)とランドマーク認識(landmark recognition)です。

Generate descriptions of the content

静止画の説明を生成してくれます。例えば、大都会のモノクロ写真を与えると「a black and white photo of a large city」が返ってきます。

Perceiving Color Schemes

色情報を抽出します。背景色、前景色、全体色、アクセントカラー(black, blue, brown, gray, green, orange, pink, purple, red, teal, white, yellow)を判別してくれます。静止画かモノクロかの判定(Black & White or not)もできます。

Flag adult content

アダルトコンテンツかを判定し、成人向け・わいせつな描写を検知することができます。

Optical Character Recognition (OCR)

OCR、つまり画像からテキストを抽出します。文字が傾いていても傾きを検知して文字を認識できます。
25言語に対応しています。対応言語は、アラビア語、簡体字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、英語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、セルビア語(キリル語とラテン語) 、スペイン語、スウェーデン語、トルコ語です。

Recognize Handwritten Text

プレビューで英語のみの対応ですが、手書き文字の認識もできます。

Generating Thumbnails

画像のサムネイルを作成します。画像のハイライト部分を切り出したり、縦横比も自動的に調整してくれたりします。

その他

・入力はバイナリかイメージのURL指定が利用可能

・JPEG, PNG, GIF, BMPをサポート

・画像ファイルは4MB以下のサイズ、かつ50x50ピクセル以上の大きさ

料金

・トランザクション単位の課金です。

・月間5000トランザクションまでの無料枠あり。

・Tag、Face、GetThumbnail Color、Image Typeは102円/1000トランザクションから

・OCR、Adult、Celebrity、Landmark153円/1000トランザクションから

・説明とOCR(手書き)は255円/1000トランザクションから

まとめ

Computer Vision API、調べてみたら思った以上にいろいろな機能があることが分かりました。APIとして利用することで、アプリケーションに画像認識の機能を追加することができ、応用の場が広そうです。


Azure Monitorを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の22日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

22日目はAzure Monitorです。メトリックと呼ばれる様々なシステムの数値やログを監視して、通知やアクションが可能です。

概要

Azure Monitorではシステムから発生する様々なメトリクスを収集するとともに、収集したデータの分析や、アラート検知、自動アクションなどを可能にして、システムの稼働監視と、可用性向上に役立ちます。

機能

・ダッシュボード

基本情報、重要なアラートがサマリとして表示されます。

アラート件数:メトリックアラートとアクティビティログアラートの発生件数を確認できます。
アクティビティログエラー:Azureリソースで発生したエラーイベントの件数が確認できます。
Azure Service Health:計画的なメンテナンス イベントなどのサマリ情報が確認できます。
Application Insights:アプリケーションの要求率、応答時間、エラー率、可用性などのKPIを確認できます。

・メトリック

メトリックとしてCPU使用率、正常ホストの数などを取得できます。

すべてのメトリックは1分間隔で取得され、30日間保存されます。ストレージの保存期間を変更することで長期間保存することも可能です。また、メトリックが閾値を超えた場合に、アラートメールを送信したり、事前に設定したアクションを起動することも可能です。

利用できるメトリックは以下で確認できます。
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-supported-metrics

・自動スケール

メトリクスが条件を満たすと、仮想マシンを追加または削除したりして、リソース量を自動的に調整することができます。

・アラート

アラートはメトリックアラートとアクティビティログアラートが利用できます。

メトリックアラートは、指定したメトリックの値が、割り当てたしきい値を超えた時と戻った時にトリガーされます。
アクティビティログアラートは、フィルター条件と一致するログイベントが生成されたときにトリガーされます。

・通知

メトリックアラートは、メール通知とwebhookにより通知が可能です。
アクティビティ・ログ・アラートでは、アクショングループが利用可能です。
アクショングループでは、電子メールアドレスやSMS番号、webhook URLが利用可能で、さらにグループ化して管理することができます。

・Azureのその他の監視ツール

Azure Monitorの他の監視ツールとして、Application Insights、Log Analyticsがあります。

Application Insightsではアプリケーションのパフォーマンスの監視とユーザー分析ができます。Application Insights SDKをアプリケーションに組み込んで、応答時間、例外のトレース、デバッグのスナップショット、実行プロファイルなどのデータにアクセスできます。
Log Analytics(旧称はOMS Log Analytics)では、ログデータとメトリックデータを取り込んで、ログ検索や分析ができます。

その他

・プレビューのほぼリアルタイムのメトリックアラート(Near-Real-Time Metric alerts)では、メトリック値の変化を1分間隔で監視でき、詳細なアラートルール設定や複数のメトリックを組み合わせたトリガーも設定できる。

料金

・1440個の監視データが1標準API呼び出しとしてカウントされます。1分おきに1日監視すると1440個(60分×24時間)の監視データが取得され、1標準API呼び出しとなります。

・1000標準API呼び出しごとに課金されます。

・SMS、メール通知、プッシュ通知、webhookは通知回数に応じて課金されます。

まとめ

標準で1分間隔でメトリクスが収集されるので、ほぼリアルタイムな監視が実現できます。通知系はアクショングループの標準対応化を今後期待したいです。


Azure Cloud Shellを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の21日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

21日目はAzure Cloud Shellです。ブラウザ上でシェルを使うことができて、Azureの中で一番好きな機能かもしれません。

概要

Azure Cloud Shellは、Webブラウザ上で利用できるシェル環境です。sshクライアントを立ち上げることなく、Webブラウザ上でAzure CLIコマンドなどを実行できます。

以下のような機能を利用できます。

・Bashシェル、PowerShellの利用
・Azure Storage経由のファイル共有
・プリインストールされた各種ツール

Bash版を実際に使いながら機能を見ていきます。

Azure Portal右上の[>_]ボタンを選択すると、画面の下半分にシェルウィンドウが現れます。
今回は[Bash(Linux)]を選択します。

初回起動時には、ストレージの作成の指示が出ます。これを設定することでCloud ShellからAzureファイル共有をマウントしてくれるのでCloud Shell環境とのファイルのアップロード、ダウンロードができるようになります。
サブスクリプションを選んで、[Create storage]を選択します。

しばらく待つと、シェルが立ち上がります。
右上の□を押すと画面を最大化できます。

いくつかコマンドを打ってみました。homeディレクトリの下にはclouddriveというディレクトリがあり、Azureファイル共有にマウントされています。

このclouddriveフォルダにファイルを作成すると、Azure PortalのFileサービスからダウンロードすることができます。逆にFileサービスにファイルをアップロードすればCloud Shellから使うことができます。

プログラミング言語、ユーティリティともメジャーなものが標準で入っています。

azure-cli 2.0.23
.Net 2.0.0
Go 1.7
Java 1.8.0_151
Node.js 6.9.4
Python 3.5.2
Docker 17.04.0-ce
mysql 14.14
sqlcmd 13.1.0007.0

主だったもののバージョンを確認した結果も載せておきます。


$ az -v
azure-cli (2.0.23)

acr (2.0.17)
acs (2.0.22)
advisor (0.1.0)
appservice (0.1.22)
backup (1.0.3)
batch (3.1.7)
batchai (0.1.3)
billing (0.1.6)
cdn (0.0.10)
cloud (2.0.10)
cognitiveservices (0.1.9)
command-modules-nspkg (2.0.1)
configure (2.0.12)
consumption (0.2.0)
container (0.1.15)
core (2.0.23)
cosmosdb (0.1.15)
dla (0.0.15)
dls (0.0.18)
eventgrid (0.1.5)
extension (0.0.6)
feedback (2.0.6)
find (0.2.7)
interactive (0.3.11)
iot (0.1.15)
keyvault (2.0.15)
lab (0.0.13)
monitor (0.0.13)
network (2.0.19)
nspkg (3.0.1)
profile (2.0.16)
rdbms (0.0.9)
redis (0.2.10)
reservations (0.1.0)
resource (2.0.19)
role (2.0.15)
servicefabric (0.0.7)
sql (2.0.17)
storage (2.0.21)
vm (2.0.20)

Python location '/opt/az/bin/python3'
Extensions directory '/home/user_name/.azure/cliextensions'

Python (Linux) 3.6.1 (default, Dec 15 2017, 17:51:12)
[GCC 4.8.4]

Legal docs and information: aka.ms/AzureCliLegal

$ dotnet --version
2.0.0

$ go version
go version go1.7 linux/amd64

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

$ node -v
v6.9.4

$ python --version
Python 3.5.2

$ docker -v
Docker version 17.04.0-ce, build 4845c56

$ mysql --version
mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper

$ sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
Copyright (c) 2012 Microsoft. All rights reserved.

ツールのリストは https://docs.microsoft.com/ja-jp/azure/cloud-shell/features に詳細があります。

料金

・Cloud Shellの利用には料金はかかりません。

・Azure Storageに作成した共有領域にのみ課金されます。

まとめ

azコマンドなどをインストールしなくてもすぐに使えるのでとても便利です。プログラミング言語、Git、Docker、DB接続クライアントなど一通りの機能をWebブラウザ上から使えるのも、ちょっとした確認をすぐにできてありがたいです。


Azure API Managementを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の20日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

20日目はAzure API Managementです。

概要

Azure API Managementは、フロントとバックエンドをつなぐAPIゲートウェイがクラウド上で提供されるとともに、キー認証やIPアドレスフィルタリング、リクエスト結果のキャッシュなどAPIに関連する様々な機能も使うことができます。

機能

・レベルとスケーリング

Developer、Standard、Premiumの3つのレベルから選択できます。
各レベルごとにユニットと呼ばれる単位で帯域、スループット、キャッシュ容量が定義されています。
たとえば、Standardレベルでは、1ユニットで、月に2億回のAPIコール、1テラバイトの帯域幅、1,000リクエスト/秒のスループットが提供されます。ユニットを追加して2ユニットにすれば毎月4億回のAPIコール、2テラバイトの帯域幅、2,000リクエスト/秒が提供されます。

Developerレベルは、その名の通り開発用です。SLAもありません。1ユニットだけ使えます。追加はできません。
StandardレベルになるとSLAもあり、スループットが向上、ユニットも4つまで使用できます。
Premiumレベルになると各リージョンで10ユニットまで使用でき、さらにプライマリリージョンに加えて他のリージョンにもユニットを追加することができます。

https://azure.microsoft.com/ja-jp/pricing/details/api-management/ から引用

・キャッシュ

API Managementでは、レスポンスデータをのキャッシュとして保管、再利用ができます。キャッシュを行うことで、レスポンスを速くしたり、バックエンドの負荷が減少したりするメリットがあります。

・セキュリティ

クライアント証明書認証を使用してバックエンドにアクセスする、キーやトークンでAPIを保護するといったことができます。

・変換ポリシー

変換ポリシーと呼ばれるルールを使ってAPIに投げられたリクエストのメッセージを変換できます。JSONからXML、XMLからJSON、メッセージ中の文字列の置換、URLの書き換えなどのポリシーが利用可能dス。


https://docs.microsoft.com/ja-jp/azure/api-management/api-management-transformation-policies から引用

その他

・レベル間でアップグレードまたはダウングレードを実行できるが、ダウングレードすると機能が使えなくなる場合がある。

・APIは、デフォルトではサブドメイン apim-service-name.azure-api.netに割り当てられる。独自ドメインを割り当てることも可能。

・APIへアクセスするための複数の言語向けのサンプルコード、API仕様書も自動生成されます。

料金

・利用したユニット数に応じて時間単位で課金されます。

まとめ

APIを利用することでシステム間を疎結合にして連携しやすくするとともに、API Managementのようなマネージドサービスを使うことで開発のコストも下げることができます。API Managementはセブン銀行のAPI連携でも利用されており、権限管理などの手間を削減しては開発期間の短縮や運用負荷軽減につながったいう事例も出てきており、Fintechはじめとした各種APIの基盤として今後も活用が増えていきそうです。


Azure Container Instancesを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の19日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

19日目はAzure Container Instancesです。

概要

Azure Container Instancseは、Dcokerベースのコンテナを簡単かつ高速に構築することができる、フルマネージドなDockerサービスです。

機能

・利用できるDockerレポジトリ

Docker HubやAzure Container Registryからコンテナー・イメージをプルして、コンテナーを起動できます。一般に公開されているもの、個人でカスタマイズしたものとも利用可能です。

・リソースのサイズ

CPUとメモリの組合せを選ぶことができます。
CPUコアは1コア、2コア、3コア、4コア、メモリは1.0GB、1.5GB、2.0GB、2.5GB、3.0GB、3.5GB、7.0GB、17.0GBが選択可能です。

・ストレージ

コンテナーの停止後もストレージ状態を保持するために、外部ストレージからボリュームをマウントすることができます。Container InstancesからAzureファイル共有をマウントする方法も提供されています。

https://docs.microsoft.com/ja-jp/azure/container-instances/container-instances-mounting-azure-files-volume

・パブリックIPアドレス

パブリックIPをコンテナに紐づけてContainer Instancesをインターネットに公開することもできます。

その他

・プレビュー期間中は、西ヨーロッパ、米国西部、米国東部のリージョンでContainer Instancesを利用可能です。リージョンでの負荷が高まると、デプロイに失敗することもあるそうです。

・コンテナーのオーケストレーションを使いたい場合は、Azure Container Service(AKS)を利用するのがいい。

料金

・インスタンスを起動した回数と、CPU・メモリ利用時間に対して課金されます

・インスタンスを1回起動するごとに0.26円

・メモリはGBあたり0.001275円、CPUはコアあたり0.001275円

・1か月(30日)、毎日1回だけコアが1個、メモリが1GBのコンテナー・インスタンスを作成すると約30円です(安い!)。

まとめ

コンテナを簡単にすぐに立てられるので、コンテナを短時間だけ使いたい、というユースケースにはもってこいのサービスです。プレビューが取れてGAになるのが待ち遠しいです。


Azure HDInsightを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の18日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

18日目はAzure HDInsightです。Hadoopなど大規模データ分散処理基盤をマネージドサービスとして利用することができ、大量のデータを高速に分析、処理できます。アドベントカレンダーも残りあと1週間、がんばってお届けしていきます。

概要

Azure HDInsightはHadoopを始めとした大規模データ分散処理基盤をマネージドサービスとして利用することができます。分散処理基盤をAzureの仮想マシン上に構築し、関連ソフトウェアもインストール・設定されるので、導入の手間なく、簡単にデータ分析基盤を使い始めることができます。同様のクラウドサービスはAWSだとEMR
があります。

機能

・提供されるクラスター

Apache Hadoop、Apache Spark、Apache HBase、Microsoft R Server、Apache Storm、Apache Interactive Query(Live Long and Process)、Apache Kafkaがサポートされています。


https://docs.microsoft.com/ja-jp/azure/hdinsight/hadoop/apache-hadoop-introduction から引用

・提供されるコンポーネント・ユーティリティ

Mahout、Pig、ZooKeeperなどのコンポーネント、ユーティリティが提供されます


https://docs.microsoft.com/ja-jp/azure/hdinsight/hadoop/apache-hadoop-introduction から引用

提供されるコンポーネントやユーティリティの詳しい情報は以下に載っています。
HDInsight での Hadoop のコンポーネントとバージョン

・サポートするプログラミング言語

標準では、Java(Clojure、Jython、Scala)とPythonが利用可能です。後述するスクリプトアクションを使用して、他の言語をインストールすることもできます。

・スクリプトアクション

Bashスクリプトを使用して、クラスターの作成時または作成後に、HDInsightをカスタマイズすることができます。
スクリプトはAzure Data Lake Store、Azure Storage BLOB、ファイル共有サービス(GitHub、OneDrive、Dropboxなど)に置いてURIをHDInsightに設定します。設定や実行は、Azure Portal、Azure PowerShell、Azure CLI、HDInsight .NET SDKからできます。

・仮想マシンタイプ

クラスターのノードには、Aシリーズ(エントリレベル)とD3 v2(高速なCPU、CPU対比最適なメモリ構成、SSD)の仮想マシンが利用されます。既定の仮想マシンサイズは以下のようになります。


https://docs.microsoft.com/ja-jp/azure/hdinsight/hdinsight-component-versioning#hdinsight-standard-and-hdinsight-premium から引用

その他

・設定から利用開始までは20分ほど。

・Azure HDInsightはStandardとPremium(プレビュー)が提供される。Premiumでは、HDInsightクラスターをAzure Active Directory(Azure AD)のドメインに参加させて、セキュリティを強化することができる

・仮想マシンのA シリーズはデータノードとワーカーノードでは使用できない。

料金

・HDInsightクラスターを構成するノードの台数、利用時間に課金されます(分単位)。クラスターが作られると課金が開始され、クラスターが削除されると課金が終了します。

・R Serverクラスターの使用には追加料金が発生する(コア時間に対して課金)。

まとめ

Hadoopを始めとしたデータ分散処理基盤はオープンソースのものが普及して、多くの企業でデータ分析に使われています。ソフトウェア自体はオープンですが、ハードウェアの構築、関連ソフトウェアのインストール、設定は作業量が多く、設定の組み合わせも多くなり、大変です。HDInsightを使うことでこのような導入作業の手間が不要で、その後の運用も省力化することができ、とても魅力的なサービスです。


Azure Functionsを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の17日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

17日目はAzure Functionsです。今はやりのサーバレスアーキテクチャで、サーバを立てずにコードを実行できます

概要

Azure Functionsは、クラウド上でコード(関数)をサーバなしに手軽に実行できるサービスです。利用者はサーバの管理を気にする必要はなく、アプリケーションロジックに集中することができます。サーバ使用料は不要で、関数を実行した回数と時間に対して課金されます。。

機能

・利用できるプログラミング言語

試験段階、プレビューのものも含めるとC#、JavaScript、F#、Java、Python、PHP、TypeScript、バッチ(.cmd、.bat)、Bash、PowerShellが利用可能です。
1.xの試験段階の言語は、スケーリングが適切に行われず、パフォーマンスが出ないといった可能性があるので、運用時は注意が必要です。


https://docs.microsoft.com/ja-jp/azure/azure-functions/supported-languages から引用

・トリガー

Blob Storageにファイルが格納された時など、イベントをトリガーにしてFunctions関数を起動できます。サポートされるトリガーは、以下の通りです。

HTTPTrigger:HTTP要求をトリガーに、コードを起動します
TimerTrigger:時刻を指定してコードを起動します。cron相当のスケジュール管理ができます。
GitHub webhook:GitHubリポジトリで発生するイベントをトリガーにコードを起動します。
汎用webhook:外部Webサービスのwebhookをトリガーにコードを起動します。
CosmosDBTrigger:Azure Cosmos DBへのデータの追加および更新されたことをトリガーに、コードを起動します。
BlobTrigger:Azure Storage BLOBがコンテナーに追加されたことをトリガーに、コードを起動します。
QueueTrigger:Azure Storageキューにメッセージが配信されたことをトリガーに、コードを起動します。
EventHubTrigger:Azureイベント ハブに送信されたことをトリガーに、コードを起動します。IoTでも使いやすいシナリオです。
ServiceBusQueueTrigger:メッセージ・キューをリッスンし、コードを起動します。。
ServiceBusTopicTrigger:トピックをサブスクライブすることで、コードを起動します。

・スケール

コード実行時に必要なインスタンスが自動的に追加・削除されます。メモリも必要に応じて最大1536MBまで自動的に拡張されます

その他

・Azureのサーバレス系サービスは他にも、Microsoft Flow、Azure Logic Apps、Azure App Service WebJobsがある。

・メモリ使用量を明示的に設定する必要はない。

料金

・従量課金プランとApp Serviceプランがあります。

・従量課金プランの場合は、実行回数とリソース使用量(メモリ使用量×時間)に対して課金されます。

・従量課金プランの場合は、リソース使用量は、平均メモリサイズ(GB)に実行にかかった時間(ミリ秒)を乗じて計算されます。単位はギガバイト秒(GB秒)です。メモリ使用量は、128MB単位で切り上げて測定されます。

・従量課金プランの場合は、月間無料使用分として、月あたり100万回のリクエストと、400,000GB秒のリソース使用量が含まれます。

まとめ

試験段階のものもありますが、多くの種類の言語でコードを記述できます。.cmd、.batのようなレガシーなものがあるのも驚きです。コードの発火元となるトリガーの様々なものを選択でき、Azure Functionsだけで、いろいろな処理を手軽に実装、実行できそうです。


Azure Traffic Managerを解説 【シリーズ Azureサービスいちから紹介】

ナレッジコミュニケーションの大柳です(@oyngtmhr)

16日目はAzure Traffic Managerです。DNSレベルでアクセスを制御することで、可用性やレスポンスを向上させることができます。

概要

Azure Traffic Managerは、あるエンドポイントへのアクセスを、DNSを使って複数のエンドポイントにトラフィックを分散することができます。

機能

・ルーティング方法

4つののルーティング方法があります。

優先順位:エンドポイントに1~1000の優先度をつけてルーティングを行います。トラフィックは優先度が最小のエンドポイントに振り分けられます。最優先のエンドポイントが利用不可になった場合は、次に優先度の小さいエンドポイントに振り分けられます。Active-Standby構成のようなイメージです。

重み付け:エンドポイントに1~1000の重みをつけてルーティングを行います。トラフィックは重みに応じた確率で各エンドポイントに振り分けられます。アプリケーションのリリース時に、特定のエンドポイントにまずリリースを行い、重みを小さくしておくことで、リリースの影響を見ながら、段階的にリリースを進める、といった使い方が可能です。

パフォーマンス:ネットワーク上の応答時間が最も短いエンドポイントに振り分けを行います。ユーザは自分から見て最もパフォーマンスの高いエンドポイントにアクセスすることができます。

地理的:地理的に最も近いエンドポイントに振り分けを行います。エリアはリージョン、国、州の粒度を設定できます。

・自動フェールオーバー

Traffic Managerでは、エンドポイントを定期的に監視します(デフォルトは30秒)。許容回数(デフォルトは3回)以上、正常な応答がない場合は、障害状態と判断し振り分けを止めます。なお、すべてのエンドポイントが障害状態になった場合は、エンドポイントを返さないよりはいいという考えのもと、Traffic Managerはすべてのエンドポイントがオンラインであるかのように応答します。

・入れ子になったTraffic Managerプロファイル

Traffic Managerの下にさらに入れ子にしてTraffic Managerに振り分けることもできます。以下の図のようにパフォーマンス重視のルーティングで最も近いエンドポイントに振り分けて、振り分けられたエンドポイントではリリースにあわせて重み付けルールでTraffic Managerにより振り分けることができます。

https://docs.microsoft.com/ja-jp/azure/traffic-manager/traffic-manager-nested-profiles から引用

・エンドポイント

エンドポイントには以下の3つが利用可能です。

Azureエンドポイント :Azureで提供されるサービス。
外部エンドポイント:Azure外のオンプレミスサーバや外部プロバイダーのサービス。
入れ子になったエンドポイント:Traffic Managerの下にさらにTraffic Managerを入れ子に配置する。

その他

・ルーティング方法はオンラインで変更でき、変更は1分以内に適用される。

・Traffic View(プレビュー)でルーティング統計情報を確認もできる。

料金

・受信したDNSクエリの数に100万クエリ単位で課金されます。

・監視したエンドポイントの数に対して課金されます。Azure内部と外部のエンドポイントでは外部の方が料金が高いです。

まとめ

DNSを使用した負荷分散を柔軟にできます。可用性やパフォーマンスの向上、重み付けによる段階的リリースなど様々なケースで使えて利用シーンも広がりそうです。