Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サーバーレスなAPIサービスの全容 / All of the serverless API...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
naoya_s
November 18, 2020
Technology
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバーレスなAPIサービスの全容 / All of the serverless API services
naoya_s
November 18, 2020
More Decks by naoya_s
See All by naoya_s
静的解析ツールの刷新に向けた取り組み
suginao
1
410
RuffではじめるPython開発 / Python Development with Ruff
suginao
0
71
AWS SAMをさわってみた話 / Try AWS SAM
suginao
0
49
全国在宅勤務制度のすゝめ / Practice of National Telecommuting System
suginao
1
24
(エンジニアに送る)人に優しくなるための3つの方法 / 3 Ways for Engineers to Be Kind to People
suginao
0
37
Other Decks in Technology
See All in Technology
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
110
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
400
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
260
ガバメントクラウドでのランサムウェア対策
techniczna
1
580
AIで楽になるはずが、なぜ疲れる?
kinopeee
0
150
AIがコードを書く時代、人間は何を保証するのか———馬場さんと考える、開発者に求められる新しい責任と価値 - TECH PLAY
netmarkjp
0
1.2k
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
330
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
870
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
130
SmartHR Engineering Team Deck
smarthr
0
120
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
650
VPCセキュリティ対応の最新事情
nagisa53
2
350
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
780
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Spectacular Lies of Maps
axbom
PRO
1
880
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
410
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
430
The SEO Collaboration Effect
kristinabergwall1
1
510
The untapped power of vector embeddings
frankvandijk
2
1.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
200
Designing for Timeless Needs
cassininazir
1
430
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
サーバーレスなAPIサービスの全容 ZOZO Technologies Meetup 〜ZOZOが提供するEC支援サービスの裏側〜 株式会社ZOZOテクノロジーズ BtoB開発部 BtoB開発チーム 杉田 尚弥
Copyright © ZOZO Technologies, Inc.
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ BtoB開発部 BtoB開発チーム 杉田 尚弥 2
'19 株式会社アラタナに新卒入社 バックエンドチームに配属後、 FBZの運用保守に従事 株式会社ZOZOテクノロジーズに転籍 '20 FBZのバックエンドを中心に開発
© ZOZO Technologies, Inc. 1. FBZ APIのサービス概要 2. FBZ APIに求められた要件
3. FBZ APIにおけるアーキテクチャ 4. サーバーレスを採用した結果 目次 3
© ZOZO Technologies, Inc. 1. FBZ APIのサービス概要 2. FBZ APIに求められた要件
3. FBZ APIにおけるアーキテクチャ 4. サーバーレスを採用した結果 目次 4
© ZOZO Technologies, Inc. FBZ APIのサービス概要 5 5
ZOZOBASE 自社カート システム FBZ API 商品在庫データ連携 データ連携 ZOZO TOWN 出荷 入荷 ZOZOBASEの商品・在庫情報を解放
© ZOZO Technologies, Inc. FBZ APIのサービス概要 6 ZOZOBASE 【データ】
商品 在庫 注文 etc. FBZ API 自社 カートシステム ・ ・ ・ ・ ・ ・ マネージドサービスの みで構成 在庫確保 カート作成 商品検索
© ZOZO Technologies, Inc. 1. FBZ APIのサービス概要 2. FBZ APIに求められた要件
3. FBZ APIにおけるアーキテクチャ 4. サーバーレスを採用した結果 目次 7
© ZOZO Technologies, Inc. • アパレルを扱うサービスならではの、特定タイミングで発生す るスパイクに対応する ◦ セール時期 ◦
人気商品の販売 FBZ APIに求められた要件 8
© ZOZO Technologies, Inc. • アパレルを扱うサービスならではの、特定タイミングで発生す るスパイクに対応する ◦ セール時期・加熱商品の販売 FBZ
APIに求められた要件 9 低い運用コストで実現したい! 「サーバーレスアーキテクチャ」で実装しよう
© ZOZO Technologies, Inc. 1. FBZ APIのサービス概要 2. FBZ APIに求められた要件
3. FBZ APIにおけるアーキテクチャ 4. サーバーレスを採用した結果 目次 10
© ZOZO Technologies, Inc. FBZ APIにおけるアーキテクチャ 11 リアルタイム性を求められる処理 リアルタイム性が必要
リアルタイム性が不要 データ参照元 ZOZOBASE FBZ 処理の例 ・在庫取得 ・在庫確保 ・商品参照 ・注文参照 • サーバーレスアーキテクチャ • 季節で変動があるトラフィックに対応するため、設計を2つに分ける
© ZOZO Technologies, Inc. ZOZOBASE 自社 カートシステム FBZ APIにおけるアーキテクチャ 12
非リアルタイム 要リアルタイム 注文 / 在庫 注文 / 商品 (キャッシュ済み) IP制限 ユーザー 認証 ZOZOBASEから取得 共有処理
© ZOZO Technologies, Inc. 要リアルタイムなAPI ・在庫情報取得・確保や注文作成などを行う 13 自社 カートシステム ZOZOBASE
在庫情報取得 / 在庫確保 etc. 保存
© ZOZO Technologies, Inc. 非リアルタイムなAPI ・注文情報・商品情報の参照などを行う 14 自社 カートシステム ・キャッシュ済みデータを参照
・FBZ内部で処理が完結 注文 / 商品 etc. 商品ID:xxxxxxx 商品名:シャツ カラー:ホワイト サイズ:L
© ZOZO Technologies, Inc. 非リアルタイムなAPI ・注文情報・商品情報の参照などを行う 15 各種 カートシステム 注文
/ 商品 etc. Q キャッシュしているデータは どうやって作成されるのか?
© ZOZO Technologies, Inc. 非リアルタイムなAPI ・注文情報・商品情報の参照などを行う 16 各種 カートシステム 注文
/ 商品 etc. A バッチ処理によって 作成されています。
© ZOZO Technologies, Inc. バッチ処理の概要 17 ZOZOBASE 商品ID一覧を取得 IDを元に商品情報を取得 IDごとにエンキュー
商品ID一覧を保存
© ZOZO Technologies, Inc. バッチ処理の概要 18 ZOZOBASE 商品ID一覧を取得 IDを元に商品情報を取得 IDごとにエンキュー
商品ID一覧を保存 APIで参照していたデータ
© ZOZO Technologies, Inc. バッチ(商品同期) 19 ZOZOBASE ① ② ③
① 商品ID一覧をS3に設置 ② 商品ID一覧をパース ③ 商品情報を保存
© ZOZO Technologies, Inc. 商品同期(1/3) 20 ② ③ ZOZOBASEから取得した 商品ID一覧をS3に設置
ZOZOBASE ①
© ZOZO Technologies, Inc. 21 ZOZOBASE 1. CloudWatch EventsをトリガーにLambdaが起動 2.
ZOZOBASEから商品IDの一覧を取得 3. 取得したデータをS3のバケットに設置 ① 1. 2. 3.
© ZOZO Technologies, Inc. 商品同期(2/3) 22 ZOZOBASE ① ③ ②
商品ID一覧を 1つずつキューに入れる
© ZOZO Technologies, Inc. 23 1. S3イベントをトリガーにLambdaが起動 2. Lambdaによりバケットの内容がSQSにキューイングされる ②
1. 2.
© ZOZO Technologies, Inc. 商品同期(3/3) 24 ① ② ZOZOBASE キューの情報を元に
商品情報を取得・保存 ③
© ZOZO Technologies, Inc. 1. CloudWatch EventsをトリガーでLambdaが起動 2. SQSのメッセージの内容を取り出す 3.
取り出したメッセージを元に商品詳細を取得 4. 取得したデータをDynamoDBに保存 ③ ZOZOBASE 1. 2. 3. 4.
© ZOZO Technologies, Inc. バッチ(商品同期) 26 ZOZOBASE 商品ID一覧を取得 IDを元に商品情報を取得 IDごとにエンキュー
商品ID一覧を保存
© ZOZO Technologies, Inc. • S3イベント • CloudWatch Events •
DynamoDB Streams 使用しているイベントの例 27
© ZOZO Technologies, Inc. • S3イベント(オブジェクト作成) • CloudWatch Events •
DynamoDB Streams 使用しているイベントの例 28 .json
© ZOZO Technologies, Inc. • S3イベント • CloudWatch Events (cronやrate) •
DynamoDB Streams 使用しているイベントの例 29 1. cron(40 10 * * ? *) → 毎日午前10時40分 2. cron(0/10 * ? * MON-FRI *) → 平日の30分ごと 3. rate(30 minutes) → 30分ごと
© ZOZO Technologies, Inc. • S3イベント • CloudWatch Events •
DynamoDB Streams (DBの更新検知) 使用しているイベントの例 30 ・作成・更新・削除
© ZOZO Technologies, Inc. 1. FBZ APIのサービス概要 2. FBZ APIに求められた要件
3. サービスで実現するサーバーレスアーキテクチャ 4. サーバーレスを採用した結果 目次 31
© ZOZO Technologies, Inc. • スパイクが発生しても自動でスケール • 問題発生時のリカバリが容易に • ベンダー側(AWS)で定期的にサービスの機能更新を実施
• インフラ管理が不要 etc. サーバーレスを採用した結果 32
© ZOZO Technologies, Inc. セール時のスパイクにも対応 33 API Gateway リクエスト数 2019
8月 2019 12月
© ZOZO Technologies, Inc. セール時のスパイクにも対応 34 7〜8倍近くリクエストにも 耐えた実績 2019 8月
2019 12月 API Gateway リクエスト数
© ZOZO Technologies, Inc. 問題が発生した場合のリカバリが容易 35 不正.json Lambdaがエラーになる
© ZOZO Technologies, Inc. 問題が発生した場合のリカバリが容易 36 修正.json ファイルの再設置だけで 後続処理まで進む
© ZOZO Technologies, Inc. おまけ 37
© ZOZO Technologies, Inc. FBZで使用しているAWSサービス 38 Lambda SQS CloudFormation Route
53 Elasticsearch Service CodeBuild Cognito S3 CodePipeline SES CloudWatch Step Functions DynamoDB API Gateway IAM CloudFront Amazon VPC SNS X-Ray AWS WAF
© ZOZO Technologies, Inc. 1500 750 500 150 FBZ APIの全容
39 APIエンドポイント数 Lambda関数 DynamoDBテーブル SQSキュー 大規模サービスでもインフラ管理無しに稼働できている(※2020年 11月時点)
None