Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Retry Monadfor Transient Fault HandlingF#とWindows Azure と私                      2012.04.14 #CLRH69   ぜくる/@zecl
ぜくる      twitter : @zecl• 北海道旭川市在住の.NET系プログラマ。オブ  ジェクト指向を得意としながらも、ここ数年、  関数型言語に魅了されています。• F#が大好きです。• Windows Azure と ASP.N...
???
ところで、Windows Azure いいですよね                   年賀状いただきました。
でも、いいことばかりじゃない。• クラウドアプリケーションだと、気をつけなく  ちゃいけないことがたくさんあるよね。
Transient Fault Handling• 他のクラウドサービスに依存するようなクラウ  ドアプリケーションを開発する場合、開発者が  対処しなければならない課題の一つに、  “一時的な障害”がある。インフラストラクチャレベルの障害だっ...
SQL Azureが接続を切断するケース   過剰な      実行時間の長い リソースの使用      クエリ 1 回の実行時間     接続の が長いトランザ    クション    アイドル状態
Microsoft Enterprise Library 5.0Integration Pack for Windows Azure• Transient Fault Handling Application Block (Topaz)Wind...
Microsoft Enterprise Library 5.0Integration Pack for Windows Azure• Autoscaling Application Block (WASABi)利用時間帯やサーバー負荷のパター...
Topazの主要な構成要素• 検出戦略(カスタマイズ可能)  ITransientErrorDetectionStrategyインターフェイスを実装して作成• 再試行戦略(カスタマイズ可能)  RetryStrategy抽象クラスを継承して作成...
基本的な使い方(C#)
4つの組み込み検出戦略• SQL Azure SqlAzureTransientErrorDetectionStrategy• Windows Azure ストレージサービス StorageTransientErrorDetectionStra...
F#でクラウドと言えば・・・
M-Brace          cloudモナド          が話題に…          (・∀・)イイネ!
モナドって何ですか?
モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?    フィリップ・ワドラー
モナド則• return x >>= f == f x• m >>= return   == m• (m >>= f) >>= g == m >>= (¥x -> f x >>= g)
モナド則(Haskellのdo記法で)• do { v <- return x; f v } = do { f x }• do { v <- m; return v } = do { m }• do { x <- m;       y <- f...
モナド則(F#のコンピューテーション式で)• builder.Bind(builder.Return(x), f) = f x• builder.Bind(m, fun x -> builder.Return(x)) = m• builder....
モナド則って何を言わんとしている?• 左右単位元 return が存在し、  且つ結合法則が成立するもの
Retry Monadfor Transient Fault Handling                    とはなんですか?わたしが考えたオリジナルのモナド一時的障害が発生するかもしれない計算について、異なるポリシーを適用しながらリト...
OOPとFPのライブラリのチカラを借りよう• Microsoft.Practices.TransientFaultHandling.CoreMS EL 5 Integration Pack for Windows Azureの心臓部。WASAB...
ソースコードを見てみましょう…
Retry monad for transient fault handling
Retry monad for transient fault handling
Retry monad for transient fault handling
Retry monad for transient fault handling
Retry monad for transient fault handling
Retry monad for transient fault handling
Upcoming SlideShare
Loading in …5
×

Retry monad for transient fault handling

3,131 views

Published on

CLR/H 69 LT

MSDN - Code Recipe
http://code.msdn.microsoft.com/F-Retry-Monad-for-35ee1e72

  • Be the first to comment

Retry monad for transient fault handling

  1. 1. Retry Monadfor Transient Fault HandlingF#とWindows Azure と私 2012.04.14 #CLRH69 ぜくる/@zecl
  2. 2. ぜくる twitter : @zecl• 北海道旭川市在住の.NET系プログラマ。オブ ジェクト指向を得意としながらも、ここ数年、 関数型言語に魅了されています。• F#が大好きです。• Windows Azure と ASP.NET MVC3を利用した 開発のお仕事をしています。
  3. 3. ???
  4. 4. ところで、Windows Azure いいですよね 年賀状いただきました。
  5. 5. でも、いいことばかりじゃない。• クラウドアプリケーションだと、気をつけなく ちゃいけないことがたくさんあるよね。
  6. 6. Transient Fault Handling• 他のクラウドサービスに依存するようなクラウ ドアプリケーションを開発する場合、開発者が 対処しなければならない課題の一つに、 “一時的な障害”がある。インフラストラクチャレベルの障害だったり、ネットワークの問題など一時的な条件のために発生する障害のことです。
  7. 7. SQL Azureが接続を切断するケース 過剰な 実行時間の長い リソースの使用 クエリ 1 回の実行時間 接続の が長いトランザ クション アイドル状態
  8. 8. Microsoft Enterprise Library 5.0Integration Pack for Windows Azure• Transient Fault Handling Application Block (Topaz)Windows Azureのプラットフォームに含まれるサービス利用時に発生する一時的なエラー(一時的/過度に発生するエラー)からWindows Azureアプリケーションを回復させるために用意されたアプリケーションブロック。
  9. 9. Microsoft Enterprise Library 5.0Integration Pack for Windows Azure• Autoscaling Application Block (WASABi)利用時間帯やサーバー負荷のパターンに合わせてルールを設定し、そのルールをログから評価して自動スケールなどを設定できるアプリケーションブロック。
  10. 10. Topazの主要な構成要素• 検出戦略(カスタマイズ可能) ITransientErrorDetectionStrategyインターフェイスを実装して作成• 再試行戦略(カスタマイズ可能) RetryStrategy抽象クラスを継承して作成 検出戦略 + 再試行戦略 = RetryPolicy
  11. 11. 基本的な使い方(C#)
  12. 12. 4つの組み込み検出戦略• SQL Azure SqlAzureTransientErrorDetectionStrategy• Windows Azure ストレージサービス StorageTransientErrorDetectionStrategy• Windows Azure サービスバス ServiceBusTransientErrorDetectionStrategy• Windows Azure キャッシングサービス CacheTransientErrorDetectionStrategy
  13. 13. F#でクラウドと言えば・・・
  14. 14. M-Brace cloudモナド が話題に… (・∀・)イイネ!
  15. 15. モナドって何ですか?
  16. 16. モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも? フィリップ・ワドラー
  17. 17. モナド則• return x >>= f == f x• m >>= return == m• (m >>= f) >>= g == m >>= (¥x -> f x >>= g)
  18. 18. モナド則(Haskellのdo記法で)• do { v <- return x; f v } = do { f x }• do { v <- m; return v } = do { m }• do { x <- m; y <- f x; gy}= do { y <- do { x <- m; f x }; gy}
  19. 19. モナド則(F#のコンピューテーション式で)• builder.Bind(builder.Return(x), f) = f x• builder.Bind(m, fun x -> builder.Return(x)) = m• builder.Bind(builder.Bind(m, f), g)= builder.Bind(m, fun x -> builder.Bind(f x, g))
  20. 20. モナド則って何を言わんとしている?• 左右単位元 return が存在し、 且つ結合法則が成立するもの
  21. 21. Retry Monadfor Transient Fault Handling とはなんですか?わたしが考えたオリジナルのモナド一時的障害が発生するかもしれない計算について、異なるポリシーを適用しながらリトライ処理を行い、ひとつの計算として包括的に扱うことができるモナド。RetryMonadの計算結果はChoice<’T1,’T2>型で得ることができ、Eitherモナドで処理することができる。
  22. 22. OOPとFPのライブラリのチカラを借りよう• Microsoft.Practices.TransientFaultHandling.CoreMS EL 5 Integration Pack for Windows Azureの心臓部。WASABiとTopazを含むC#(オブジェクト指向プログラミング)で書かれたライブラリ。 • Fsharpx.CoreFsharpxの心臓部。標準的なモナドの実装などを含むF#(関数プログラミング)で書かれたライブラリ。
  23. 23. ソースコードを見てみましょう…

×