Top Banner
Codeless / Serverless Flow Develop 2017/10/07 小尾 智之
61

codeless/serverless develop

Jan 21, 2018

Download

Technology

Tomoyuki Obi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: codeless/serverless develop

Codeless / Serverless Flow Develop

2017/10/07

小尾智之

Page 2: codeless/serverless develop

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 ~)

Page 3: codeless/serverless develop

https://www.facebook.com/groups/logicflowja/

Page 4: codeless/serverless develop

Agenda

• LogicFlow とは

– LogicFlow 基本機能

– LogicFlow の各機能

• LogicFlow による API サーバー構築

Page 5: codeless/serverless develop

トリガ

アクション

LogicFlow の基本形

イベントをトリガで受け取り後続のアクションで処理を行うサーバーレスなもの

Page 6: codeless/serverless develop

LogicApps 従量課金プラン

LogicApps AppService プラン

https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/

Flow とは課金単位が異なる

Page 7: codeless/serverless develop

LogicApps 新従量課金プラン

現在は一部リージョン限定

Page 8: codeless/serverless develop

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

Page 9: codeless/serverless develop

Microsoft Flow 料金プラン

1 ユーザー 25 LogicFlow が定義可能(リクエスト送付で拡張可能)https://flow.microsoft.com/ja-jp/pricing/

Page 10: codeless/serverless develop

Flow プランでの機能制限

Premium 系コネクタは Plan1 / 2 でのみ利用可能

Page 11: codeless/serverless develop

PowerApps 料金プラン

Page 12: codeless/serverless develop

https://powerapps.microsoft.com/ja-jp/communityplan/

PowerApps コミュニティプラン

既にアカウントを所有していても作成可能

Page 13: codeless/serverless develop

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

Page 14: codeless/serverless develop

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

LogicApps Only

Page 15: codeless/serverless develop

Enterprise Integration

SNS

Office365 / Dynamics365

Data Connect

Web Service

Azure Service

Online Storage

NotificationStandard Connecter

Cognitive Service

Button

Approval Batch

Flow Only

Page 16: codeless/serverless develop

Commin soon・・・?

Page 17: codeless/serverless develop

LogicFlow 基本コネクタ

スケジュール

OpenAPI(Swagger) 定義されたAPI 呼出

HTTPS リクエスト

RSSFTP/SFTP

HTTP/HTTPS

WebHook

Mail(SendGrid)

SMTP

変数

制御HTTP レスポンス

データ操作

PowerApps

プッシュ通知

Flow Button

HTML-テキスト変換

PowerApps用プッシュ通知

Page 18: codeless/serverless develop

条件判断 / Condition

IF ~ THEN ~ ELSE(条件分岐)

Switch Case(条件多分岐)

Page 19: codeless/serverless develop

繰り返し / Loop

Do Until ループ

ループが一定時間内に終了しない場合にタイムアウトとする場合はISO 8601 形式でタイムアウト条件を設定

Page 20: codeless/serverless develop

繰り返し / Loop

ForEach ループ

規定では 20 アクションの並列動作operationOptions:Sequential で変更可能

デザイナ上だけでネストしたループも作成可能

Page 21: codeless/serverless develop

ブロック化 / Scope

処理のブロック化

Page 22: codeless/serverless develop

実行条件の構成 / RunAfter

ブロック化した場合は「ブロック内部の処理が何か一つでも失敗したら」という条件で利用できる

Page 23: codeless/serverless develop

並列分岐 / RunAfter(2)

デザイナー上から並列動作させるアクションを直接設定可能

RunAfter 設定を変更しどのコネクタの後に実行するかを設定している

Page 24: codeless/serverless develop

変数/ Variables

初期化を先に実施する必要がある

Page 25: codeless/serverless develop

データ操作 / Compose

関数で行っていたものがコネクタ化され簡易に利用可能

Page 26: codeless/serverless develop

inputArguments.Select(Function(x)

Return New With {Key x.orgArg1,

Key x.orgArg2,

Key Sum(x.orgArg3)}

End Function).ToArray

選択/ Selecct

配列オブジェクトの再定義

Page 27: codeless/serverless develop

再試行ポリシー/ Retry Policy

動作エラーになったものを何回(Limit)どの程度の間隔で(Duration)再実行するかを設定

Page 28: codeless/serverless develop

CodeView 上で LogicFlow を直接記載

デザイナーでは未サポート

動作自体は問題なく可能

マルチトリガ / Multi Trigger

Page 29: codeless/serverless develop

演算子 / Operator

[]

?演算子は特に重要で値がない事が想定される場合は必ず使うのがよい

Page 30: codeless/serverless develop

関数 / 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 および関数ダイアログ上でサポートあり

Page 31: codeless/serverless develop

Workflow Functions の書き方

最初の関数のみ @ をつける必要がある

文字列は ‘ でのみ囲める

デザイナー上で記載する場合は「詳細設定」LogicApps なら CodeView で記載するのを活用

Page 32: codeless/serverless develop

Workflow Functions のコネクタ対応

一部関数はコネクタとして提供も行っている

Page 33: codeless/serverless develop

Develop API Server with LogicFlow

Page 34: codeless/serverless develop

Request コネクタ

SAS 付の URL が自動生成される

POST 以外の動詞も可能

相対パスを設定が可能クエリパラメータが可能

受け取る JSON データのスキーマを指定

Page 35: codeless/serverless develop

@triggerOutputs() 関数にて呼出時に付与されていたクエリパラメータを取得できる

HTTP Request トリガにおけるクエリパラメータ

@triggerOutputs()['queries']['test1']などでパラメータを利用可能

Page 36: codeless/serverless develop

Request コネクタの問題点

SAS 付 URL のためアクセスできれば誰でも利用可能

生成される URL がいかにも Azure な URL

LogicFlow 自体にユーザー認証の仕組みは提供されていない

ユーザー認証がない

Page 37: codeless/serverless develop

Function Apps Proxy と API Management Services

どちらも LogicFlow を呼び出すプロキシとして利用可能

Page 38: codeless/serverless develop

Function Apps Proxy

プレビュー機能のためFunction Settings で有効にする

Page 39: codeless/serverless develop

特定のメソッドで呼び出された際にAPI を呼び出すことが可能

Page 40: codeless/serverless develop

App Service 認証を利用してAPI のユーザー認証が可能

AAD や MS アカウントの MS サービスやTwitter や Google アカウントなどの外部サービスも利用可能

Page 41: codeless/serverless develop

利用条件の表示や匿名ユーザー対応などFunction Apps Proxy より細かい対応が可能

API Management でのユーザー認証

OAuth2.0 や OpenID を利用して外部プロバイダでの認証も可能

Page 42: codeless/serverless develop

Function Apps Proxy のカスタムドメイン設定

SSL も利用可能http://blogahf.blogspot.jp/2017/07/azure-function-apps-proxies-ssl.html

Page 43: codeless/serverless develop

API Management は高機能なだけに価格も高レベル・・・

Page 44: codeless/serverless develop

LogicApps のセキュリティ

LogicFlow にアクセスできるIP アドレスの制限を指定可能

Page 45: codeless/serverless develop

LogicApps の呼び出し元 IP アドレス

LogicAppsからアクセスした場合の IP アドレス

Page 46: codeless/serverless develop

Log Analytics

細かい設定なしで LogicApps のログ情報をOMS へと連携が可能

Page 47: codeless/serverless develop

Azure API Apps

同一サブスクリプション上にある API Apps を呼出可能

トリガ/アクション両方を利用可能

Page 48: codeless/serverless develop

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/

Page 49: codeless/serverless develop

Azure Function App

LogicFlow デザイナー上で直接 FunctionApp を記述可能(ただし js のみ)

Page 50: codeless/serverless develop

Azure Functions App にほしいトリガーがない場合

LogicApps のトリガでトラップしFunctions App を呼び出す

Page 51: codeless/serverless develop

カスタムコネクタ

既存 API 定義を簡易に利用できるようにカスタムコネクタとして登録可能

Page 52: codeless/serverless develop

Hybrid Connection

(ServiceBus – Relay)

OnPremiss Data Gateway

(ServiceBus – Queue)

OnPremiss DataGateway

対象コネクタ

DataGateway はメッセージをポーリングする方式でやり取りを行う(リアルタイム性は若干落ちる)

Page 53: codeless/serverless develop

•ルートフォルダ:接続先 PC でのローカルパス(共有はかけなくても大丈夫)•認証タイプ:Windows 認証•ユーザー名:(マシン名)¥(アカウント) を入力AD アカウントではないので注意!•パスワード:パスワードを入力•ゲートウェイ:インストールしたゲートウェイを選択

Page 54: codeless/serverless develop

DataGateway 利用ポート

TCP 443 (既定値) / 5671 / 5672 / 9350 ~ 9354

データ送信のみで受信は必要ない

HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定

Page 55: codeless/serverless develop

https://msdn.microsoft.com/ja-jp/library/hh169248(v=nav.90).aspx

SQL Database コネクタによる取得

SQL 文を直接記載することはできないがOdata Expression による記述が可能

Page 56: codeless/serverless develop

Others…

Page 57: codeless/serverless develop

フロントプロキシ

インフラ

オンプレミス

Azure や他サービス

Microsoft サービス

Page 58: codeless/serverless develop

LogicApps の高可用性対応

API Management リダイレクト先の調整

ServiceBus メッセージング形式の構築

Hot-Cold 的に構築動作中のリージョンで障害発生時にCOLD 側へ切り替えさせる(ARM 操作で可能)

常に全てのリージョンで動作するよう構築LogicApps の課金としては変化なし(トリガで対象データなしは無課金)

Page 59: codeless/serverless develop

LogicApps Ludicrous Mode

高パフォーマンス用 LogicApps

16ユニット以上の構成

高スケール対応が可能

LogicApps 上に仕込みは済んでいるのでそう遠くない時期に公開予定

Page 60: codeless/serverless develop

Let’s develop without coding,

and Welcome to Serverless !

Page 61: codeless/serverless develop

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