43
俺とサーバレスアーキテクチャ AWS Cognito + S3 + SES + Lambda2016-11-25 JAWS-UG金沢 第16会勉強会 ふぁらお加藤

俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Embed Size (px)

Citation preview

Page 1: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

俺とサーバレスアーキテクチャAWS Cognito + S3 + SES + Lambda編

2016-11-25 JAWS-UG金沢第16会勉強会

ふぁらお加藤

Page 2: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Profile

Name

ふぁらお加藤 / @PharaohKJ

Hobby

Camera / subculture

Job & Works

PhalanXware (Freelancer)

OCR system com / .NET

ISDB-T MFC / Linux C++

Social Game PHP / Java

ERP+CRM AngularJS / Cordova

Information App AngularJS / CakePHP

Factory Automation .NET

Page 3: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

ゴール

• キャンペーンサイトなどを作る際、なので金沢市民全員がアクセスするような超すごい人数のアクセスを見込むし、宣伝もする予定。

• ていうかコケる可能性もあるし、客を見込んであれこれしたくない。流入量図るのもコストだしね。

• つまりサーバを借りずにキャンペーンサイトを作ればいいんや!その方法のひとつを学ぶ。

Page 4: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

キャンペーンサイトをするってことはアクセス過多になるのがうれしい悲鳴

Page 5: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

エンジニアにとっても嬉しい悲鳴

Page 6: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

だけどサーバには悲鳴(障害通知)をあげてほしくない・・・

Page 7: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

よし!バカ高いサーバ借りたろ!→ 維持費が超高い

Page 8: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

よし! それなりのサーバでクラスタリングや!

→ クラスタ設定が高い & 維持費が(略

Page 9: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

長期契約や一括契約すれば安くなる!→ キャンペーン終わればサーバも解約したい

Page 10: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

キャンペーン失敗やったわ・・・→ 誰もアクセスしないのに月額うん万・・・

Page 11: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

とりあえず S3

Page 12: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Amazon S3 is

Amazon Simple Storage Service

Page 13: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

シンプル、とありますが、機能は盛りだくさん今回は静的ファイルホスティングを使う

Page 14: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編
Page 15: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

ここへのアップロードは rsync でもブラウザから DnD でお好きなように(詳しくないデザイナさんとかでも簡単)

Page 16: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

これでサーバレスでコンテンツは用意できた!

Page 17: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

でもお高いんでしょう?

→ そもそもサーバ借りるより安いの?

Page 18: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

正直これが高すぎて困るようになったら大したものぐらい。数円〜 1日10万PVで$60以下(11/23に値下げ発表されましたね)

Page 19: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

キャンペーンにメールアドレスを登録させたい

Page 20: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

これはさすがにサーバいるでしょ?

メール送信のコード置かないと・・・メールサーバ借りないと・・・

Page 21: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

いりません

Page 22: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

あ、いりませんというのはウソか。正しくは AWSに従量制で全部あります。

Page 23: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

SES

Page 24: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Amazon SES is

Amazon Simple E-Mail Service

Page 25: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

でもお高いんでしょう? 2nd impact

→ そもそもサーバ借りるより安いの?

Page 26: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

$0.010/1,000メール送信(+ データ転送料)

1万人に送って100円ほど

Page 27: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

どうやってメール送信させるの?

Page 28: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

S3 は静的ホスティングどころかhttp PUT も対応できる!

Page 29: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

http PUT されたら応じて関数が実行できる!

Page 30: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

lambda

Page 31: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Lambda is

コード実行サービス、AWS上で発生するいろんなイベントをトリガーにコードを実行できる

Page 32: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

こんな感じで

Page 33: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

でもお高いんでしょう? 3rd strike

→ そもそもサーバ借りるより安いの?

Page 34: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

1,000,000 件無料、その後は $0.2/1M件

Page 35: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

node.js や Java が使えるAWS SDKも使えるから SES を叩くのは超簡単

Page 36: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

なるほど、でも誰でも PUT できるのは困るじゃん?認証は作らないといけないんじゃないの?

Page 37: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Cognito

Page 38: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

Cognito is

ユーザーサインイン・サインアップ・データ保存場所提供サービス

Page 39: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

うまいことやるとこいつを使えば「匿名で」「一瞬だけ」認証し、そのサイトからのみ PUT させられる

Page 40: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

JavaScript で Cognito のログイン書いておけば OK

Page 41: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編
Page 42: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

まとめ

• サーバーレス = すなわちEC2でOS・ミドルウェアのメンテナンスが必要なものを借りずに構築できた。

• アクセス数が残念なことになろうが、大変なことになろうが、それを見積もることを全然しなくてもスケールできるものがシンプルにできた。

Page 43: 俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編

ご清聴ありがとうございました