Slide 1

Slide 1 text

AKS + Azure Event Hubs で試す Dapr の Resource Bindings Masahiko Utsunomiya 2019/12/24 Microsoft Open Tech Night #3

Slide 2

Slide 2 text

1 #mstechnight 掲載内容は個人の見解であり、 所属する企業や組織の立場、戦略、意見を 代表するものではありません

Slide 3

Slide 3 text

2 #mstechnight Whois ✓ 金融分野のお客様のクラウド導入支援 ✓ 興味:Observability(Prometheus, Fluentd, Loki, Jaeger, etc.) ✓ Grafana Loki コントリビュータ Helm Chart のメンテナンスなどしています polar3130 Masahiko Utsunomiya Infrastructure Engineer / Relationship Builder

Slide 4

Slide 4 text

3 #mstechnight 制作に参加した書籍がでました “Kubernetes ポケットリファレンス” ISBN : 978-4-297-10957-8 2019/11/16発売 技術評論社より 主にレビュアとして参加、 本編・コラムの一部執筆も担当させて頂きました

Slide 5

Slide 5 text

4 #mstechnight Dapr とは イベント駆動・多言語対応・ステート管理可能な、オープンソースの 分散アプリケーション向けランタイム https://github.com/dapr

Slide 6

Slide 6 text

5 #mstechnight Dapr の使い方 アプリケーションは HTTP/gRPC で Dapr API にアクセス Dapr API はサイドカーで提供されるため、アプリケーションにランタイムコードを含める必要はない https://github.com/dapr/docs/blob/master/overview.md

Slide 7

Slide 7 text

6 #mstechnight Daprの使い方(Kubernetes mode) 3つの統合サービスが展開され、分散アプリケーションの実行をサポート Dapr Actor placement アクターパターンを実装する際に利用する アクターセット全体の状態管理、配置、操作 Dapr Sidecar-injector Deployment に付与された Annotations に基づき Admission Webhook により Dapr サイドカーを注入 Dapr Operator kind: Component として外部リソースを抽象化 ランタイムへ Component の変更を通知

Slide 8

Slide 8 text

7 #mstechnight Microservice building blocks としての Dapr 大別して6つの機能を提供 https://github.com/dapr/docs/blob/master/overview.md

Slide 9

Slide 9 text

8 #mstechnight Resource Bindings スケーラビリティと回復性を備えた、外部リソースとの連携機能 外部リソースのイベントをトリガにアプリケーションを呼び出せる アプリケーションから外部リソースの実装を意識することなく呼び出せる https://github.com/dapr/docs/blob/master/concepts/bindings

Slide 10

Slide 10 text

9 #mstechnight Sample で Dapr Bindings に入門 AKS 上で Kafka を展開、Dapr Component としてアプリケーションと連携 https://github.com/dapr/samples/tree/master/5.bindings

Slide 11

Slide 11 text

10 #mstechnight 想定シナリオ Dapr Sidecar-Injector Dapr Operator Dapr Actor placement

Slide 12

Slide 12 text

11 #mstechnight Kafka を用いた Input / Output Bindings • AKS クラスタを用意

Slide 13

Slide 13 text

12 #mstechnight Kafka を用いた Input / Output Bindings • AKS クラスタを用意 • Dapr の各サービスを展開 Dapr Sidecar-Injector Dapr Operator Dapr Actor placement $ dapr init --kubernetes

Slide 14

Slide 14 text

13 #mstechnight Kafka を用いた Input / Output Bindings • AKS クラスタを用意 • Dapr の各サービスを展開 • Kafka を Helm で展開 Dapr Sidecar-Injector Dapr Operator Dapr Actor placement

Slide 15

Slide 15 text

14 #mstechnight Kafka を用いた Input / Output Bindings Dapr Sidecar-Injector Dapr Operator Dapr Actor placement • AKS クラスタを用意 • Dapr の各サービスを展開 • Kafka を Helm で展開 • アプリケーションを展開 • Injector によりサイドカーを注入 まずは Kafka を使ったサンプルを確認

Slide 16

Slide 16 text

15 #mstechnight リソースを Event Hubs に切り替え...? (唐突な)おわり Kafka を使ったサンプルを確認 →アプリケーションへの変更なく 外部リソースを Azure Event Hubs に切替? ...ない !?

Slide 17

Slide 17 text

16 #mstechnight 続きを作ってみた Dapr Sidecar-Injector Dapr Operator Dapr Actor placement • Event Hubs を設定 • アクセスする Topic を作成 • Event Hubs Component の YAMLファイル を作成 • kafka の Component YAML ファイルと差替 • 再デプロイ

Slide 18

Slide 18 text

17 #mstechnight Sample(No.5) とその続きを実装した結果 アプリケーションは一切変更せず外部リソースを切り替えできた 注意点 • Azure Event Hubs の kafka interface は standard 以上のプランが必要 • TopicName の option を指定してもトピックは自動作成されないため、別途作成する必要がある

Slide 19

Slide 19 text

18 #mstechnight Bindings のつかいどころ ローカル/本番の環境差分を吸収 Prod Dev python.yaml node.yaml eventhubs_bindings.yaml python.yaml node.yaml kafka_bindings.yaml

Slide 20

Slide 20 text

19 #mstechnight 参考URL① Microsoft Ignite 2019 in Orlando より Azure CTO, Mark Russinovich による Dapr の各機能の解説 & デモ https://www.slideshare.net/keiomizo1/open-shiftrun2019-dapr

Slide 21

Slide 21 text

20 #mstechnight 参考URL② 日本語資料 Microsoft 大溝さんの Dapr 紹介資料(OpenShift.Run にて講演) https://www.slideshare.net/keiomizo1/open-shiftrun2019-dapr

Slide 22

Slide 22 text

21 #mstechnight まとめ Dapr の Resource Bindings の機能を紹介 アプリケーションのステート管理を仲介し、外部リソースを抽象化して取り扱うことができる 現在は 16 のリソース/プロトコルに対応、今後拡充予定 Sample(5. Bindings)の続きを実装し、コンセプトを確認 Bindings の使いどころ アプリケーション開発時のローカル/本番の環境差分を吸収できる 例えば、クラウドサービスを使ったアプリケーションのローカル環境での開発/テストなどに有効

Slide 23

Slide 23 text

Thank you for your attention!