Slide 1

Slide 1 text

大規模トラフィックを支えるサーバー レスアーキテクチャ
 私たちのサーバーレスアーキテクチャ構成はこれだ! Lunch LT
 株式会社ZOZO
 ブランドソリューション開発本部 ZOZOMO部 FBZブロック
 
 蔭山 雄介 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO
 ブランドソリューション開発本部 ZOZOMO部 FBZブロック 蔭山 雄介
 2016年にバックエンドエンジニアとして新卒入社
 現在は物流支援サービスやOMOサービスでのSRE / バック エンド領域の業務に従事
 
 2

Slide 3

Slide 3 text

© ZOZO, Inc. https://zozo.jp/
 3 ● ファッションEC
 ● 1,500以上のショップ、8,900以上のブランドの取り扱い
 ● 常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着 商 品を掲載(2023年6月末時点)
 ● ブランド古着のファッションゾーン「ZOZOUSED」や
 コスメ専門モール「ZOZOCOSME」、靴の専門モール
 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン
 「ZOZOVILLA」を展開
 ● 即日配送サービス
 ● ギフトラッピングサービス
 ● ツケ払い など


Slide 4

Slide 4 text

© ZOZO, Inc. 4 https://fbz.zozo.com/
 
 ● ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス
 ● 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメント業務 を、ZOZOTOWNの物流センター「ZOZOBASE」が受託
 ● 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可能
 ● 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能
 これにより、商品欠品による販売機会の損失を最小化
 


Slide 5

Slide 5 text

© ZOZO, Inc. Fulfillment by ZOZO(以下FBZ)ではAWS Lambdaを主軸としてAWSが提供しているフルマネージドサービス のみを利用してサーバーレスアーキテクチャを実現
 Fulfillment by ZOZO(FBZ)で採用しているアーキテクチャ
 5

Slide 6

Slide 6 text

© ZOZO, Inc. サービスの特性上、ZOZOTOWNとサービスを利用していただいているブランドさまのECサイトとのデータ 連携(在庫情報・出荷情報など)を素早く行う必要があった
 
 なぜサーバーレスなのか
 6 アパレルEC特有の急激なトラフィックの増減(人気商品販売やセール開始時など)
 に対して運用コストを最低限に押さえつつ、機能開発に集中できるサーバーレス構成を採用

Slide 7

Slide 7 text

© 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

Slide 8

Slide 8 text

© ZOZO, Inc. 技術スタック
 8

Slide 9

Slide 9 text

© ZOZO, Inc. API Gateway、Lambda、DynamoDBなどで水平スケールしやすいをAPIを実現
 ZOZOTOWNとデータをリアルタイムに連携する
 ブランドさまECとFBZとの連携
 9

Slide 10

Slide 10 text

© ZOZO, Inc. 非同期で問題ない処理は一時的にDynamoDBへ登録しておき、DynamoDB Streamsを経由して流量をコント ロールしつつ非同期で処理を行う
 ブランドさまECとFBZとの連携
 10

Slide 11

Slide 11 text

© ZOZO, Inc. 大量のデータ(在庫情報や出荷情報)を高速に取り込みブランドさまECへ連携するため、イベント駆動アーキ テクチャを採用
 
 1つのLambda関数内での処理をできるだけ少なくし、S3やSQSといったマネージドサービスに送ることで次の Lambda関数へデータを加工しつつ数珠つなぎで繋げていく
 FBZとZOZOTOWNとの連携
 11

Slide 12

Slide 12 text

© ZOZO, Inc. FBZとZOZOTOWNとの連携
 12

Slide 13

Slide 13 text

© ZOZO, Inc. サーバーレスは無限にスケールできるわけではなく、一定の実行制限を超えるとサービス障害となる
 サービスが正常に稼働しているかどうか、各種データをもとにDatadogで一元監視
 ● CloudWatchメトリクス
 ○ Lambda実行数
 ○ API Gateway実行数
 ○ SQSメッセージ数
 ○ カスタムメトリクス
 ● Datadog APM
 
 
 システム監視
 13

Slide 14

Slide 14 text

© ZOZO, Inc. イベント駆動アーキテクチャをベースとしたことで大量のデータ処理を並列に処理でき、なおかつ運用時 のリカバリ作業がやりやすい
 ○ リカバリしたいデータをトリガー元のマネージドサービスに登録するだけですべてリカバリできる
 
 緩急が激しいトラフィックを常に最適化されたリソースで受けきれる
 ○ 必要なときに必要なリソースが高速に展開されるため、サービス監視でよくあるCPU使用率監視など が不要に
 ○ イベント前の増強作業や定期的なスペック見直し作業なども不要に
 サーバーレスアーキテクチャを採用してみて
 14

Slide 15

Slide 15 text

© ZOZO, Inc. サーバーレスアーキテクチャでRDBが使いづらい
 ○ DynamoDBでは実現できない検索をOpenSearch Serviceを利用して実現しているが、RDBほど使い勝 手がよくない
 ■ AWSだとRDS ProxyといったLambdaから利用しやすい仕組みがあるため、そちらを利用するのが良 さそう
 
 複数回実行されても問題ない実装が必要
 ○ 発行されるトリガーが1度だけ実行されるとは限らないため、どの処理において多重に実行しても問題 にないように実装に落とし込む必要がある
 サーバーレスアーキテクチャを採用してみて
 15

Slide 16

Slide 16 text

© ZOZO, Inc. 今回の資料は過去に弊社テックブログで公開した内容をもとにお話させていただきました
 興味がある方はぜひテックブログもご覧ください!
 
 
 
 物流支援サービスを支えるAWSサーバーレスアーキテクチャ戦略
 https://techblog.zozo.com/entry/aws-serverless-architecture-strategy
 おわりに
 16

Slide 17

Slide 17 text

No content