Azure Webサイト にある Webジョブ。 存在は前から知ってたんだけど、使ってなくて、先日ようやく使ってみたら、めちゃくちゃ便利だったので、 SNS でつぶやいたところ、ブログにまとめてーとリクエストを頂いたので、タイプし始めました。 まずは Microsoft Azure の Azure Webサイト。 簡単に Web アプリケーションをデプロイして、全世界に公開することができる PaaS。 用途にもよると思うけど、IaaS と比べたら、そのメンテナンスの手間はくらべものにならないくらい楽。 スケールアウト、スケールアップも管理ポータルから誰でも直感的にできちゃう。 車で言えば、電子制御なマニュアルシフトや自動ブレーキ、クルーズコントロール、アラウンドビューモニターがついたミドルクラスのオートマチックなハイブリッド車といったところでしょうか。 そんな Azure Webサイト にある Webジョブ。 一言で言うと、様々な言語で書かれた定型的なバッチ処理を アップロードして、スケジューリングできるというサービス。 (実際は Azure スケジューラが使用されています。) ちなみに Webジョブ 自体は GitHub で詳細が公開されてますので こちら を参照してください(英語です)。 なお、プログラムを作成して、ZIP に圧縮してアップロードするのですが、 圧縮前のフォルダに含まれる実行可能なファイルの拡張子は以下の通り。 (VSからデプロイする場合は、自分で圧縮する必要はありません)
.NET 以外はもちろん、単純な .bat や .ps1 なんかも使えるとなると、 開発者の方だけではなく、インフラ系 の IT Pro の方にも歓迎されるのではないでしょうか? (どなたか .NET 系以外のプログラムを試してくださーい) これ何に使えるとかと言うと、例えば、ECサイトの日次締め処理、BI 用の DWH へのデータ連携。 トリガーを指定して実行可能なので、ちょっと時間のかかる処理をオンデマンドで任せることができます。 なので、SignalR を使用して Web ブラウザに対して、プッシュ通知的なこともやろうと思えば、 できちゃうのですが、まぁ、普通は モバイルサービス を使いますね...w なお、すごく重い処理については試してません。 たしか Azure の別サービスで Azure Batch がプレビューですが、あったりするので、 大規模なものはそちらでやるべきなのかもしれません。比較はしてないので詳しい方、教えてくださいw ------------------------------------------------------------- さて、ここからが本題。 今回は可能な限り簡単にということで、手順を最も少なくすることをテーマにします。 <前提> ・Visual Studio 2013 Pro 以上(Community Edition でも可) ・Azure SDK インストールされていること ・C# <手順>
これだけです。簡単ですね! 1.Azure Web サイトを準備 Azure 管理ポータルで Web サイト を作成しておきます。今回は同時にデータベースも作成しておきます。 Webサイトを作成 データベースも一緒に作成 作成したデータベースに SQL Server Management Studio から接続 今回作成した AccessInfo テーブルの定義 2.Visual Studio でコンソールアプリケーションを作成 今回は実行時の現在時刻を DB に保存するという簡単なアプリケーションを作成します。 コンソール アプリケーションを作成 Main.cs にすべての処理を書きます。 EntityFramework にて DB からコードファーストで作成した DbContext クラス(WebJobTestModel.cs) AccessInfo テーブルのエンティティクラス(AccessInfo.cs) 3.作成したアプリをデプロイ 最初に Web サイトを作成しましたが、Webアプリとしては空です。 今回は Web ジョブを 試すために、Web ジョブ で動作させるアプリのみデプロイします。 プロジェクトを右クリック ⇒ [Azure WebJob として発行] をクリック スケジューラの設定。この設定は後から Azure 管理ポータルで編集可能。 今回は [Microsoft Azure Websites] を選択。プロファイルが手元にある人は [インポート] を選択。 先に作成した Web サイトを選択。ここで新たに Web サイトを作成することも可能。 各種設定を確認し、[接続の検証] をクリック。緑のチェックが出たら、[発行] をクリック。 「サイトは正常に発行されました」が表示されれば OK ! 4.Azure 管理ポータルでスケジュールを調整 さきほど VS から発行時にスケジューラの設定があったのですが、確認と調整は Azure 管理ポータルで行います。 Web サイトで [WEB ジョブ] タブを開くと、先ほど発行した、[WebJobTest] が確認できる。 [スケジュール] をクリックすると、スケジューリングが可能。 いちばん右の [ログ] をクリックすると別ページでログが確認できます。 [スケジュール] をクリックするとこの画面に飛んでくる。 Azure の スケジューラ 画面。 スケジューラの詳細設定。 5.ログの確認と SQL データベースの確認 Azure 管理ポータルの Webサイトの [Web ジョブ] ⇒ 一覧右端の [ログ] にあるリンクをクリックするとこの画面が開く。ジョブの実行履歴が見れる。黄色のリンクをクリックすると、ログの詳細が確認できる。 ログの詳細画面。Console.WriteLine() で出力した内容が確認できる。 SQL Server Management Studio からインサートされたデータを確認。 どうでしょう?簡単でしょ!! ポイントは Azure Web サイトの Web ジョブというサービスを使用して、そこにやりたいことを記述したプログラムを作成して、アップロードできることです。スケジューラやトリガーという起動の仕組みはすべて揃っている。アプリから見たら、インフラはそこにあるということです。開発者は本当にやりたいことだけに注力できる。なので、まずはローカルでやりたいこと、必要な処理を作り切っちゃいましょう。できたら、それをポイッとデプロイ♪ プログラムは Web サイトにアップしますが、ぶっちゃけその Web サイトとは全く関係のないプログラムをあげることだってできちゃう。 (これはさすがに無意味ですが...) そして、アップしたプログラムには URL が振られますので、その処理をオンデマンドで Web アプリケーションから起動することも可能。例えば、画像処理や CSV アップロード等、ブラウザからだとちょっと重い処理なんかは、切り出しておいて、Webアプリから非同期で呼んでおく。出来上がったら、通知を返す、DBに登録するといった、これまで Webロール + Worker ロールに任せていた処理を、Webサイト + Webジョブ に置き換えることもできるかと。ま、サイト要件が許せば、ですが。。。 ちなみに今回は、VS からデプロイをしましたが、ビルドした Release フォルダを ZIP に圧縮し、Azure の管理ポータルから主導でアップロードすることも可能です。ただ、おすすめは VS からデプロイです。なぜなら、管理ポータルへの手動アップロードは、更新に対応していないようなので、一度 Web ジョブを削除して、改めて追加する必要があるからです。VS からのデプロイは更新に対応しています! それと、最新の VS への更新(正確には Update3 以降だったかな?)を適用していれば、[新しいプロジェクト] ⇒ [Cloud] ⇒ [Azure WebJob] というテンプレートが選択できるのですが、何回か試したところ、Azure ストレージを使う想定になっているようで、ちょっと使いづらかったです。なので、実業務では今回のように何らかの DB への処理をバッチにすることが多いと思いますので、そういう場合は、コンソールアプリケーション を作成してデプロイで十分だと思います。 また、Console.WriteLine() に文字列を渡せば、Azure WebJobs dashboard にログとして出力されるのですが、日本語を出力すると、文字化けしちゃうので、英数字のみにしましょう。 詳細はソースを公開しますので、そちらを参照してください!!! ※今回使用したソースファイルは以下からダウンロードできます。
0 コメント
ブログスタート!!& 初めての SQL Server Analysis Services
初めまして。清水と申します。セカンドファクトリーという会社で開発者、SEをしております。これまで主に開発者をしてきました。現在は自社のサービス開発、展開、保守運用を担当しております。途中、フリーランスで仕事をしていたこともありますが、現在は会社員です。あまり自覚はありませんが(笑) なお、お約束ですが当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。あしからず。 ブログをはじめようと思ったのは、これまで主にマイクロソフト製品に関して、幅広く開発、展開等に関わってきましたが、そろそろ何かひとつ軸を作りたいなと思ったからです。当ブログでは主に技術の話をすることになると思いますが、技術者のための技術を語るつもりはあまりありません。それよりも、普通の人が使うのにより使いやすく、手軽に使えるようにご紹介することを目的としております。あるいは本当にユーザーの為を思ってシステム構築・開発をしている技術者の方向けの話にしようと思っています。 システム構築をするのは技術者かもしれませんが、使うのは普通の業務担当者ですから。IT技術者が普通のユーザーを意識して、普通の言葉で話せることが必要だと思い、始めた次第です。 記念すべき当ブログ第1回となる今回は SSAS + Excel についてのお話です。 というのも、よく考えたら SQL Server Analysis Services (SSAS) はこれまで存在を知っていたけど、使ったことがなかったことに以下で紹介する参考書籍を読んでいて、ふと気が付いたので今回 SSAS の環境を構築してみました。 SSAS とは簡単に言うと、様々な DB や Web サービスにあるデータの予測、クラスター分析といったデータ分析(データマイニング)をする為に必要となる SQL Server のサービスです。このサービスを利用すると、日常的に扱う Excel 上のデータも簡単にデータマイニングすることができます。 さて、日常業務の中で、業務データの多くは Excel に存在することが多いのではないのでしょうか? その Excel にあるデータを「さて分析しよう」と思っても、世の中的にはサーバーやクライアント PC に高額な BI ツールを準備しなければできないと思っている人が多く、思い立ってもすぐ実践とはいかないのが現実です。 そこで SQL Server 製品版を利用します。現在発表されている DB のシェアからすると、どこの企業にも1台くらい SQL Server がインストールされたサーバーくらいあるのではないでしょうかwww 最新の SQL Server 2014 のエディションで言えば、製品版である Standard Edition 以上であれば SSAS は追加費用なく、インストールできます。あるいは試用版が 180 日限定使用でダウンロードできるので、情報システム部門で試してから、全社や関係部門に展開ということも可能です。 そして、今回のクライアントツールは Excel です。できれば、最新の Office 2013 がインストールされていることが望ましいですが、これも昨今の Office 365 のシェアを鑑みたら、気にすることはない気がします。また、仕事でデータ分析がしたいと思っている部署の人のマシンに Excel がインストールされていないことも考えにくいので、これも今回は気にしませんw なお今回の参考書籍は以下です。 日経BP社 Excel & Power BI による企業データ分析入門 http://ec.nikkeibp.co.jp/item/books/P98370.html さて、この本の中では Windows 8.1 環境に SQL Server 2014 をインストールしています。 もちろんこの方法で SSAS をインストールして、Excel からアクセスすることは可能ですし、まったく問題ありません。 ですが、ユーザー企業に SSAS を導入する、あるいは情報システム部門の方が自社に SSAS を導入することを考えると、一つのマシンにオールインワンでインストールするのはお勧めできません。なぜなら SSAS を利用し分析を担当される方のすべてのマシン1台ずつに SSAS をインストールするのは、コスト的に現実的ではないからです。 では最小構成でマシンを用意するのであればどうすればよいかと言うと、やはり SQL Server はサーバーへインストールし、そこにアクセスするクライアント PC があればよいということになります。繰り返しになりますが、多くの企業ではクライアント PC に Excel は既にインストールされているはずですから、とりあえずサーバーのみ環境構築が必要ということになります。これならコスト的に問題ないでしょう。 というわけで、今回は Windows 8.1 Update の Hyper-V に仮想マシンとして Windows Server 2012 R2 Update を用意しました。 つまり クライアントPC:Windows 8.1 サーバー:Windows Server 2012 R2 です。 ツカミと冒頭で長くなってしまったので、実際の環境構築手順については次回紹介させて頂きます。実はそんなに難しいことはないのですが、1点だけハマる点がありますので、そこを次回紹介させて頂きます。 こんな感じでマイクロソフト製品を使用した ビッグデータ や BI に関する内容を伝えていきたいと思っております。 これからよろしくお願い致します。 |
AuthorYugo Shimizu 株式会社セカンドファクトリー在籍。アーキテクト。主にマイクロソフト系技術を使っております。C#、.NET、SQL Server 等。最近は Power BI や IoT, Web API 等に興味あり。
このブログは IT を普通の人が使えるものにする 民主化 をテーマにしています。 Archives
10 月 2020
Categories
すべて
|