OSC (オープンソースカンファレンス) 2018 北海道 ~ ハンズオンの補足

今回のハンズオンで触れたの補足記事になります。参加者向けとなります。

https://osc2018-kitaazu.azurewebsites.net/

の下部にある share からスライドを見ていただくとわかるかもしれません。

[slideshare id=104957665&doc=20180707kitaazuv5-180709124212]

要約

今回の実装したところは以下のようになります。
Basic C# テンプレートを元に、特定のアクティビティ (メッセージ)で、添付ファイル (Attachment Class)があるときだけ、Bot Frameworkが提供してくれているイメージのURLを引数として、Custom Vision – Custom Vision Prediction 2.0 – PredictImageUrl を呼び出し、結果を文字列にして返す。

Bot Service

ボットの実装をぐっと楽にしてくれるものになります。
https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-3.0

Bot Framework Bot Builder (https://github.com/Microsoft/BotBuilder)

また、ハンズオン中にこれはどういうメンバーを持っているか?といったような質問がありました。リファレンスとして参照するものは、. NET SDK のものを見ていただければよいかと思います。(下のリンク)

https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-overview?view=azure-bot-service-3.0

C# スクリプト

今回のハンズオンでは、.NET を扱えて、Visual Studio が不要な C# スクリプト(.csx)をベースに、API呼び出しを追加しました。この記事(++C++; // 未確認飛行 C – C#スクリプト実行)を参考にするとわかりやすいかもしれません。 #r で必要とするアセンブリの参照を追加すること。 #load で追加した csx ファイルを読み込んでいます。それ以外は、スクリプトではない、C#と全く同じになります。

Visual Studio を使って、C#として同じこともできますので、Visual Studio をお持ちの方はそちらのほうが、ぐっと楽になります。

Custom Vision プレビュー

ボットの判断能力となるものになります。概要としては、こちらを
これは、画像と分類を教えてあげることで勉強してくれます。
成果として、画像を分類してくれます。教えられたそれぞれの分類に対して、0 ~ 1.00のスコアが与えられます。展示・ハンズオン用の「ラムネ判別機」は、ラムネ、ボトル、チュアブル、飲み物、フローズン、などの分類を教えました。
これは、ブラウザで作ることができるため、今回のハンズオンにぴったりでした。また、受け取った画像は、学習データとして蓄積させていくことができます。もちろん、学習データとして蓄積しないようにもできます。
ラムネ判別機の画像は100程度からスタートして、展示中も学習を続けて130枚程度になりました。

App Service

Web Chat を配置したものになります。概要としては、こちらを
見ていただくとわかりますが、本来はアプリケーションを動作させるものです。
が、今回はオンラインでの編集機能を使いたいためこれを利用しました。
App Service Editor

Azure Functions

ボットの本体の部分です。
しかし、これは、Bot Service (Functions Bot)の一部となります。
概要はこちら

まとめ

というわけで、実はこのハンズオンに参加された方、30分弱で大きく3つ以上のサービスに触れていました。
目的としては、動くものができる!としていましたので、それぞれの使い方を触れる時間はありませんでした。
なお、プレビューの機能も含まれていることは注意してください。
もしどこかの機能に興味があれば、ぜひ、チャレンジしてみてください!
それでは!

ClearDBから、Azure Database for MySQL(Preview) への移行

このブログを作ったときから、ClearDBを使い続けていましたが、今年になって、Azure としてMySQLのマネージドサービスが出た(Preview)ということで、マイグレーションしてみました。

参考にしたのはこの記事
(ほぼそのまま)

https://azure.microsoft.com/ja-jp/blog/cleardb-migration-to-azure-database-for-mysql/

やったこと

  1. リンクの「https://dev.mysql.com/downloads/workbench/」からworkbenchをダウンロードしてインストール
  2. Azureポータル上から、ClearDBの接続文字列を拾い集める。ホスト名、ユーザー名、パスワード。
  3. workbenchを起動して、接続先を登録しておく。テスト接続成功でOK
  4. Azureで作っておいた Azure Database for MySQL の接続文字列を取得。ホスト名、ユーザー名、パスワード。
  5. 同様にworkbenchで接続する。このときポータル上から作業している端末のIPアドレスを許可するように設定する。「+自分の IP を追加」を選ぶと早い。
    保存。
  6. あとは、最初の記事のようにマイグレーションウィザードと!
  7. しかし、途中クエリのタイムアウトエラーが起きたので、サーバーパラメーターの「long_query_time」を10から30に変更して何度かRetryして成功。
  8. WordPress側は、ルートにある「wp-config.php」を書き換えた
  9. しかし、SSL接続を強制しているため、接続エラーとなる。(一度Debugを有効にして確認した)
  10. そこで、「wp-config.php」に
    define('MYSQL_CLIENT_FLAGS', MYSQL_CLIENT_SSL);

を追加して無事に完了

レスポンスは気持ち早くなったような気がしている。

何よりこの記事の画像にしているように、パフォーマンスをメトリックで確認できるので、使っていく中で適切なスケールとかも見えてきそうなところ。

 

Paas上のDevOps というものを受講してみて

とあるきっかけからチャレンジ

Welcome to Microsoft’s Azure Paas上のDevOps!

結果からいうと、合格点70%に対して70%!
で、問題の翻訳の質があんまりよくないのもあったけど、
何を聞かれているのか全くわからないのもあった。。。(多分私のスキル不足)

ほかに受講できるもの「azure-skills」

とはいえ、コースの内容は面白いものでした。

5つのモジュールで構成されており、
最初のモジュールは、DevOpsとは、なぜ?といったような考え方から入り、
自動化するアプローチ、どうしていったらいいかとか。

そして中盤からツールの使い方へフォーカスして、
コードを用いた、ハンズオンまで用意されていました。
このとき、Azureのサブスクリプションや、Visual Studio 2015 が必要になりました。
コースや個人差があるとは思いますが、
全体で12時間以上かかっていたような気がします。補足資料もじっくり読むともっともっとかかりそう。

かかるということはそれだけ多くの内容を知ることができるので、
これはVirtual Academyとは比にならないくらい。

おすすめしたい!と思いますー

ハンズオン

一部内容が古いものがあって、今のAzureに当てはめたときに・・・という補完が必要でした。またビルドエラーになるものもあるので、そこを問題ないようにもっていくというのも一つの醍醐味かなぁと。コードはVS2015のASP.NET Coreであるために、xprojが採用されてます。これは既に古い存在なので、もしかしたら時間とともに動かなくなっていくかも…

Bad Request

何日にも分けてやってたりすると、途中Bad Requestが出るので、
プライベートモードにしたブラウザを使うか、クッキーや履歴を消してログインしなおすと大丈夫でした。
(ヘッダーサイズが大きすぎるぞと怒られるらしい)

認定書?

受講した人に聞くところ、私は最終試験70%だったために、特に何もなく終わったのですが、70%以上の成績をおさめると認定書?みたいなものがもらえるようです。
知識・経験不足…がんばろう

Azure Container Instances というサービスが・・・~blackjumbodog-dotnet-core

出てきたので、試してみました。

Fast and Easy Containers: Azure Container Instances

リンクは、公式のBlogです。

 

既に試しており、ざっくりまとめている方(しばやん)のを一読してみてください。

 

というわけで、OSC2017Hokkaidoでは、App Service on Linux でしたが、こちらはどうやら、Hyper-Vレベルで分離したcontainerのゲストインスタンスを利用可能になるサービスのようです。スケーリング等の機能はなく、IaaSに近いようなシンプルなコンテナといったところでしょうか。

実際に作ってみよう

Create your first container in Azure Container Instances

 

公式ではポータルのCLIを使ってとなってましたが、それっぽいテンプレートがポータルにあるのでそっちで試してみました。

イメージは、BlackJumboDog!
darkcrash/blackjumbodog-dotnet-core
ポートは3080をHTTPにしてるのでこれを!
こちら、Linuxベースのイメージになります。

しかしながら、色々試してて、リージョンは選択できるけどデプロイできないみたいな状態なので、今日現在ではおとなしくAzコマンドを使ったほうがいいのだろうと思いました。

加えて、ポータルで出来上がったものは、こんな感じで
あまり、というか情報がありませんでした。

そこで、コマンド

az container list -g [グループ名]
{
 "nextLink": null,
 "value": [
 {
 "containers": [
 {
 "command": null,
 "environmentVariables": [],
 "image": "darkcrash/blackjumbodog-dotnet-core",
 "instanceView": null,
 "name": "bjd-container4-XXXXXXX",
 "ports": [
 {
 "port": 3080
 }
 ],
 "resources": {
 "limits": null,
 "requests": {
 "cpu": 4.0,
 "memoryInGb": 4.0
 }
 },
 "volumeMounts": null
 }
 ],
 "id": "/subscriptions/XXXX/resourceGroups/bjd-container4/providers/Microsoft.ContainerInstance/containerGroups/bjd-container4-j6bvkbkaxarxy1",
 "imageRegistryCredentials": null,
 "ipAddress": {
 "ip": "13.93.166.22",
 "ports": [
 {
 "port": 3080,
 "protocol": "TCP"
 }
 ]
 },
 "location": "westus",
 "name": "bjd-container4-XXXXXXX",
 "osType": "Linux",
 "provisioningState": "Succeeded",
 "resourceGroup": "bjd-container4",
 "restartPolicy": null,
 "state": null,
 "tags": null,
 "type": "Microsoft.ContainerInstance/containerGroups",
 "volumes": null
 }
 ]
}

http://13.93.166.22:3080/

開いたー!ひゃっほー!
ただ、BlackJumboDogのコンソールログは見えないので、ちょっと実感は薄かったw

とはいえ、今までIaaS上にVMを上げてDockerHostを作り、そこにコンテナをのっけるのではなく、Hyper-Vに直接乗っかっているような状態なので、非常にシンプルでわかりやすくリソースの調整もポータル上からできるようになるというのであれば、VMっぽい感覚で、素早くコンテナ作れるってのはちょっとしたものを作る上ではいいんじゃないかと思いました。スケーリングはApp Service On LinuxがPaaSとして存在しているので、そんなすみわけがあるのかなぁと妄想したところでした。

これ、オーケストレーションももちろんだけど。
VNET接続とか、DNSまたはホスト名、LBとかいろいろできるようになったらまた違う可能性ありそうな気がしないでもない。ARMテンプレートとイメージだけでDevOpsとか。
ちょっと、●●ほしいなぁ、おしデプロイするかー!みたいなのも。

 

Azure Functions Runtime

Build 2017
の中でひそかに更新されたBlogがあった。

Introducing Azure Functions Runtime preview

なんというか、Runtime?ってどういうことだろうと思って開いてみたところ。

Azure Functionをオンプレミスでも動かせるようにできるものらしい。

 

最低要件とか

細かいドキュメントは、「Azure Functions Runtime Overview」あたりから

Windows Server 2016 or Windows 10 Creators Update with access to a SQL Server instance.

Windows Server 2016 または、Windows 10 Creators Updateとなっている。
このあたり、Windows Containerに依存している部分があるためと考えられそうだ。また、SQL Serverへの接続も必要と。

機能

このRuntimeが持つ機能は大きく二つ

「Azure Functions Management Role」
ポータルのような管理する機能を提供する

「Azure Functions Worker Role」
FunctionをWindows Containerに展開して実行する

ドキュメントでは、VisualStudio 2017からの直接デプロイもできるとはなっている。

ダウンロードは、Blog記事より下部にある

How do I get started?

Please download the Azure Functions Runtime installer.

からできた。

ちょっとだけ

以下、Windows Server 2016 へのインストールと、インストール後の画面
SQL Serverへの接続を構成しない限り動作しないようだ。
インストール後は再起動が必要となった。