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

Preview:

Citation preview

俺とサーバレスアーキテクチャ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・ミドルウェアのメンテナンスが必要なものを借りずに構築できた。

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

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