Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZOZOTOWNマイクロサービス化に向けたサービス粒度の話/Service granularity for ZOZOTOWN microservices

9f682bdae0d2f255a65adb39c5b56717?s=47 Tomoya Takahashi
September 10, 2021
900

ZOZOTOWNマイクロサービス化に向けたサービス粒度の話/Service granularity for ZOZOTOWN microservices

9f682bdae0d2f255a65adb39c5b56717?s=128

Tomoya Takahashi

September 10, 2021
Tweet

Transcript

  1. ZOZOTOWNマイクロサービス化に
 向けたサービス粒度の話
 ZOZO Tech Meetup 〜ZOZOTOWNアーキテクトナイト〜
 2021/09/09
 株式会社ZOZOテクノロジーズ
 EC基盤本部 ECプラットフォーム部
 高橋

    智也 Copyright © ZOZO Technologies, Inc.
  2. © ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ
 EC基盤本部 ECプラットフォーム部
 高橋 智也
 2011年、株式会社スタートトゥデイ(現:株式会社ZOZO)中途入社。
 バックエンドエンジニアとして、ZOZOTOWN、WEARにおける


    多数のプロジェクトに従事。
 現在は、バックエンド領域において、ZOZOTOWNリプレイス
 プロジェクトを推進する部署を担当。
 
 2
  3. © ZOZO Technologies, Inc. アジェンダ
 • ZOZOTOWNリプレイスの目的
 
 • ZOZOTOWNのアーキテクチャ


    
 • マイクロサービス粒度の考慮ポイント
 
 • まとめ
 
 3
  4. © ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的
 4

  5. © ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的
 5 柔軟なシステム 開発生産性 技術のモダン化 採用強化

    • 中長期目標:商品取扱高5,000億円を捌けるシステム
 • セールなどの高負荷イベント時におけるスケール可能な柔軟なシステム
 • 事業における各種施策を適切なタイミングで展開したい
 • 事業案件だけでなく、作り手視点でのやりたいことにも時間を使えるように
 したい
 • エンジニアとしての成長に繋がる経験が出来ることによる採用強化を図りたい
 • レガシー技術を利用していることによる独自実装ケースを減らしたい
 • 新メンバーがZOZOTOWNのシステムを理解するための時間を減らしたい
 • Datadog、SentryなどのSaaSを利用し運用監視を効率化したい
 • 技術情報のアウトプットによるZOZOエンジニアの認知を向上させたい

  6. © ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的
 6 柔軟なシステム 開発生産性 技術のモダン化 採用強化

    • お客様にいつでも快適に買い物をしていただけるサービスを提供するため
 • ZOZOTOWNの成長のため
 • 中長期目標:商品取扱高5,000億円を捌けるシステム
 • セールなどの高負荷イベント時におけるスケール可能な柔軟なシステム
 • 事業における各種施策を適切なタイミングで展開したい
 • 事業案件だけでなく、作り手視点でのやりたいことにも時間を使えるように
 したい
 • レガシー技術を利用していることによる独自実装ケースを減らしたい
 • 新メンバーがZOZOTOWNのシステムを理解するための時間を減らしたい
 • Datadog、SentryなどのSaaSを利用し運用監視を効率化したい
 • 技術情報のアウトプットによるZOZOエンジニアの認知を向上させたい
 • エンジニアとしての成長に繋がる経験が出来ることによる採用強化を図りたい

  7. © ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ
 7

  8. © ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ
 8 オンプレ IIS (Web) DB

    推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 現在
 ※一部省略している箇所があります
 IIS (API) PC / SP ブラウザ iOS / Android App
  9. © ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ
 9 IIS (Web) DB 推薦基盤

    ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 現在
 IIS (API) ※一部省略している箇所があります
 PC / SP ブラウザ iOS / Android App オンプレ 一部の機能がマイクロサービスとして稼働しており、最終的なマイクロサービスの形が未定義

  10. © ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ
 10 オンプレ IIS (Web) DB

    推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 今後(仮)
 IIS (API) 会員基盤 カート決済基盤 セッション基盤 ログ基盤 ※一部省略している箇所があります
 PC / SP ブラウザ iOS / Android App
  11. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント
 11

  12. © ZOZO Technologies, Inc. マイクロサービス粒度を考える上で我々が重視した考え
 
 
 マイクロサービス粒度の考慮ポイント
 開発、運用、組織の側面から考えたときに、
 事業が展開しやすいアーキテクチャとなっているのか。


    12
  13. © ZOZO Technologies, Inc. なぜ、この考えを重視したか
 
 • 開発の生産性を高めること
 • 運用の柔軟性を高めること


    • 現在の組織をマイクロサービスに合わせ、最適化すること
 
 
 マイクロサービス粒度の考慮ポイント
 13 ZOZOTOWNの継続的な成長に欠かせない要素であり、
 お客様にいつでも快適に買い物をしていただけるサービスを提供することに繋がる

  14. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面
 14

  15. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面
 • システムにおける機能とデータ、データとデータの関連性を把握する
 ◦

    サービス単独での意思決定やデプロイを含めた効率的な開発フローを実行したい(自律性)
 ◦ 分散トランザクションによるサービス間データ不整合の可能性を極力小さくしたい
 
 ▪ 機能:商品詳細、商品検索、推薦、カート投入、購入、ログイン、会員登録、会員メニューなど
 ▪ データ:商品情報、在庫、ブランド、ショップ、カテゴリ、会員、外部ID連携、注文など
 
 • 事業展開において、どの機能に対する開発が多いのか把握する
 ◦ 特定のチームに開発が偏らないように、チームの担当サービス、人員配置を決定したい
 
 ▪ 材料:JIRA、GitHub、開発ロードマップなど
 
 
 
 
 15
  16. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面
 • システムにおける機能とデータ、データとデータの関連性を把握する
 ◦

    サービス単独での意思決定やデプロイを含めた効率的な開発フローを実行したい(自律性)
 ◦ 分散トランザクションによるサービス間データ不整合の可能性を極力小さくしたい
 
 ▪ 機能:商品詳細、商品検索、推薦、カート投入、購入、ログイン、会員登録、会員メニューなど
 ▪ データ:商品情報、在庫、ブランド、ショップ、カテゴリ、会員、外部ID連携、注文など
 
 • 事業展開において、どの機能に対する開発が多いのか把握する
 ◦ 特定のチームに開発が偏らないように、チームの担当サービス、人員配置を決定したい
 
 ▪ 材料:JIRA、GitHub、開発ロードマップなど
 
 
 開発において、各チームに適切なサービスの担当、適切な人員リソースを割当て、
 各チーム(サービス)が自律性を持ち、開発生産性を最大化出来るようにする
 
 
 16
  17. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面
 17

  18. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面
 • 事業特性や過去実施イベント、障害記録を分析し、
 高負荷になる機能を把握する


    
 ◦ セール、ZOZOWEEK、福袋
 ◦ 過熱商品販売
 ◦ LINE、メルマガ、PUSH配信
 ◦ PayPayキャンペーン
 ◦ ショップクーポン
      ↓
 ◦ カート投入、購入
 ◦ 認証
 ◦ 商品検索
 
 18 A B C D A B C D A C D B モノリス
 マイクロサービス

  19. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面
 • 事業特性や過去実施イベント、障害記録を分析し、
 高負荷になる機能を把握する


    
 ◦ セール、ZOZOWEEK、福袋
 ◦ 過熱商品販売
 ◦ LINE、メルマガ、PUSH配信
 ◦ PayPayキャンペーン
 ◦ ショップクーポン
      ↓
 ◦ カート投入、購入
 ◦ 認証
 ◦ 商品検索
 
 運用において、リソース増強が必要な機能をきちんと把握し、
 効果的に実施出来るようにする
 19 A B C D A B C D A C D B モノリス
 マイクロサービス

  20. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面
 20

  21. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面
 • 業務知識の専門性が高い機能を把握する
 ◦

    技術スタックや人員配置・教育面で、他サービスと特徴が異なる可能性がある
 ▪ カート投入、購入
 ▪ 商品検索
 ▪ 推薦
 
 • 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する
 ◦ 大幅な組織変更になってしまうのを極力避けたい
 ▪ 新任チームリーダーの必要性、教育
 ▪ チームビルディングの難易度
 ▪ チーム間の連携
 
 21
  22. © ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面
 • 業務知識の専門性が高い機能を把握する
 ◦

    技術スタックや人員配置・教育面で、他サービスと特徴が異なる可能性がある
 ▪ カート投入、購入
 ▪ 商品検索
 ▪ 推薦
 
 • 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する
 ◦ 大幅な組織変更になってしまうのを極力避けたい
 ▪ 新任チームリーダーの必要性、教育
 ▪ チームビルディングの難易度
 ▪ チーム間の連携
 
 22 現実的な組織変更を少しずつ重ねることで、組織(チーム)を最適化する

  23. © ZOZO Technologies, Inc. (再掲)ZOZOTOWNのアーキテクチャ
 23 オンプレ IIS (Web) DB

    推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 今後(仮)
 IIS (API) 会員基盤 カート決済基盤 セッション基盤 ログ基盤 ※一部省略している箇所があります
 PC / SP ブラウザ iOS / Android App
  24. © ZOZO Technologies, Inc. (再掲)マイクロサービス粒度の考慮ポイント
 開発、運用、組織の側面から考えたときに、
 事業が展開しやすいアーキテクチャとなっているのか。
 24 マイクロサービス粒度を考える上で我々が重視した考え
 


  25. © ZOZO Technologies, Inc. (補足)サービス横断による統制
 • 開発ガイドラインの整備
 ◦ インフラ、iOS、Android、Backend、Frontend、DBなど
 


    • 標準技術スタックの定義
 ◦ 人事(採用・異動)と教育面で困るため
 ◦ あくまでも標準であり、定義外の技術を使用出来ないということではない
 
 • リリースフローの標準化
 ◦ CI/CDによるデプロイの話ではなく、ある特定の要件を満たした案件を進める場合に必要なフロー
 ◦ 企画、設計、テストレビューなど
 ◦ 関係各所との調整漏れやセキュリティリスクの露呈による手戻りを回避するため
 25
  26. © ZOZO Technologies, Inc. まとめ
 26

  27. © ZOZO Technologies, Inc. まとめ
 • ZOZOTOWNリプレイスの目的
 
 
 


    
 
 
 
 
 
 
 
 
 27 柔軟なシステム 開発生産性 技術のモダン化 採用強化 • お客様にいつでも快適に買い物をしていただけるサービスを提供するため
 • ZOZOTOWNの成長のため

  28. © ZOZO Technologies, Inc. まとめ
 • マイクロサービス粒度の考慮ポイント
  マイクロサービス粒度を考える上で我々が重視した考え
 
 


    
 
 ◦ 開発における側面
 ▪ システムにおける機能とデータ、データとデータの関連性を把握する
 ▪ 事業展開において、どの機能に対する開発が多いのか把握する
 
 ◦ 運用における側面
 ▪ 事業特性や過去実施イベント、障害記録を分析し、高負荷になる機能を把握する
 
 ◦ 組織における側面
 ▪ 業務知識の専門性が高い機能を把握する
 ▪ 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する
 28 開発、運用、組織の側面から考えたときに、
 事業が展開しやすいアーキテクチャとなっているのか。

  29. None