俺とサーバレスアーキテクチャ aws cognito + s3 + ses + lambda編
TRANSCRIPT
俺とサーバレスアーキテクチャAWS Cognito + S3 + SES + Lambda編
2016-11-25 JAWS-UG金沢第16会勉強会
ふぁらお加藤
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
ゴール
• キャンペーンサイトなどを作る際、なので金沢市民全員がアクセスするような超すごい人数のアクセスを見込むし、宣伝もする予定。
• ていうかコケる可能性もあるし、客を見込んであれこれしたくない。流入量図るのもコストだしね。
• つまりサーバを借りずにキャンペーンサイトを作ればいいんや!その方法のひとつを学ぶ。
キャンペーンサイトをするってことはアクセス過多になるのがうれしい悲鳴
エンジニアにとっても嬉しい悲鳴
だけどサーバには悲鳴(障害通知)をあげてほしくない・・・
よし!バカ高いサーバ借りたろ!→ 維持費が超高い
よし! それなりのサーバでクラスタリングや!
→ クラスタ設定が高い & 維持費が(略
長期契約や一括契約すれば安くなる!→ キャンペーン終わればサーバも解約したい
キャンペーン失敗やったわ・・・→ 誰もアクセスしないのに月額うん万・・・
とりあえず S3
Amazon S3 is
Amazon Simple Storage Service
シンプル、とありますが、機能は盛りだくさん今回は静的ファイルホスティングを使う
ここへのアップロードは rsync でもブラウザから DnD でお好きなように(詳しくないデザイナさんとかでも簡単)
これでサーバレスでコンテンツは用意できた!
でもお高いんでしょう?
→ そもそもサーバ借りるより安いの?
正直これが高すぎて困るようになったら大したものぐらい。数円〜 1日10万PVで$60以下(11/23に値下げ発表されましたね)
キャンペーンにメールアドレスを登録させたい
これはさすがにサーバいるでしょ?
メール送信のコード置かないと・・・メールサーバ借りないと・・・
いりません
あ、いりませんというのはウソか。正しくは AWSに従量制で全部あります。
SES
Amazon SES is
Amazon Simple E-Mail Service
でもお高いんでしょう? 2nd impact
→ そもそもサーバ借りるより安いの?
$0.010/1,000メール送信(+ データ転送料)
1万人に送って100円ほど
どうやってメール送信させるの?
S3 は静的ホスティングどころかhttp PUT も対応できる!
http PUT されたら応じて関数が実行できる!
lambda
Lambda is
コード実行サービス、AWS上で発生するいろんなイベントをトリガーにコードを実行できる
こんな感じで
でもお高いんでしょう? 3rd strike
→ そもそもサーバ借りるより安いの?
1,000,000 件無料、その後は $0.2/1M件
node.js や Java が使えるAWS SDKも使えるから SES を叩くのは超簡単
なるほど、でも誰でも PUT できるのは困るじゃん?認証は作らないといけないんじゃないの?
Cognito
Cognito is
ユーザーサインイン・サインアップ・データ保存場所提供サービス
うまいことやるとこいつを使えば「匿名で」「一瞬だけ」認証し、そのサイトからのみ PUT させられる
JavaScript で Cognito のログイン書いておけば OK
まとめ
• サーバーレス = すなわちEC2でOS・ミドルウェアのメンテナンスが必要なものを借りずに構築できた。
• アクセス数が残念なことになろうが、大変なことになろうが、それを見積もることを全然しなくてもスケールできるものがシンプルにできた。
ご清聴ありがとうございました