Azure Container Apps で捗るサーバーレスな LINE Bot & LIFF 開発

277 Views

October 22, 22

スライド概要

LINE API開発者向けカンファレンス「REV UP 2022」にて登壇した際の資料です。
https://linedevelopercommunity.connpass.com/event/260460/

profile-image

C#やAzureなどMS関連技術とLINE関連技術が好きです。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Azure Container Apps で捗る サーバーレスな LINE Bot & LIFF 開発 LINE Developers Community REV UP 2022 2022/10/22 平林 拓将(ひらりん) himarin269 / himanago

2.

About me • name: 平林 拓将(ひらりん) • work: テクニカルトレーナー&開発 • award/title: - Microsoft MVP for Azure(2019.11~) - LINE API Expert(2020.3~) • like: - C# / serverless / cross-platform • social: - Twitter:@himarin269 GitHub:himanago Blog:https://himanago.hatenablog.com/

3.

今回お話しすること(25分) • サーバーレスにコンテナー・マイクロサービス運用が できる「Azure Container Apps」。 • このサービスを使って、既存のWeb アプリケーショ ンを移行し、LINE 連携機能を追加するというシナリ オを考えていきます。 • LINE Bot や LIFF を運用するにあたって便利な Azure Container Apps の機能と、LINE API と連携 する機能を開発する際のポイントを、デモを交えてご 紹介します。

4.

今回の例:場所の予約システム(Web アプリ) C#(ASP.NET Core) で実装 これを Azure に移行したい

5.

Azure Container Apps サーバーレスなコンテナーアプリを動かすためのサービス 複数のコンテナーを組み合わせてマイクロサービスを運用可能 https://learn.microsoft.com/ja-jp/azure/container-apps/

6.

Azure Container Apps の構成 Container Apps Environment Container App Container App Container App

7.

アプリ(ASP.NET Core)を移行 Container Apps Environment Azure Container Registry SQL Database Container App Push CI/CD (GitHub Actions) ASP.NET Core Webアプリ コンテナーで動作させる Push 接続情報など の管理 Key Vault

8.

[DEMO] Container Apps上の予約システム

9.

機能拡張はコンテナーを増設 Container Apps Environment Container App Container App Container App コンテナー同士を連携させることが可能

10.

Dapr(Distributed Application Runtime) • マイクロサービス同士の連携 などを容易に開発できるよう にする • オープンなAPIで開発言語も 問わない https://dapr.io/ https://learn.microsoft.com/ja-jp/azure/container-apps/dapr-overview

11.

LINE Bot 機能を追加 予約システム Bot Webhook エンドポイント (Botバックエンド) Python(Flask) で実装

12.

予約にはマルチターンの対話が必要 予約したい どこを? エリア2 いつ? 10月23日

13.

マルチターンはけっこう大変 ユーザー・Bot間で数往復のやりとりをする場合、 会話の経緯(対話コンテキスト)をサーバー側で 覚えておく必要がある 対話コンテキストを DBなどに保存 Bot Webhook エンドポイント DBなど メッセージ受信時、 保存された対話コンテキストを 毎回確認し適切な応答を行う バックエンド

14.

Dapr の状態管理で対話コンテキストを保持 Daprを経由してユーザーごとの 対話コンテキストを保存 Container App (LINE Bot) state store

15.

Dapr の状態管理 ※ 今回のデモアプリでは Cosmos DBを使用 https://learn.microsoft.com/ja-jp/dotnet/architecture/dapr-for-net-developers/state-management

16.

WebアプリとBotでコンテキストを共有 LINEログインを実装 LINEユーザーIDをキーに状態を保存 Bot ASP.NET Core Webアプリ 同一プロバイダー内においては共通のLINEユーザーIDを持つため、 それぞれのサービスでLINEユーザーIDを使う

17.

[DEMO] Dapr 状態管理によるコンテキスト共有

18.

LIFFも使いたい! 予約機能 その他便利機能 スタンプカードや会員証の機能や、 よりリッチな予約機能の提供 (状態共有したい)

19.

LIFF におすすめ:Azure Static Web Apps • 静的Webサイトホスティングサービス • カスタムドメイン・SSL 対応 • GitHub との統合による CI/CD • ステージング環境での PR レビュー ★ ドキュメント https://docs.microsoft.com/ja-jp/azure/static-web-apps/

20.

Azure Static Web Apps の特徴 /front </> ブラウザ /api API バックエンドAPI(Azure Functions)を 同一リポジトリで開発・デプロイ クロスオリジン制約を 気にすることなく アクセス可能 組み込みの Functions の代わりに Container Apps を使うことができる!

21.

Container Appsをバックエンドに使用できる SWA 各アプリにおける 操作状況を共有できる </> LIFFフロントエンド Container Apps Environment Webアプリ LINE Bot LIFFバックエンド

22.

まとめ • Azure Container Apps は複数コンテナーの 運用が楽にできるおすすめサービス • Dapr の機能でコンテナー同士の連携や状態の 共有が可能 • LINE Bot の対話コンテキスト管理、LIFF や 他のアプリとの状態共有で新しいユーザー体験 にもつながる