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 Architecture to Support Large Scale Traffic
Search
Yusuke Kageyama
August 31, 2023
Technology
0
550
大規模トラフィックを支えるサーバーレスアーキテクチャ / Serverless Architecture to Support Large Scale Traffic
私たちのサーバーレスアーキテクチャ構成はこれだ! Lunch LT
Yusuke Kageyama
August 31, 2023
Tweet
Share
More Decks by Yusuke Kageyama
See All by Yusuke Kageyama
AWSフルマネージドサービスにおける監視と運用 / Monitoring and Operation in AWS Fully Managed Services
mtkage
1
1.1k
Other Decks in Technology
See All in Technology
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
16
6.7k
株式会社EventHub・エンジニア採用資料
eventhub
0
2.1k
成長をサポートするピープルマネジメントのやり方
sioncojp
9
1.5k
中年男性がメインフレームから クラウドへキャリアシフトしてみた
uechishingo
1
460
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.6k
PhpStorm超絶技巧40分集中講義 #phpconkagawa
yusuke
4
660
本番環境で Cloudflareを 使ってみた話
miu_crescent
2
110
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
1.7k
Step by Stepで学ぶ、ADT(代数的データ型)、モナドからEffect-TSまで
leveragestech
1
2.2k
RailsConf 2024 Keynote "Startups on Rails in 2024"
irinanazarova
0
200
Kaggleで学ぶ系列データのための深層学習モデリング
yu4u
7
1.6k
エムスリーQAチーム紹介資料 / Introduction of M3 QA Team
m3_engineering
1
240
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.7k
Embracing the Ebb and Flow
colly
80
4.2k
Building Adaptive Systems
keathley
32
1.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
15
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.5k
The Invisible Customer
myddelton
114
12k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
We Have a Design System, Now What?
morganepeng
43
6.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.4k
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