• 検索結果がありません。

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.おわりに

ご清聴いただき 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

DynamoDB バックアップ方法検討  3/3

• 本プロジェクトでは以下を併用する事とした

a. PITR

b. Data Pipeline にとるバックアップ

• 「 1 秒単位で復元ができ、万が一テーブル自体が削除 されても 1 日前には戻せる」事が可能に

• b. はバックアップ処理が遅いが毎日深夜に処理を実

行させる事で処理の遅さを許容

付録

PITR 設定方法

ここを有効化するだけ

関連したドキュメント