Slide 1

Slide 1 text

Real World Serverless nasa @ freee 2017.1.17 Serverless Meetup Tokyo#2 1

Slide 2

Slide 2 text

はじめまして • nasa (Asaoka Natsuki) • 紅茶, ガジェット, fedora 好き • 2014 年から で engineer • その前はとある public cloud (IaaS) の開発を していました 2

Slide 3

Slide 3 text

3 freee にレシート・請求書のメールを転送 freee への登録部分に AWS Lambda を使用 PDF OCRにかけて 会計情報をつくるよ! 2016/11 freee Meets Serverless!!

Slide 4

Slide 4 text

recipe • AWS SES - メール受信 • AWS Lambda - node.js • AWS DynamoDB • AWS S3 • apex • lambda local 4

Slide 5

Slide 5 text

email Amazon SES Amazon S3 Amazon S3 Amazon Lambda Amazon Lambda Amazon DynamoD B oregon Tokyo 5 architecture

Slide 6

Slide 6 text

key point #1 • independent • 不正なメールが大量にきたとき、サービスへの大量アクセスを防 ぎたい • DynamoDB で処理対象かcheck • 対象外なら exit • 障害時の復旧のしやすさ • S3 にデータがあればそれを使って再開 6 6 

Slide 7

Slide 7 text

key point #2 • retriable • 意図しないタイミングで retry されうる • 「実行時間 timeout」「memory 不足」etc. • retry を前提としたコード • 完了してる処理は skip • 復帰できない error は 通知して exit 7 7 

Slide 8

Slide 8 text

Extra • AWS の仕様を踏まえて試行錯誤 • “いつリージョンを超えるか ?” • SES は Oregon, サービスは Tokyo • SES のイベントソースを使うと Lambda <-> S3, Lambda <-> freee 間で太平洋を越えることに…timeout の可能性Up • SES -> S3 でリージョン超え • Lambda は S3 のイベントソースを使う 8 8 

Slide 9

Slide 9 text

9 End We are hiring!

Slide 10

Slide 10 text

• 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