Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Real World Serverless

freee
January 17, 2017

Real World Serverless

freeeでのAWS Lambdaを利用したServerlessの活用方法
アーキテクチャの紹介やリージョンをまたいだ際の注意点など

from nasa

freee

January 17, 2017
Tweet

More Decks by freee

Other Decks in Technology

Transcript

  1. はじめまして • nasa (Asaoka Natsuki) • 紅茶, ガジェット, fedora 好き

    • 2014 年から で engineer • その前はとある public cloud (IaaS) の開発を していました 2
  2. recipe • AWS SES - メール受信 • AWS Lambda -

    node.js • AWS DynamoDB • AWS S3 • apex • lambda local 4
  3. email Amazon SES Amazon S3 Amazon S3 Amazon Lambda Amazon

    Lambda Amazon DynamoD B oregon Tokyo 5 architecture
  4. key point #1 • independent • 不正なメールが大量にきたとき、サービスへの大量アクセスを防 ぎたい • DynamoDB

    で処理対象かcheck • 対象外なら exit • 障害時の復旧のしやすさ • S3 にデータがあればそれを使って再開 6 6 
  5. key point #2 • retriable • 意図しないタイミングで retry されうる •

    「実行時間 timeout」「memory 不足」etc. • retry を前提としたコード • 完了してる処理は skip • 復帰できない error は 通知して exit 7 7 
  6. Extra • AWS の仕様を踏まえて試行錯誤 • “いつリージョンを超えるか ?” • SES は

    Oregon, サービスは Tokyo • SES のイベントソースを使うと Lambda <-> S3, Lambda <-> freee 間で太平洋を越えることに…timeout の可能性Up • SES -> S3 でリージョン超え • Lambda は S3 のイベントソースを使う 8 8 
  7. • apex • http://apex.run/ • lambda local • https://github.com/ashiina/lambda-local •

    Understanding Container Reuse in AWS Lambda • https://aws.amazon.com/jp/blogs/compute/container-reuse-i n-lambda/ • 2016年11月度 新機能のお知らせ (※今回の機能のリリース告知) • https://www.freee.co.jp/blog/release-2016-11-30-18058.html 10 appendix