Visual Studio の PowerShell 拡張使用時、関連プロセスが起動していなくてデバッグ実行出来ないことがある。
以下サイトの内容を基に、VS のオプション設定を確認してみる。
Visual Studio の PowerShell 拡張使用時、関連プロセスが起動していなくてデバッグ実行出来ないことがある。
以下サイトの内容を基に、VS のオプション設定を確認してみる。
C# から Automation を使用して PowerShell を実行する場合、基本的に PowerShell の実行権限が必要になる。 以下のように、PowerShell コマンドを実行するコードの先頭で、実行権限設定を行っておく。
Set -ExecutionPolicy Unrestricted -Scope Process
特に Functions のように実行マシンが固定されていない場合は、毎回実行時に権限設定を行う必要があるはず。
WinDiff ではないが、Visual Studio 2017 も IDE に一応 Diff 機能が付いている。
VS のコマンド ウィンドウから使用する。
>Tools.DiffFiles [比較元ファイルのフルパス] [比較先ファイルのフルパス]
例:
>Tools.DiffFiles "C:\temp\diff\mobile.txt" "C:\temp\diff\pc.txt"
フォルダの比較については、残念ながら出来ない様子。
※ アプリのインストールが可能なのであれば、WinMerge などの diff 専用ツールを入れた方が無難
使い方や設定なども関係するかもしれないけど、自分が今まで使ってきた中で気になった点は下記。
基本については、大体以下のページに載ってる。
その上で、自分的に気になる点をまとめてみる。
まず、ホスティング プラン (= 料金プラン) の選択肢は、以下 2 つ
料金に関して両者の大きな違いは、もう名前の通りで、従量課金プランは従量課金、App Service プランは App Service のプランに従い月額固定 (のようなもの)。 なお、Function App を App Service プランで作成する場合は、App Service プランの Free, Shared は選べず、Basic 以上からとなる。 従量課金と App Service プラン間の切り換えは Function App を作成した後は行えないため、よく考えて決める必要がある。 ただ、Function App だったら、作成した環境を一度削除してプランを変えて新たに作成し直すのも、そこまで大変ではないかなと思う。
もう一つ大きな違いとしては、従量課金プランは実行インスタンスを他の開発者の Function App と共有、App Service プランは専有の違いがある。 言い方を変えると、従量課金プランはインスタンスのリソース使用状況についてコントロール不可、App Service プランはコントロール可能となる。 従量課金プランのコントロール不可については実際に使ってみないと分かりづらいが、恐らく予想している以上に安定していない。 うまく行っている時は 3 分ぐらいで完了する処理が、インスタンスの混み具合によっては 10 分以上かかる事があったりするぐらい、安定していない (2018/6 現在)。 処理が遅くなる事自体問題だが、従量課金プランの場合は実行時間が最大 10 分までと言う制限がある為、処理速度の低下が致命的になる可能性がある。 リソースの使用状況をコントロール出来ない以上、従量課金プランを選択する場合は処理速度の低下について発生し得るものとして考慮しておく必要がある。
従量課金プラン
App Service プラン
Free より右は全て App Service プラン (サイズは S について掲載。サイズを大きくすると、搭載メモリや CPU コア数が増える。Premium は V2 について掲載)。 Free は Functions では利用できないが、参考までに掲載。
従量課金プラン (Function のみ) | Free | Basic B1 | Standard S1 | Premium P1V2 | Isolated I1 | |
---|---|---|---|---|---|---|
Function で選択可能 | ● | - | ● | ● | ● | ● |
参考月額 (730h) | 無料枠ありの従量課金 (実行回数+メモリ使用量) | 使用上限ありの無料 | 7,236 円 | 9,648 円 | 19,295 円 | 32,704 円 + (スタンプ料金 14.8 万) |
永続ディスク | 5TB (Azure Files 従量課金) | 1GB | 10GB | 50GB | 250GB | 1TB |
最大インスタンス数 | 200 | - | 3 | 10 | 20 | 100 |
スケール | 自動 | - | 手動 | 手動/自動 | 手動/自動 | 手動/自動 |
コールドスタートの可能性 | ● (20 分アイドルで発生) | - | - | - | - | - |
最大実行可能時間 | 10 分 | - | 無制限 | 無制限 | 無制限 | 無制限 |
スタンプ (=スケール ユニット) | 複数の可能性あり | ? | 基本固定 | 基本固定 | 基本固定 | 専有(?) |
SLA | - | - | 99.95% | 99.95% | 99.95% | 99.95% |
備考 | 共有 VM | 共有 VM | 専用 VM | 専用 VM | 専用 VM | App Service Environment 利用可能 |
スケールする場合は、下記インスタンス情報の単位となる。表には載っていないが、物理 CPU やストレージなどはプランによって使うグレードが変わり、パフォーマンスが変わるらしい (例:HDD -> SSD)。
従量課金 (Function のみ) | Free | Basic B1 | Standard S1 | Premium P1V2 | Isolated I1 | |
---|---|---|---|---|---|---|
1 時間の料金 (スケール時参考) | - | - | 10 円 | 13 円 | 26 円 | 45 円 |
CPU コア数 | 1 (共用) | 共用 | 1 (*1) | 1 (*1) | 1 (*1) | 1 (*1) |
メモリ | 1.5GB | 1GB | 1.75GB (*2) | 1.75GB (*2) | 3.5GB (*2) | 3.5GB (*2) |
一時ディスク | 500MB | 500MB | 11GB (*3) | 11GB (*3) | 21GB (*3) | 21GB (*3) |
最大コネクション数 | 300 | 300 | 1,920 (*4) | 1,920 (*4) | 1,920 (*4) | ? |
最大スレッド数 | 512 | 512 | 無制限 | 無制限 | 無制限 | 無制限 |
*1 VM のサイズによって異なる。S が 1、M が 2、L が 4。言語が JavaScript の場合は、言語の仕様上複数コア時のパフォーマンスアップが見込めないらしいので、1 コアのプランでスケールアウトさせる必要があるらしい
*2 VM のサイズによって異なる。Basic と Standard は S が 1.75GB、M が 3.5GB、L が 7GB。PremiumV2 と Isolated は S が 3.5GB、M が 7GB、L が 14GB
*3 VM のサイズによって異なる。Basic と Standard は S が 11GB、M が 15GB、L が 58GB。PremiumV2 と Isolated は S が 21GB、M が 61GB、L が 140GB。領域自体は各インスタンス毎に作成されるが、使用可能量は全インスタンスでの使用量合計となる点に注意。
*4 App 単位ではなく、VM 全体のリミット。App 単位は無制限。また、VM のサイズによって異なる。S が 1,920、M が 3,968、L が 8,064
上述の表を見ると分かるように、各プランによって一度に使用可能なリソースの上限が異なる。 使用リソースが少ない Function App はスケールのメリットを享受できるが、使用リソースが多い場合、高性能なインスタンスでないと実行できない可能性がある。 例えば、メモリを 1.8GB 使用する Function App の場合、従量課金及び B1, S1 プランではスケール関係なしにメモリが足りず実行できない。
また、状況見る限り、従量課金プランは低スペックマシンで実行して、実行数の増大に対しては大量のスケールアウトで対処するような想定に見えるので、リソースの最小化には特に気を使う必要があるように思える。
従量課金プランと App Service プランの処理速度についてざっくりと比較すると、App Service の B1 プランで他に全くサービスを動かしていない状態で 2 分かかる関数があったとすると、同じ関数を従量課金プランで動かすと、大体 3 分から 10 分ぐらいかかる可能性がある。
一番の懸念事項は、公表されているスペックや料金以外の特記事項として、従量課金プランの動作が安定していない事に尽きる。これは実際にある程度使ってみないと分からないし、今後改善・改悪の可能性もある事項なので、その点も注意。
もっと効率的な使い方があったりするかもしれないのであくまで自分が使った印象になるが、プランの選択については以下の考慮を行う。
※ ネットの情報を見る限り、短時間の処理を行う大量の HTTP リクエストを受け、その際ある程度の処理取りこぼしが発生しても問題ないとかいう状況であれば、従量課金プランの方が適しているのかもしれない(自分は試していないので実際のところは分からないが)
参考 URL
各種トリガーの使い方を簡単に説明。とは言っても、自分が使ったことがあるのが 2 種類しかないので、今の所それだけ。
タイマートリガーは詳細な説明を下記ページに記載
参考 URL
Functions を作成する方法は、Azure ポータルを使ったり Visual Studio を使ったり、いくつかあるが、ここでは一番使われると思われる、Visual Studio を使用した始め方を簡単に記載する。
注:Visual Studio は、基本的に最新の状態で使うこと。Azure Functions 自体が出て間もないサービスと言うこともあり、Visual Studio との統合機能もかなり頻繁に更新されている。使用できる機能や UI なども結構変わるので、ここでの手順も、細かいところは違っている可能性がある。
ここでは、Visual Studio 2017+C# で新規の Functions プロジェクトを従量課金プランで作成してみる。
参考 URL