WebJobs がついに本稼働
このポストは、10 月 22 日に投稿された WebJobs goes into full production!! の翻訳です。
はじめに
WebJobs はマネージド プラットフォーム向けのあらゆる機能を備えたコンピューティング ソリューションです。このランタイムを使用すると、さまざまな選択肢の中からコードの実行方法 (Cron、サービス、手動) を選ぶことができます。Azure Websites をプラットフォームとしているため、WebJobs は数多くの素晴らしい機能を継承しています。Azure Scheduler を使用するとさまざまなスケジュール設定が可能になります。また、ASP.NET チームが開発した WebJobs SDK を使用すれば、Blob、Queues、Tables、Service Bus といったさまざまな種類の Azure コンポーネントと対話するコードを瞬時に作成できます。さらに、Visual Studio のリッチなツール群にはあらゆる機能がシームレスにパッケージされています。ここでは、こうしたさまざまな機能の連携によって得られる相乗効果についてご紹介したいと思います。
WebJobs とは?
ローカル マシンでプログラムやスクリプトを問題なく実行できるのであれば、その後やらなければならないのは、クラウドにアップロードすることだけです。とてもシンプルですね。Azure にサインアップしてからコードをアップロードし実行するまでには 5 分もかかりません。WebJobs は、フル機能を搭載したマネージド クラウドベースのホスティング プラットフォームと汎用コンピューティング環境が 1 つになったソリューションです。つまり、マネージド プラットフォーム上のコンピューティング ソリューションであり、コードの実行や連続実行を管理してくれるので、ユーザーがやらなければならないのは、本当にプログラムをフォルダーに置くことだけです。
クラウドでコードを実行
クラウド上で稼働する WebJobs でプログラムを実行すれば、複数のマシンにプログラムをスケーリングして、レプリケーションや並列処理を効率的に行い、ロード バランサーを追加してパフォーマンスを最適化できます。Azure Traffic Manager を使って処理をグローバルに分散したり、Azure Websites の VNET 経由で自分のサーバーの接続したりすることも可能です。WebJobs はインフラストラクチャやさまざまな機能が用意された Azure Websites 上で稼働します。
ツール
WebJobs の使用においてとりわけ重要なのが優れたツールの存在です。Visual Studio は WebJobs をサポートしているので、Visual Studio で直接 WebJobs プロジェクトを新規作成してコードを Azure に発行できます。さらに、リモート デバッグ セッションをアタッチして、クラウド上でコードをリアルタイムでステップスルーすることもできます。
また、WebJobs SDK が用意されているので、よく使うタスクを実行するコードを簡単に作成できます。WebJobs SDK は Azure SDK をベースとした抽象化です。複雑なタスクやオブジェクトを C# プリミティブとバインドできるので、細かいしくみを気にすることなく使用できます。
監視とデバッグ
また、WebJobs には実行中のコードを監視、デバッグ、最適化するための専用ダッシュボードが用意されています。WebJobs ダッシュボードでは、実行時のコードのさまざまな情報を確認できます。すべての関数の実行のタイミングやパラメーター、実行時間、コール スタックなどあらゆるものを実行時にチェックできます。リモート デバッグ機能を使うと、まるでローカル マシン上で実行しているかのように、クラウドで実行中のコードにステップインできます。
ランタイム
さらに、WebJobs は手動、API 経由、Websites と同時実行、連続実行 (“Always On” 機能を利用)、スケジュール設定といったさまざまな方法で実行できます。WebJobs は特定の時刻に 1 回だけ実行させたり、定期的に実行させたりすることができます。スケジュールの設定は Azure Scheduler で行います。Azure Scheduler には考え得るあらゆるスケジュール設定オプションが用意されています。
その他の情報
WebJobs のコンポーネントはほぼすべてオプションであり単独で機能するため、自分の思いどおりに柔軟に利用できます。WebJobs の情報やユース ケースは膨大ですが、その多くを「Azure WebJobs に関するおすすめのリソース (英語)」にご用意しています。最高のパフォーマンスを引き出すには、最新の Visual Studio 更新プログラム (英語)、Azure SDK、WebJobs SDK (英語) を入手してください。
機能一覧
ランタイム
トリガー起動 (スケジュール設定/オンデマンド)
- システム ログやユーザー アウトプットへのアクセス
- 正常なシャットダウン
- 通知用の Webhook
- パラメーターを引数として渡す
- 手動で実行 (オンデマンド)
- 指定時刻に実行するようにスケジュール設定
- 繰り返しスケジュール実行
- 高度なスケジュール設定/Azure Scheduler
- 構成可能な再試行とエラー時のアクション
連続実行
- システム ログやユーザー アウトプットへのアクセス
- 単一/並列モード
- 正常なシャットダウン
- “Always On” を利用
設定ファイル (オプション)
- 構成可能な再起動時間とタイムアウト
- トリガー実行の履歴サイズ (実行回数)
サポートされているスタック
- cmd、bat、exe、ps1、sh、php、py、js、jar …
API
- REST API、Powershell
ダッシュボード
- 監視と診断
SDK
バインド
- Blobs、Tables、Queues、Service Bus
- C# プリミティブへのバインド
- Stream、String、TextReader/TextWriter など
並列処理
- 単一/複数の Queue アイテム
- Queue アイテムの並列処理
- Queues/ Blobs の有害メッセージ処理
- 非同期関数
トリガー (Azure Storage と Service Bus)
- Queues、Blobs、Service Bus の新規作成時
- BLOB の修正時
WebJobs の監視機能
- 関数レベル、呼び出し、パラメーター
- 実行時間、I/O、基本プロファイルなど
WebJobs 用ダッシュボード
- 呼び出しと再実行
- 関数間の因果関係 (チェーン)
- Blobs の検索
エラー処理
- 再試行
- WebJobs シャットダウンのサポート
Visual Studio
WebJobs を発行
- WebJobs を Websites で発行
- コンソール アプリを WebJobs として発行
WebJobs の連続実行
- 開始と停止
- ダッシュボードを表示
- デバッガーのアタッチ
WebJobs のトリガー起動
- 実行
- ダッシュボードを表示
WebJobs の新しいプロジェクト テンプレート
- スケジュール実行と連続実行
Server Explorer との統合
- VS から右クリックでリモート デバッグ
Server Explorer との統合
- VS から右クリックでリモート デバッグ
その他の機能
Azure Websites から継承した機能
- Visual Studio Online はスクリプトの編集が可能
- オート スケーリング (CPU、リソース、スケジュールの監視)
- Websites の環境変数を共有
- デプロイメント関連のオプション、機能、ツール
- Process Explorer で CPU などのリソースを確認
- Azure Traffic Manager による地理的分散