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
大規模トラフィックを支えるサーバーレスアーキテクチャ / Serverless Archite...
Search
Yusuke Kageyama
August 31, 2023
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模トラフィックを支えるサーバーレスアーキテクチャ / Serverless Architecture to Support Large Scale Traffic
私たちのサーバーレスアーキテクチャ構成はこれだ! Lunch LT
Yusuke Kageyama
August 31, 2023
More Decks by Yusuke Kageyama
See All by Yusuke Kageyama
AWSフルマネージドサービスにおける監視と運用 / Monitoring and Operation in AWS Fully Managed Services
mtkage
1
1.7k
Other Decks in Technology
See All in Technology
AIエージェントを雇う前に決める5つのこと
knishioka
1
160
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
180
JAWS-UG初心者支部#88わいわい初心塾(夏休みの宿題やったかGit編)
otsuki
0
120
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.6k
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
180
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.1k
[RSJ26] Building a VLA Model Based on Self-Distilled Classification
keio_smilab
PRO
0
190
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
230
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
140
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
700
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
340
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Google's AI Overviews - The New Search
badams
0
1.6k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
Into the Great Unknown - MozCon
thekraken
41
2.7k
We Are The Robots
honzajavorek
0
330
Music & Morning Musume
bryan
47
7.4k
Code Review Best Practice
trishagee
74
20k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Mind Mapping
helmedeiros
PRO
1
340
Transcript
大規模トラフィックを支えるサーバー レスアーキテクチャ 私たちのサーバーレスアーキテクチャ構成はこれだ! Lunch LT 株式会社ZOZO ブランドソリューション開発本部 ZOZOMO部 FBZブロック
蔭山 雄介 Copyright © ZOZO, Inc. 1
© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 ZOZOMO部 FBZブロック 蔭山 雄介 2016年にバックエンドエンジニアとして新卒入社
現在は物流支援サービスやOMOサービスでのSRE / バック エンド領域の業務に従事 2
© ZOZO, Inc. https://zozo.jp/ 3 • ファッションEC • 1,500以上のショップ、8,900以上のブランドの取り扱い •
常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着 商 品を掲載(2023年6月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
© ZOZO, Inc. 4 https://fbz.zozo.com/ • ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス • 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメント業務
を、ZOZOTOWNの物流センター「ZOZOBASE」が受託 • 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可能 • 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能 これにより、商品欠品による販売機会の損失を最小化
© ZOZO, Inc. Fulfillment by ZOZO(以下FBZ)ではAWS Lambdaを主軸としてAWSが提供しているフルマネージドサービス のみを利用してサーバーレスアーキテクチャを実現 Fulfillment by
ZOZO(FBZ)で採用しているアーキテクチャ 5
© ZOZO, Inc. サービスの特性上、ZOZOTOWNとサービスを利用していただいているブランドさまのECサイトとのデータ 連携(在庫情報・出荷情報など)を素早く行う必要があった なぜサーバーレスなのか 6 アパレルEC特有の急激なトラフィックの増減(人気商品販売やセール開始時など) に対して運用コストを最低限に押さえつつ、機能開発に集中できるサーバーレス構成を採用
© ZOZO, Inc. • 言語: Python • 実行基盤: AWS Lambda
• データベース: Amazon DynamoDB、Amazon OpenSearch Service • ストレージ・メッセージング: Amazon S3、Amazon SQS • インテグレーション: Amazon API Gateway、Amazon EventBridge • ネットワーク: Amazon VPC、Amazon CloudFront • セキュリティ: Amazon Cognito、AWS WAF • 監視: Amazon CloudWatch • 構成管理: Serverless Framework、Amazon CloudFormation • CI/CD: Amazon CodeBuild、GitHub Actions • 設計思想: DDD、レイヤードアーキテクチャ 技術スタック 7
© ZOZO, Inc. 技術スタック 8
© ZOZO, Inc. API Gateway、Lambda、DynamoDBなどで水平スケールしやすいをAPIを実現 ZOZOTOWNとデータをリアルタイムに連携する ブランドさまECとFBZとの連携 9
© ZOZO, Inc. 非同期で問題ない処理は一時的にDynamoDBへ登録しておき、DynamoDB Streamsを経由して流量をコント ロールしつつ非同期で処理を行う ブランドさまECとFBZとの連携 10
© ZOZO, Inc. 大量のデータ(在庫情報や出荷情報)を高速に取り込みブランドさまECへ連携するため、イベント駆動アーキ テクチャを採用 1つのLambda関数内での処理をできるだけ少なくし、S3やSQSといったマネージドサービスに送ることで次の Lambda関数へデータを加工しつつ数珠つなぎで繋げていく FBZとZOZOTOWNとの連携 11
© ZOZO, Inc. FBZとZOZOTOWNとの連携 12
© ZOZO, Inc. サーバーレスは無限にスケールできるわけではなく、一定の実行制限を超えるとサービス障害となる サービスが正常に稼働しているかどうか、各種データをもとにDatadogで一元監視 • CloudWatchメトリクス ◦ Lambda実行数 ◦
API Gateway実行数 ◦ SQSメッセージ数 ◦ カスタムメトリクス • Datadog APM システム監視 13
© ZOZO, Inc. イベント駆動アーキテクチャをベースとしたことで大量のデータ処理を並列に処理でき、なおかつ運用時 のリカバリ作業がやりやすい ◦ リカバリしたいデータをトリガー元のマネージドサービスに登録するだけですべてリカバリできる 緩急が激しいトラフィックを常に最適化されたリソースで受けきれる ◦
必要なときに必要なリソースが高速に展開されるため、サービス監視でよくあるCPU使用率監視など が不要に ◦ イベント前の増強作業や定期的なスペック見直し作業なども不要に サーバーレスアーキテクチャを採用してみて 14
© ZOZO, Inc. サーバーレスアーキテクチャでRDBが使いづらい ◦ DynamoDBでは実現できない検索をOpenSearch Serviceを利用して実現しているが、RDBほど使い勝 手がよくない ▪ AWSだとRDS
ProxyといったLambdaから利用しやすい仕組みがあるため、そちらを利用するのが良 さそう 複数回実行されても問題ない実装が必要 ◦ 発行されるトリガーが1度だけ実行されるとは限らないため、どの処理において多重に実行しても問題 にないように実装に落とし込む必要がある サーバーレスアーキテクチャを採用してみて 15
© ZOZO, Inc. 今回の資料は過去に弊社テックブログで公開した内容をもとにお話させていただきました 興味がある方はぜひテックブログもご覧ください! 物流支援サービスを支えるAWSサーバーレスアーキテクチャ戦略 https://techblog.zozo.com/entry/aws-serverless-architecture-strategy
おわりに 16
None