25
Twilio API 勉強会 Vol.28 サーバーレスアーキテクチャ で Twilioを安全に運用しよう! selfree, llc Kiminari Homma

Twilio serveless architecture

Embed Size (px)

Citation preview

Twilio API 勉強会 Vol.28 サーバーレスアーキテクチャで Twilioを安全に運用しよう!

selfree, llc Kiminari Homma

自己紹介

本間 皇成 @kimihom

ボクココ 運営者http://www.bokukoko.info/

CTO at selfree,llc

Ruby on Rails, AWS, Heroku, Android, iOS

TwilioJP-UG メンバー

コールコネクト

as a Service

顧客情報と連動したコールセンターを構築

Webブラウザが電話代わり

格安・本格機能・即日導入

2週間無料トライアル実施中

サービス紹介

https://www.callconnect.jp/

Contents• Twilio の復習

• フォールバック URL

• サーバーレスアーキテクチャ

• 休憩

• ハンズオン

の復習

Voice

Client

電話の受信 音声ファイル再生や通話録音 ダイヤル操作に応じた動作切替 通話中の電話の制御 電話の発信

ブラウザ・スマホで電話 Voice と連動してあらゆる通話を操作

and More..

→自由に組み合わせ可!

TwiML

Twilio で電話を受信・発信するときなど、 Twilio へ動作命令を出すためのXML

どうすればいい?

こうしろ(TwiML)

Webサーバー

<?xml version="1.0" encoding="UTF-8"?> <Response> <Gather action=“https://www.myapp.com/action”> <Play loop=“5”>https://www.myasset.com/voice.wav</Play> </Gather> </Response>

サンプル

REST API

HTTP 通信で Twilio の情報の取得・作成・更新・削除などを行う 各言語に対応 (PHP, Ruby, Python, Node.js etc)

Webサーバー

これやって

こうなりました

例えば・電話番号の取得、購入、削除 ・電話をかける、通話の更新 ・SMS 送信 ・その他、Twilio マイページにある操作を自前で実装

フォールバック URL

リクエストURL と フォールバックURL

電話がかかってきたときに、最初に Twilo が聞きに行く URL

どうすればいい?

Error! Webサーバー

リクエストURL

リクエスト URL でTwiMLを解析できなかった場合に聞きに行くURLフォールバック URL

リクエスト URL

どうすればいい?フォールバック URL

こうしろ(TwiML)

「アプリケーションのエラーが発生しました。」

Say

Problem

• 電話をかけた人しか問題がすぐにわからない

• アラートトリガーは最も短くて1日..

• Twilio ダッシュボードのログを毎回見るのは大変

• アプリケーションのせいになってしまう(その通りだが)

リクエストURL と フォールバックURL

電話がかかってきたときに、最初に Twilo が聞きに行く URL

どうすればいい?

Error! Webサーバー

リクエストURL

リクエスト URL でTwiMLを解析できなかった場合に聞きに行くURLフォールバック URL

リクエスト URL

どうすればいい?フォールバック URL

こうしろ(TwiML)?

フォールバックURL先の条件

• リクエストURLとは違うサーバーである

• まず落ちることがない

• エラーを検知できるようにするため、静的なファイルでなく、プログラムを動かしたい

そこで “サーバーレスアーキテクチャ”

PHP などのサーバーをこのためにわざわざ建てるのは作るのも管理するのも面倒。

そしてお金もかかる。

AWS Lambda Amazon API Gateway

“サーバーレスアーキテクチャ”

+

・AWS 内のイベントをトリガに、任意のコードを実行

・Node.js/Java/Python

・Linux 環境に AWS SDK, ImageMagick が内蔵

・node_modules などをZipに固めてアップロード可

・1 か月に100万件のリクエストおよび 400,000 GB/秒のコンピューティング時間が無料

・ログはCloudWatchで閲覧

AWS Lambda

• Amazon S3に画像がアップロードされたタイミングで、画像をリサイズ

• Amazon DynamoDBにデータが投入されたタイミングで、データを整形

• Cronのように1日一回のタイミングで、バッチ処理を実行

• バックグラウンドジョブをAWS Lambda化

Examples of AWS Lambda

Amazon API Gateway

・外部APIを公開するのに役立つ

・AWS Lambda をエンドポイントとして指定可能

・独自URLの発行

・APIのバージョン管理・実行制限

・iOS/Android 向けSDK発行

・Swagger 対応

今年の8月リリース! 10月に東京リージョン開設

ずっと動いている”サーバー”の概念がなくなり、 必要になったときに起動してサーバーのように振る舞う

低コスト、高可用性を実現

Your Server

リクエストURL

エラー!

電話①

② ③

API Gateway

Lambda

フォールバックURLTwiML

TwilioリクエストURLを サーバーレスアーキテクチャ化?

それも Good Solution!

今回のハンズオン• AWS Lambda のコード作成

• Amazon API Gateway の設定とデプロイ

• フォールバックURLをAmazon API Gateway へ

• Twilio のリクエストURLを存在しないURLへ

• 動作確認

ハンズオン手順は12月8日の Twilio Advent Calendar 2015 にて