Web アプリクライアントの複数環境対応
同じソースコードで Pipeline 上の Build プロセス時に特定の箇所を 置換できる様にしたい
Staging
用Pipeline
本番用
Pipeline
...
let url = API_ENDPOINT; ...
org
stg
...
let url =[Staging用URL];
...
Build Deploy Test
prod ...let url =[本番用URL];
...
Build Deploy
Copyright © 2018 EXA CORPORATION
目次
1. はじめに
2. 研修実績管理システムの概要 3. AWS Lambda を利用した開発 4. チャットボットの開発
5. Web アプリケーションの開発 6. アクセス制御と認証
7. CI/CD 実現のためのポイント 8. おわりに
※本資料に記載されているロゴ、システム名称、 企業名称、製品名称は各社の登録商標または商標です。
8.おわりに
サーバレスアプリケーションを開発しての気付き
• ミドルウェアを意識しなくて良いのは楽
• ビルドとデプロイの自動化は必須
• ローカル PC でユニットテストが行える環境があると開発を効率 化できる
• マイクロサービスアーキテクチャとなるので、他システムとリソー
スの再利用が可能
Copyright © 2018 EXA CORPORATION
まとめ
デモンストレーションを見ていただきます。
・チャットボットからの実績登録と照会 ・ Web からの実績登録
8.おわりに
e
ご清聴いただき a
ありがとうございました。
Copyright © 2018 EXA CORPORATION Hangout Chat用IF
ボット とインターフェースの役割詳細
ユーザとボットの架け橋を行う
• ユーザがチャットを操作したときのイベントを受け取る
• ボットへのリクエストをボットが期待する形に整形する
• ボットの応答を HangoutsChat が期待する形に整形する
• API がユーザ個人を識別できる情報を付加する ユーザ個人の会話の状態や流れを管理・制御する
• 会話の進行を制御する(戻ることもある)
• 今の話題や会話の進行度を管理する
• 機能の実行に必要な情報を収集・管理する
• 情報が揃ったときに適切な機能を実行する
• ユーザに適切なメッセージで応答する 付録
ボット本体
インターフェース
会話の設計(用語)
• インテント
– 会話の「意図・目的」を表す
• エンティティ
– 会話の目的を達成するために必要な「情報」のこと
• フルフィルメント
– 目的の達成に必要な物が揃ったときに実行される
Copyright © 2018 EXA CORPORATION
インテント
• システムが提供する機能単位でインテントを定義した – 「登録」「削除」「照会」
• ユーザとの会話はインテントを基準に進行する
– 目的が達成されるまで ( エンティティが揃うまで ) 繰り返される
• 1つのインテントに 1 往復以上の会話が存在する
付録
エンティティ
• 目的 ( インテント ) を達成するために収集される情報 – インテントごとに内容は様々
– ユーザから聞き出す必要のあるものと無いものがある
• 収集されたエンティティを使ってフルフィルメントが実行される
Copyright © 2018 EXA CORPORATION
フルフィルメント
• 必要なエンティティがすべて揃ったときに最後に呼び出される
• 「 DB に実績を格納する」等の Web ・ボット共通の処理を行う
付録
ボット本体の設計
IF
ボット インテント コントローラー
インテントA インテント
B
インテントC・
・
・
フルフィルメントA
フルフィルメントB
インテントD ・
・
・
機能(インテント)の増加や修正等のインパクトをなるべく抑えるために上記のように切 り分けを行った。
また、インテントも共通部の処理は切り出し、会話の実装方法も固定化した。
API Gateway
Lambda Lambda
Copyright © 2018 EXA CORPORATION
ボット本体の設計
ボット
インテント コントローラー
インテント
フルフィルメント
Bot API
へのリクエスト処理のエントリーポイントになる。DB
に格納されている「会話の状態」や、「ユーザの発言」を元に実行するイ ンテントを決定する。「ボット」から渡された「会話の状態」と「インテント」を使って、会話の 進行を制御する。
進行した「会話の状態」を
DB
へ保存する。一つのインテントで行われる会話の内容を定義する。
ユーザの発言から必要なエンティティを抽出しバリデーションも行う。
フルフィルメントを実行するための処理も定義する システムの核となる機能を持つ。
インテントによって実行される。
インテントとフルフィルメントは
1対1になるとは限らない。
付録
ボット インテント
コントローラー インテント フルフィルメント
インテントの決定・生成 コントローラーの生成
run(input)
を実行run(input)を実行
バリデーションと エンティティの抽出 応答メッセージと成否
executeFullfilment(entity)
を実行invoke(entity)を実行
成否 成否会話状況の更新 応答メッセージと成否
インテント終了時
Copyright © 2018 EXA CORPORATION
DynamoDB バックアップ方法検討 1/3
※ 2018年11月現在バックアップ
種類 メリット デメリット
オンデマンド バックアップ
● Web
インタフェース上で手軽にバックアップ が取れる●
バックアップ対象の読み込みキャパシティ を消費しない●
バックアップ処理は早い●
自動化のための敷居が高い○ Web
インタフェース上では1
度きりのバック アップしか取れないため、AWS CLI
や各 種SDK経由で行うスクリプトを書いて実行 させる必要があるData Pipeline
によるバックアップ
●
定期実行が可能●
バックアップはS3
上にファイルとして作られ るので取り回しが良い●
バックアップ処理が遅い●
読み込みキャパシティを消費する● Data Pipeline上で処理を定義する必要が
あるため導入の敷居が少し高いPoint In Time Recovery (PITR)
● 1秒単位でデータをバックアップして 35日間
分保存
●
有効化するだけなので簡単● 35日分しか保存されない
●
テーブルが削除されるとバックアップデータ もなくなる付録
DynamoDB バックアップ方法検討 2/3
PITR が手軽かつ強力
• 追加料金が発生するが、本プロジェクト程度の規模の場合であ れば計算上は年間 1 ドルかからない
しかし...
テーブルが削除されるとバックアップデータがなくなって しまう事を懸念
AWSサポートに連絡する事で、削除したテーブルのバックアップを復元する事も可能ではある
https://forums.aws.amazon.com/thread.jspa?messageID=840798
Copyright © 2018 EXA CORPORATION