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.

codeless/serverless develop

394 views

Published on

2017/10/07 dotnetconf Tokyo で利用したスライド

Published in: Technology
  • Be the first to comment

codeless/serverless develop

  1. 1. Codeless / Serverless Flow Develop 2017/10/07 小尾 智之
  2. 2. Self Introduction Attribute1: VB / LogicApps-Flow-PowerApps @twit_ahf Attribute2: 提督 / 殿 / メガネ / クマ / プロレス / もっふり tomoyuki.obi http://el.jibun.atmarkit.co.jp/ahf/ Community: LogicFlow-ja / CLR/H Microsoft MVP for Microsoft Azure(2017.03 ~)
  3. 3. https://www.facebook.com/groups/logicflowja/
  4. 4. Agenda • LogicFlow とは – LogicFlow 基本機能 – LogicFlow の各機能 • LogicFlow による API サーバー構築
  5. 5. トリガ アクション LogicFlow の基本形 イベントをトリガで受け取り 後続のアクションで処理を 行うサーバーレスなもの
  6. 6. LogicApps 従量課金プラン LogicApps AppService プラン https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/ Flow とは課金単位が異なる
  7. 7. LogicApps 新従量課金プラン 現在は一部リージョン限定
  8. 8. LogicApps 仕様と制限 最大実行継続時間 90 日 ストレージリテンション期間 90 日 最小繰り返し時間 1 秒 最大繰り返し間隔 500 日 ForEach レコード数 100,000 Loop Until 回数 5,000 SplitOn 最大数 100,000 ForEach 並列処理数 20 アクション実行数(5分間) 100,000 同時呼出し数 2,500 エンドポイント同時受信数 1,000 エンドポイント読み取り可能呼出し数 60,000 エンドポイント起動可能呼出し数 45,000 ワークフローでのアクション数 250 ワークフロー内部でのネスト数 5 1リージョンでのワークフロー数 1,000 ワークフローごとのトリガ数 10 一つの式での最大文字数 8,192 アクション/トリガ名の文字数 80 コメントの文字数 256 パラメーター数 50
  9. 9. Microsoft Flow 料金プラン 1 ユーザー 25 LogicFlow が定義可能 (リクエスト送付で拡張可能)https://flow.microsoft.com/ja-jp/pricing/
  10. 10. Flow プランでの機能制限 Premium 系コネクタは Plan1 / 2 でのみ利用可能
  11. 11. PowerApps 料金プラン
  12. 12. https://powerapps.microsoft.com/ja-jp/communityplan/ PowerApps コミュニティプラン 既にアカウントを所有していても作成可能
  13. 13. Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch
  14. 14. Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch LogicApps Only
  15. 15. Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch Flow Only
  16. 16. Commin soon・・・?
  17. 17. LogicFlow 基本コネクタ スケジュール OpenAPI(Swagger) 定義された API 呼出 HTTPS リクエスト RSSFTP/SFTP HTTP/HTTPS WebHook Mail(SendGrid) SMTP 変数 制御HTTP レスポンス データ操作 PowerApps プッシュ通知 Flow Button HTML-テキスト変換 PowerApps用プッシュ通知
  18. 18. 条件判断 / Condition IF ~ THEN ~ ELSE(条件分岐) Switch Case(条件多分岐)
  19. 19. 繰り返し / Loop Do Until ループ ループが一定時間内に終了しない場合に タイムアウトとする場合は ISO 8601 形式でタイムアウト条件を設定
  20. 20. 繰り返し / Loop ForEach ループ 規定では 20 アクションの並列動作 operationOptions:Sequential で変更可能 デザイナ上だけで ネストしたループも作成可能
  21. 21. ブロック化 / Scope 処理のブロック化
  22. 22. 実行条件の構成 / RunAfter ブロック化した場合は 「ブロック内部の処理が何か一つでも失敗したら」 という条件で利用できる
  23. 23. 並列分岐 / RunAfter(2) デザイナー上から 並列動作させるアクションを直接設定可能 RunAfter 設定を変更し どのコネクタの後に実行するかを 設定している
  24. 24. 変数/ Variables 初期化を先に実施する必要がある
  25. 25. データ操作 / Compose 関数で行っていたものが コネクタ化され簡易に利用可能
  26. 26. inputArguments.Select(Function(x) Return New With {Key x.orgArg1, Key x.orgArg2, Key Sum(x.orgArg3)} End Function).ToArray 選択/ Selecct 配列オブジェクトの再定義
  27. 27. 再試行ポリシー/ Retry Policy 動作エラーになったものを 何回(Limit) どの程度の間隔で(Duration) 再実行するかを設定
  28. 28. CodeView 上で LogicFlow を直接記載 デザイナーでは未サポート 動作自体は問題なく可能 マルチトリガ / Multi Trigger
  29. 29. 演算子 / Operator . ? ‘ [] ?演算子は特に重要で 値がない事が想定される場合は 必ず使うのがよい
  30. 30. 関数 / Workflow Functions Referencing functions Collection functions String functions Logical functions Conversion functions Math functions Date functions Workflow functions デザイナ上でインテリセンス等サポートはない https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-workflow-definition-language CodeView および関数ダイアログ上でサポートあり
  31. 31. Workflow Functions の書き方 最初の関数のみ @ をつける必要がある 文字列は ‘ でのみ囲める デザイナー上で記載する場合は「詳細設定」 LogicApps なら CodeView で記載するのを活用
  32. 32. Workflow Functions のコネクタ対応 一部関数はコネクタとして提供も行っている
  33. 33. Develop API Server with LogicFlow
  34. 34. Request コネクタ SAS 付の URL が自動生成される POST 以外の動詞も可能 相対パスを設定が可能 クエリパラメータが可能 受け取る JSON データの スキーマを指定
  35. 35. @triggerOutputs() 関数にて呼出時に付与されていた クエリパラメータを取得できる HTTP Request トリガにおけるクエリパラメータ @triggerOutputs()['queries']['test1'] などでパラメータを利用可能
  36. 36. Request コネクタの問題点 SAS 付 URL のためアクセスできれば誰でも利用可能 生成される URL がいかにも Azure な URL LogicFlow 自体にユーザー認証の 仕組みは提供されていない ユーザー認証がない
  37. 37. Function Apps Proxy と API Management Services どちらも LogicFlow を呼び出す プロキシとして利用可能
  38. 38. Function Apps Proxy プレビュー機能のため Function Settings で有効にする
  39. 39. 特定のメソッドで呼び出された際に API を呼び出すことが可能
  40. 40. App Service 認証を利用して API のユーザー認証が可能 AAD や MS アカウントの MS サービスや Twitter や Google アカウントなどの外部 サービスも利用可能
  41. 41. 利用条件の表示や匿名ユーザー対応など Function Apps Proxy より細かい対応が可能 API Management でのユーザー認証 OAuth2.0 や OpenID を利用して 外部プロバイダでの認証も可能
  42. 42. Function Apps Proxy のカスタムドメイン設定 SSL も利用可能 http://blogahf.blogspot.jp/2017/07/azure-function-apps-proxies-ssl.html
  43. 43. API Management は高機能なだけに 価格も高レベル・・・
  44. 44. LogicApps のセキュリティ LogicFlow にアクセスできる IP アドレスの制限を指定可能
  45. 45. LogicApps の呼び出し元 IP アドレス LogicAppsからアクセスした 場合の IP アドレス
  46. 46. Log Analytics 細かい設定なしで LogicApps のログ情報を OMS へと連携が可能
  47. 47. Azure API Apps 同一サブスクリプション上に ある API Apps を呼出可能 トリガ/アクション 両方を利用可能
  48. 48. OpenAPI API Apps での OpenAPI(Swagger)設定 によりダイアログでの表示など カスタマイズ可能 メソッドなどへ属性を付与してデザイナ上の表示を指定 T-Rex ライブラリも利用可能(https://github.com/nihaue/TRex) [HttpPost, Route] [Metadata("Create Message", "Creates a new message absolutely nowhere")] [SwaggerResponse(HttpStatusCode.OK, Type = typeof(SampleOutputMessage))] public async Task<IHttpActionResult> Post([FromBody] [Metadata("Sample Input", "A sample input message")] SampleInputMessage sampleInput) { return await SampleOutputMessage.FromInputAsync(sampleInput); } 参考)https://flow.microsoft.com/ja-jp/documentation/customapi-how-to-swagger/
  49. 49. Azure Function App LogicFlow デザイナー上で 直接 FunctionApp を記述可能 (ただし js のみ)
  50. 50. Azure Functions App にほしい トリガーがない場合 LogicApps のトリガでトラップし Functions App を呼び出す
  51. 51. カスタムコネクタ 既存 API 定義を簡易に利用できるように カスタムコネクタとして登録可能
  52. 52. Hybrid Connection (ServiceBus – Relay) OnPremiss Data Gateway (ServiceBus – Queue) OnPremiss DataGateway 対象コネクタ DataGateway はメッセージを ポーリングする方式でやり取りを行う (リアルタイム性は若干落ちる)
  53. 53. •ルートフォルダ:接続先 PC でのローカルパス (共有はかけなくても大丈夫) •認証タイプ:Windows 認証 •ユーザー名:(マシン名)¥(アカウント) を入力 AD アカウントではないので注意! •パスワード:パスワードを入力 •ゲートウェイ:インストールしたゲートウェイを選択
  54. 54. DataGateway 利用ポート TCP 443 (既定値) / 5671 / 5672 / 9350 ~ 9354 データ送信のみで受信は必要ない HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定
  55. 55. https://msdn.microsoft.com/ja-jp/library/hh169248(v=nav.90).aspx SQL Database コネクタによる取得 SQL 文を直接記載することはできないが Odata Expression による記述が可能
  56. 56. Others…
  57. 57. フロントプロキシ インフラ オンプレミス Azure や他サービス Microsoft サービス
  58. 58. LogicApps の高可用性対応 API Management リダイレクト先の調整 ServiceBus メッセージング形式の構築 Hot-Cold 的に構築 動作中のリージョンで障害発生時に COLD 側へ切り替えさせる (ARM 操作で可能) 常に全てのリージョンで動作するよう構築 LogicApps の課金としては変化なし (トリガで対象データなしは無課金)
  59. 59. LogicApps Ludicrous Mode 高パフォーマンス用 LogicApps 16ユニット以上の構成 高スケール対応が可能 LogicApps 上に仕込みは済んでいるので そう遠くない時期に公開予定
  60. 60. Let’s develop without coding, and Welcome to Serverless !
  61. 61. Appendix • LogicFlow-ja ( https://www.facebook.com/groups/logicflowja/ ) • LogicFlow を扱っている Blog – nrjlog ( http://zuvuyalink.net/nrjlog/ ) – てすとぶろぐ ( http://blogahf.blogspot.jp/ ) • Azure LogicApps ( https://blogs.msdn.microsoft.com/logicapps/ ) • Flow – Blog (https://flow.microsoft.com/en-us/blog/) • PowerApps – Blog (https://powerapps.microsoft.com/en-us/blog/) • Twitter Hashtag – LogicApps → #LogicApps – Flow → #MicrosoftFlow

×