Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ZOZOTOWNマイクロサービス化に向けたサービス粒度の話/Service granularity for ZOZOTOWN microservices
Tomoya Takahashi
September 10, 2021
0
900
ZOZOTOWNマイクロサービス化に向けたサービス粒度の話/Service granularity for ZOZOTOWN microservices
Tomoya Takahashi
September 10, 2021
Tweet
Share
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
295
110k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Why Our Code Smells
bkeepers
PRO
324
54k
Building a Scalable Design System with Sketch
lauravandoore
447
30k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
GitHub's CSS Performance
jonrohan
1020
410k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Six Lessons from altMBA
skipperchong
14
1.3k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
What's in a price? How to price your products and services
michaelherold
229
9.3k
Scaling GitHub
holman
451
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
14
35k
Transcript
ZOZOTOWNマイクロサービス化に 向けたサービス粒度の話 ZOZO Tech Meetup 〜ZOZOTOWNアーキテクトナイト〜 2021/09/09 株式会社ZOZOテクノロジーズ EC基盤本部 ECプラットフォーム部 高橋
智也 Copyright © ZOZO Technologies, Inc.
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ EC基盤本部 ECプラットフォーム部 高橋 智也 2011年、株式会社スタートトゥデイ(現:株式会社ZOZO)中途入社。 バックエンドエンジニアとして、ZOZOTOWN、WEARにおける
多数のプロジェクトに従事。 現在は、バックエンド領域において、ZOZOTOWNリプレイス プロジェクトを推進する部署を担当。 2
© ZOZO Technologies, Inc. アジェンダ • ZOZOTOWNリプレイスの目的 • ZOZOTOWNのアーキテクチャ
• マイクロサービス粒度の考慮ポイント • まとめ 3
© ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的 4
© ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的 5 柔軟なシステム 開発生産性 技術のモダン化 採用強化
• 中長期目標:商品取扱高5,000億円を捌けるシステム • セールなどの高負荷イベント時におけるスケール可能な柔軟なシステム • 事業における各種施策を適切なタイミングで展開したい • 事業案件だけでなく、作り手視点でのやりたいことにも時間を使えるように したい • エンジニアとしての成長に繋がる経験が出来ることによる採用強化を図りたい • レガシー技術を利用していることによる独自実装ケースを減らしたい • 新メンバーがZOZOTOWNのシステムを理解するための時間を減らしたい • Datadog、SentryなどのSaaSを利用し運用監視を効率化したい • 技術情報のアウトプットによるZOZOエンジニアの認知を向上させたい
© ZOZO Technologies, Inc. ZOZOTOWNリプレイスの目的 6 柔軟なシステム 開発生産性 技術のモダン化 採用強化
• お客様にいつでも快適に買い物をしていただけるサービスを提供するため • ZOZOTOWNの成長のため • 中長期目標:商品取扱高5,000億円を捌けるシステム • セールなどの高負荷イベント時におけるスケール可能な柔軟なシステム • 事業における各種施策を適切なタイミングで展開したい • 事業案件だけでなく、作り手視点でのやりたいことにも時間を使えるように したい • レガシー技術を利用していることによる独自実装ケースを減らしたい • 新メンバーがZOZOTOWNのシステムを理解するための時間を減らしたい • Datadog、SentryなどのSaaSを利用し運用監視を効率化したい • 技術情報のアウトプットによるZOZOエンジニアの認知を向上させたい • エンジニアとしての成長に繋がる経験が出来ることによる採用強化を図りたい
© ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ 7
© ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ 8 オンプレ IIS (Web) DB
推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 現在 ※一部省略している箇所があります IIS (API) PC / SP ブラウザ iOS / Android App
© ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ 9 IIS (Web) DB 推薦基盤
ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 現在 IIS (API) ※一部省略している箇所があります PC / SP ブラウザ iOS / Android App オンプレ 一部の機能がマイクロサービスとして稼働しており、最終的なマイクロサービスの形が未定義
© ZOZO Technologies, Inc. ZOZOTOWNのアーキテクチャ 10 オンプレ IIS (Web) DB
推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 今後(仮) IIS (API) 会員基盤 カート決済基盤 セッション基盤 ログ基盤 ※一部省略している箇所があります PC / SP ブラウザ iOS / Android App
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント 11
© ZOZO Technologies, Inc. マイクロサービス粒度を考える上で我々が重視した考え マイクロサービス粒度の考慮ポイント 開発、運用、組織の側面から考えたときに、 事業が展開しやすいアーキテクチャとなっているのか。
12
© ZOZO Technologies, Inc. なぜ、この考えを重視したか • 開発の生産性を高めること • 運用の柔軟性を高めること
• 現在の組織をマイクロサービスに合わせ、最適化すること マイクロサービス粒度の考慮ポイント 13 ZOZOTOWNの継続的な成長に欠かせない要素であり、 お客様にいつでも快適に買い物をしていただけるサービスを提供することに繋がる
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面 14
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面 • システムにおける機能とデータ、データとデータの関連性を把握する ◦
サービス単独での意思決定やデプロイを含めた効率的な開発フローを実行したい(自律性) ◦ 分散トランザクションによるサービス間データ不整合の可能性を極力小さくしたい ▪ 機能:商品詳細、商品検索、推薦、カート投入、購入、ログイン、会員登録、会員メニューなど ▪ データ:商品情報、在庫、ブランド、ショップ、カテゴリ、会員、外部ID連携、注文など • 事業展開において、どの機能に対する開発が多いのか把握する ◦ 特定のチームに開発が偏らないように、チームの担当サービス、人員配置を決定したい ▪ 材料:JIRA、GitHub、開発ロードマップなど 15
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 開発における側面 • システムにおける機能とデータ、データとデータの関連性を把握する ◦
サービス単独での意思決定やデプロイを含めた効率的な開発フローを実行したい(自律性) ◦ 分散トランザクションによるサービス間データ不整合の可能性を極力小さくしたい ▪ 機能:商品詳細、商品検索、推薦、カート投入、購入、ログイン、会員登録、会員メニューなど ▪ データ:商品情報、在庫、ブランド、ショップ、カテゴリ、会員、外部ID連携、注文など • 事業展開において、どの機能に対する開発が多いのか把握する ◦ 特定のチームに開発が偏らないように、チームの担当サービス、人員配置を決定したい ▪ 材料:JIRA、GitHub、開発ロードマップなど 開発において、各チームに適切なサービスの担当、適切な人員リソースを割当て、 各チーム(サービス)が自律性を持ち、開発生産性を最大化出来るようにする 16
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面 17
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面 • 事業特性や過去実施イベント、障害記録を分析し、 高負荷になる機能を把握する
◦ セール、ZOZOWEEK、福袋 ◦ 過熱商品販売 ◦ LINE、メルマガ、PUSH配信 ◦ PayPayキャンペーン ◦ ショップクーポン ↓ ◦ カート投入、購入 ◦ 認証 ◦ 商品検索 18 A B C D A B C D A C D B モノリス マイクロサービス
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 運用における側面 • 事業特性や過去実施イベント、障害記録を分析し、 高負荷になる機能を把握する
◦ セール、ZOZOWEEK、福袋 ◦ 過熱商品販売 ◦ LINE、メルマガ、PUSH配信 ◦ PayPayキャンペーン ◦ ショップクーポン ↓ ◦ カート投入、購入 ◦ 認証 ◦ 商品検索 運用において、リソース増強が必要な機能をきちんと把握し、 効果的に実施出来るようにする 19 A B C D A B C D A C D B モノリス マイクロサービス
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面 20
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面 • 業務知識の専門性が高い機能を把握する ◦
技術スタックや人員配置・教育面で、他サービスと特徴が異なる可能性がある ▪ カート投入、購入 ▪ 商品検索 ▪ 推薦 • 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する ◦ 大幅な組織変更になってしまうのを極力避けたい ▪ 新任チームリーダーの必要性、教育 ▪ チームビルディングの難易度 ▪ チーム間の連携 21
© ZOZO Technologies, Inc. マイクロサービス粒度の考慮ポイント - 組織における側面 • 業務知識の専門性が高い機能を把握する ◦
技術スタックや人員配置・教育面で、他サービスと特徴が異なる可能性がある ▪ カート投入、購入 ▪ 商品検索 ▪ 推薦 • 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する ◦ 大幅な組織変更になってしまうのを極力避けたい ▪ 新任チームリーダーの必要性、教育 ▪ チームビルディングの難易度 ▪ チーム間の連携 22 現実的な組織変更を少しずつ重ねることで、組織(チーム)を最適化する
© ZOZO Technologies, Inc. (再掲)ZOZOTOWNのアーキテクチャ 23 オンプレ IIS (Web) DB
推薦基盤 ID基盤 DB DB etc. AWS GCP ストアド ストアド ストアド API Gateway 商品基盤 検索基盤 今後(仮) IIS (API) 会員基盤 カート決済基盤 セッション基盤 ログ基盤 ※一部省略している箇所があります PC / SP ブラウザ iOS / Android App
© ZOZO Technologies, Inc. (再掲)マイクロサービス粒度の考慮ポイント 開発、運用、組織の側面から考えたときに、 事業が展開しやすいアーキテクチャとなっているのか。 24 マイクロサービス粒度を考える上で我々が重視した考え
© ZOZO Technologies, Inc. (補足)サービス横断による統制 • 開発ガイドラインの整備 ◦ インフラ、iOS、Android、Backend、Frontend、DBなど
• 標準技術スタックの定義 ◦ 人事(採用・異動)と教育面で困るため ◦ あくまでも標準であり、定義外の技術を使用出来ないということではない • リリースフローの標準化 ◦ CI/CDによるデプロイの話ではなく、ある特定の要件を満たした案件を進める場合に必要なフロー ◦ 企画、設計、テストレビューなど ◦ 関係各所との調整漏れやセキュリティリスクの露呈による手戻りを回避するため 25
© ZOZO Technologies, Inc. まとめ 26
© ZOZO Technologies, Inc. まとめ • ZOZOTOWNリプレイスの目的
27 柔軟なシステム 開発生産性 技術のモダン化 採用強化 • お客様にいつでも快適に買い物をしていただけるサービスを提供するため • ZOZOTOWNの成長のため
© ZOZO Technologies, Inc. まとめ • マイクロサービス粒度の考慮ポイント マイクロサービス粒度を考える上で我々が重視した考え
◦ 開発における側面 ▪ システムにおける機能とデータ、データとデータの関連性を把握する ▪ 事業展開において、どの機能に対する開発が多いのか把握する ◦ 運用における側面 ▪ 事業特性や過去実施イベント、障害記録を分析し、高負荷になる機能を把握する ◦ 組織における側面 ▪ 業務知識の専門性が高い機能を把握する ▪ 現在の開発体制と、マイクロサービスに合わせた組織体制のギャップを把握する 28 開発、運用、組織の側面から考えたときに、 事業が展開しやすいアーキテクチャとなっているのか。
None