ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

書籍「Microservices on Azure」の感想

先月の JAZUG の勉強会で Azure Service Fabric の話を聞いて、読んでみたくなった書籍でした。既にマイクロサービスという用語がバズワードになっている感もあって、実際どうなんだろうなあと思っていましたが、de:code 2016 に参加してその重要性を肌で感じたので購入しました。

Microservices on Azure

Microservices on Azure

  • 作者: ボブ・ファミリア,株式会社クイープ
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/04/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

なぜ今マイクロサービスなのか

クラウドを使うことが当たり前の時代となり、顧客の要求は絶えず変化し、そのスピードも速くなっています。エンジニアは、より多くの機能を、より短い時間で、より少ないリソースで提供することが求められます。もっとクラウドのメリットを活用して効率よくアプリケーションを開発したくなるわけです。
そのためには、開発だけではなく、デプロイメントやメンテナンスも含めた全体のプロセスを変えていく必要があり、第1~3章ではモノリシックな階層型アーキテクチャと比較しながら、マイクロサービスの重要性を分かりやすく解説しています。

リファレンス実装

第4~7章では、Azure Storage、SQL Database、DocumentDB、Redis Cache、Web Appsなど基本的なサービスに加え、IoT で使うことが多い Event Hubs や Stream Analytics も含めて、概要とリファレンス実装が記載されていて、Azure 初心者にも易しいです。
Azure PowerShell を使った自動化も含まれているので、継続的インテグレーションやデプロイまで試すことができます。ちなみに、Azure API Management について書かれている本を読んだのは、初めてでした。

Azure Service Fabric

第8章では、Azure Service Fabric の概要やプログラミングモデルが分かりやすく解説されています。プレビューだった頃のバージョンですが、Service Fabric SDK をインストールして、ローカル環境で試す手順も記載されています。実際にコードが記載されていると、具体的なイメージがつかみやすくて良かったです。

まとめ

これまでのクラウドの普及と進化が、どうしてマイクロサービスにつながってくるのかを整理できた気がします。クラウドプラットフォームにどんなアーキテクチャでアプリケーションを開発していけばよいのか、いま改めて考える際のガイダンスがマイクロサービスだと思いました。

余談

デスクの横に積み上げられていく書籍の山を増やしたくなかったので、Kindle Paperwhite を購入しました。ブラックの Wi-Fi モデルに純正カバーもつけました。だいぶ割高感のあるカバーでしたが、Amazonプライム会員で 4,000円OFF だし、まあ良しとしました。

Kindle Paperwhite Wi-Fi 、ブラック、キャンペーン情報つき

Kindle Paperwhite Wi-Fi 、ブラック、キャンペーン情報つき

Amazon Kindle Paperwhite用レザーカバー、ミッドナイトブルー (Kindle Paperwhite専用)

Amazon Kindle Paperwhite用レザーカバー、ミッドナイトブルー (Kindle Paperwhite専用)

スマホやタブレットと比べて、文字が読みやすいですし、軽くて薄いので気軽に持ち運べて便利です。紙の書籍でなくても、十分ありだと思いました。ただ、「1-Clickで買う」ボタンは簡単に購入できて危険なので、調子に乗ってクリックし過ぎないように気をつけたいです。

//build/ 2016 振り返り勉強会で Azure Functions の話をしてきました

csugjp.doorkeeper.jp

先週の土曜日、//build/ 2016 振り返り勉強会に参加して、Azure Functions の話をしてきました

speakerdeck.com

最後にデモした Azure Storage Account Replication の補足です。
https://blogs.msdn.microsoft.com/cloud_solution_architect/2016/05/09/azure-storage-account-backup-azure-automation-runbook-azure-functions/blogs.msdn.microsoft.com

上記のブログが元ネタですが、Blob Trigger を利用して、別ストレージアカウントの Cool Storage にコピーするシナリオでした。
f:id:TonyTonyKun:20160522225248p:plain

Azure Portal から Output Binding に Cool Storage を指定できなかったので、一旦コピー元のストレージアカウントに設定した後、Cool Storage に変更し忘れたことがデモに失敗した原因でした。

また、Blob Trigger を利用する際には、Container 内の Blob が 10,000 を超えた場合の注意事項として、リアルタイムに Trigger されなかったり、Trigger が欠落する可能性を考慮する必要があります。これを回避するには、Queue Trigger を使うことを推奨しています。詳しくは、こちらの公式ドキュメントに記載されています。
azure.microsoft.com

Azure Functions にとって、Trigger のリアルタイム性と信頼性は重要なので、正式リリースするまでには改善してほしい部分です。

planned
How can we improve Microsoft Azure Functions?
  • 47 votes
  • 3 comments

Should be support real-time Storage blob triggers

Azure Functions is awesome! I'd like to propose for more convenience.
Currently, Storage blob triggers do NOT support real-time. Because write at
"https://azure.microsoft.com/en-us/documentation/articles/functions-reference/"

"The Functions runtime scans log files to watch for new or change...

feedback.azure.com

Azure Machine Learning で玉手箱の例題を解いてみる

Global Azure Boot Camp 2016 in Japan で LT した内容を記事にまとめておきます。
gooner.hateblo.jp

Azure Machine Learning を使って、玉手箱の例題を解いてみました。
玉手箱は、就職活動でお馴染みの WEB テストです。その中でも、計数理解テストにある「表の空欄予測」の問題を使います。表中の他の数値から規則性を見て、空欄の数値を答えさせる問題です。
機械学習の手法としては、線形回帰(Linear Regression)を使います。教師あり学習に属し、予測できるもの(関数)を作成する手法の1つです。

例題

こちらのサイトに掲載されている例題を使います。

f:id:TonyTonyKun:20160413182324p:plain

正解は、「A:210」となります。
ML Studio で ソリューション(Experiment)を作成し、この例題を解いていきます。

データのアップロード

例題の表をもとに CSV ファイルを作成します。

f:id:TonyTonyKun:20160413182500p:plain

DATASET - FROM LOCAL FILE メニューから、作成した CSV ファイルをアップロードして、画面中央のスペースにドラッグ&ドロップします。

f:id:TonyTonyKun:20160413182517p:plain

データの分割

必要なデータだけをアップロードしたので、データの正規化は必要ありません。
データを学習用とモデル評価用に分割します。Sprit Data モジュールを追加し、Fractionof rows in the first の値を 0.7 に設定します。

f:id:TonyTonyKun:20160413182637p:plain

この結果、学習用に70% のデータが割り振られることになります。

モデルの作成

線形回帰を使うので、Linear Regression と Train Model の2つのモジュールを追加します。

f:id:TonyTonyKun:20160413182725p:plain

販売量を求めたいので、Train Model の LaunchColumnSelector をクリックして「Sales」を設定します。

f:id:TonyTonyKun:20160413183133p:plain

モデルの評価

予想の販売量を出すために、Score Model モジュールを追加します。

f:id:TonyTonyKun:20160413183248p:plain

Score Model には、入力口が2つあります。左側は学習用、右側は評価用のデータの入り口となります。
次に、予想と実際の比較をするために、Evaluate Model モジュールを追加します。

f:id:TonyTonyKun:20160413183259p:plain

ここまでの操作で学習アルゴリズムの訓練が終わり、モデルを構築できました。

Web API の公開

SET UP WEB SERVICE の Predictive Web Service[Recommended] を実行すると、Web service input と Web service output のモジュールが上下に追加されます。

f:id:TonyTonyKun:20160413183401p:plain

RUN → DEPLOY WEB SERVICE の順序で実行します。Web API の公開が完了すると、テストページに遷移しますので、Test ボタンを押します。

f:id:TonyTonyKun:20160413183417p:plain

4月5日の降水確率と平均気温を入力して、実行します。

f:id:TonyTonyKun:20160413183431p:plain

「209.997288616848」という結果が返ってきましたので、正解の「A:210」にかなり近い結果を取得できたことが分かります。

まとめ

Azure Machine Learning は、機械学習の知識がなくても、ブラウザで簡単に学習アルゴリズムを作ることができます。Web API も公開することができ、テスト機能もあるのですぐに検証できる面白いサービスです。いざ試してみようとすると、データを用意するのが大変なので、身近なデータを使ってみると分かりやすいです。機械学習を本格的に取り組むと敷居が高そうなので、まずは Azure Machine Learning で遊んでみるところから始めてみようと思います。