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
Datadogと歩むZOZOTOWNの可観測性 / Observability of ZOZO...
Search
akitok
March 01, 2021
Technology
13k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Datadogと歩むZOZOTOWNの可観測性 / Observability of ZOZOTOWN with Datadog
akitok
March 01, 2021
More Decks by akitok
See All by akitok
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
2
1.5k
Policy as Code in practice
akitok_
0
24
持続可能なドキュメント運用のリアル: 1年間の成果とこれから
akitok_
2
610
明日から始める持続可能なドキュメンテーション戦略 / Sustainable Documentation Strategies: Documentation as a Product
akitok_
18
15k
Custom Query で監視が捗った話 / Monitoring with Custom Query
akitok_
0
1.2k
ZOZOTOWNのProduction Readiness Checklistと信頼性向上の取り組み / Improvement the reliability of ZOZOTOWN with Production Readiness Checklist
akitok_
9
12k
How to setup Production Ready Istio?
akitok_
1
2.6k
Other Decks in Technology
See All in Technology
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
110
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
450
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
550
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
Making sense of Google’s agentic dev tools
glaforge
1
260
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
9
4k
誤解だらけの開発生産性 / Myths and Misconceptions about Developer Productivity
i35_267
2
780
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.4k
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
290
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
710
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
230
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
210
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Ethics towards AI in product and experience design
skipperchong
2
330
Making Projects Easy
brettharned
120
6.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
New Earth Scene 8
popppiees
3
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
Datadogと歩む ZOZOTOWNの可観測性 Datadog Private Webinar for Z Holdings 2021/2/10 株式会社ZOZOテクノロジーズ
SRE部 小林 明斗 Copyright © ZOZO Technologies, Inc.
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ SRE部 小林 明斗 2020年7月にZOZOテクノロジーズへ中途入社 前職は通信系SIerでバックエンドやインフラを中心に
テックリードとして活動していました 現在はZOZOTOWNリプレイスプロジェクトにSREとし て参画しています 2
© ZOZO Technologies, Inc. https://zozo.jp/ • 日本最大級のファッション通販サイト • 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに 2020年6月末時点)
• 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商品を掲載 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3
© ZOZO Technologies, Inc. アジェンダ • ZOZOTOWNリプレイスとAPI Gateway • API
Gatewayにおける可観測性の課題と解決手法 • まとめ 4
© ZOZO Technologies, Inc. ZOZOTOWNリプレイス 5
© ZOZO Technologies, Inc. 6 2004年 ZOZOTOWN オープン
© ZOZO Technologies, Inc. 7 ZOZOTOWNはアーキテクチャを変えずに規模を拡大してきた
© ZOZO Technologies, Inc. IIS (Web) RO iOS Android ブラウザ
PC/SP リプレイス開始前: 〜2017年 ストアド ストアド ストアド 8 IIS (API) ロジックがDBに載っ ている(ストアド) 成功 • データの近くで処理を行うため高速 (特に2005年当時はネットワークが細い) • ロジックをDBに載せることでDRYにできる 課題 • ストアドプロシージャ (ストアド) をスケール させづらい • ストアドのテストが書きづらい • Classic ASP • Windows Server の構築自動化が難しい • 現実問題、ASPレイヤーで2重管理になってい るロジックは存在する • レガシーなフレームワークからの脱却も難しい
© ZOZO Technologies, Inc. 9 2017年4月
© ZOZO Technologies, Inc. Java API Read Only SQL ストアドを剥
がしてAPIに 移設 第1フェーズ: 2017年〜2020年 参照系ロジックのストアド剥がし IIS (Web) RO iOS Android ブラウザ PC/SP ストアド ストアド ストアド Read Only IIS (API) DBレプリ 課題 • ASPレイヤーのロジックがそのまま • 更新系のリプレイスが未計画 • オンプレIISが入り口のままであるためオ ンプレを卒業できない設計 • デプロイの順番待ち (モノリス) • ビッグバンアップグレード (モノリス) ReadOnly 成功 • ストアドロジックが減った • クラウドに移行したことでスケーラビ リティを手にいれた (ECサイトは参照 リクエストが圧倒的に多い) ZOZO DC クラウド 10
© ZOZO Technologies, Inc. 改めて目的を再確認 なぜリプレイスするのか ZOZOTOWNの成長のため スピード をあげる コスト
をさげる 人材 をふやす これらを達成できる組織にする 11
© ZOZO Technologies, Inc. 2020年度リプレイス方針 まず、変更しやすくしたい 1. ストアド剥がし (継続) 2.
マイクロサービスの立ち上げ 12
© ZOZO Technologies, Inc. 商品 サービス RO お気に入り サービス RW
メンバー サービス RW API Gateway ID認証 サービス RW IIS (Web) RO ブラウザ PC/SP ストアド ストアド ストアド IIS (API) ZOZO DC 第2フェーズ (2020年〜進行中) 切り替え方法 (ストラングラーパターン) iOS Android 切り替え 切り替え DBレプリ クラウド 13
© ZOZO Technologies, Inc. 移行方法としてストラングラーパターンを採用 段階的にレガシーからモダンなシステムへ移行する方法 14 ◦ 既存アプリケーションと新規アプリケーションにリクエストを振り分けるファサードを作成 ◦
機能の特定部分を新しいアプリケーションに段階的に置き換えながら移行する https://docs.microsoft.com/ja-jp/azure/architecture/patterns/strangler
© ZOZO Technologies, Inc. API Gateway • マイクロサービスのAPIの出入り口として機能するアプリケーション 商品 サービス
RO お気に入り サービス RW メンバー サービス RW API Gateway ID認証 サービス RW IIS (Web) RO ブラウザ PC/SP ストアド ストアド ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え DBレプリ クラウド これ 15
© ZOZO Technologies, Inc. API Gatewayのメリット • 各マイクロサービスに求められる共通機能を集約できる ◦ ルーティング
◦ 認証、認可 ◦ リトライ、タイムアウト設定 ◦ ロギング、トレース ◦ etc. 16
© ZOZO Technologies, Inc. API Gateway ID認証 サービス RW IIS
(Web) RO ブラウザ PC/SP ストアド ストアド ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 17
© ZOZO Technologies, Inc. 商品 サービス RO API Gateway ID認証
サービス RW IIS (Web) RO ブラウザ PC/SP ストアド ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 18
© ZOZO Technologies, Inc. 商品 サービス RO お気に入り サービス RW
API Gateway ID認証 サービス RW IIS (Web) ブラウザ PC/SP ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 19
© ZOZO Technologies, Inc. 商品 サービス RO お気に入り サービス RW
メンバー サービス RW API Gateway ID認証 サービス RW IIS (Web) ブラウザ PC/SP IIS (API) ZOZO DC iOS Android クラウド API Gatewayを用いた切替 (ストラングラーパターン) 20
© ZOZO Technologies, Inc. 新フレームワーク Viewのみ 商品 サービス RO お気に入り
サービス RW メンバー サービス RW ネイティブアプリ はAPI直呼び出し ブラウザ PC/SP iOS Android フロントエンドに 新技術が使えるよ うになる それぞれのAPIが 独立したサービスに =マイクロサービス化 API Gateway ID認証 サービス RW 21 第2フェーズ: 目指す姿
© ZOZO Technologies, Inc. 22 API Gatewayにおける 可観測性の課題と解決手法
© ZOZO Technologies, Inc. 可観測性確保のため必要なデータ 23 • ログ • メトリクス
• トレース
© ZOZO Technologies, Inc. ログ・インフラメトリクス収集 24 • Datadogを使用 ◦ 各マイクロサービスともにアプリケーションメトリクスはDatadogのAPM
トレーシング • CloudWatch Log/CloudWatch Container Insights ◦ EKSを利用しているため基本的にノードやk8sのメトリクスについてはAWS ◦ アラート通知はCloudWatchモニターからSlack • Datadogを使用 ◦ Elastic CloudなどAWSではないマネージドサービスについてはDatadog ◦ アラート通知はDatadogモニターからSlack
© ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 25 • どこで何が起こっている? •
API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
© ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 26 • どこで何が起こっている? •
API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
© ZOZO Technologies, Inc. どこで何が起こっている? • マイクロサービス化により複雑なサービス間連携が発生している が、各マイクロサービス単位でのAPMしか確認できない • API
Gatewayで発生したエラーが、どのマイクロサービスに起因す るのか追いにくい、パフォーマンスボトルネックを見つけづらい、 など、監視コストが高まっていた • また、特定クライアントで発生するエラー も有り得るため、どのクライアントで発生 しているのか、にも関心が高まっていた 27 API Gateway Service A Service B Service C iOS Android
© ZOZO Technologies, Inc. • トレーシングの課題に対してはDatadogの分散トレーシング機能を 利用して解決 • Datadogでの分散トレーシングは非常に簡単に実現可能であり、ト レースの起点となるマイクロサービスに1コード埋め込むのみ
28 ➢ Golangでのトレース情報埋込例 どのマイクロサービスで起こっている? 分散トレーシング
© ZOZO Technologies, Inc. ➢ マイクロサービス間でのトレース例 29 API Gatewayを 含む3つのサー
ビスがトレース されている。 どのマイクロサービスで起こっている? 分散トレーシング
© ZOZO Technologies, Inc. • API GatewayではAPI認証を行っておりクライアント識別を行っ ている • 識別したクライアント毎のリクエスト情報をトレースしたい
30 API Gateway ブラウザ PC/SP iOS Android IIS (Web) どのクライアントで起こっている? タグ付きトレース
© ZOZO Technologies, Inc. 31 • Datadogのタグ付け機能を利用して解決 • タグ付け機能もトレースの起点となるマイクロサービスに1コード 埋め込むのみ
➢ Golangでのクライアント情報を clientタグとして埋め込む例 ➢ APMのUIにclientタグが出現し クライアント情報でフィルター可能になる どのクライアントで起こっている? タグ付きトレース
© ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 32 • どこで何が起こっている? •
API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
© ZOZO Technologies, Inc. API Gatewayのサイドカーコンテナも監視したい • API Gatewayは通信量削減によるユーザー体験向上のため、サイド カーコンテナとしてNginxを導入し、HTTP通信のgzip圧縮を行って
いる • このNginxの各種メトリクスやログも重要度が増してきた API Gateway Nginx Pod gzip化 33 iOS Android
© ZOZO Technologies, Inc. サイドカーコンテナNginxのメトリクスを収集したい • やることは2つ ◦ Nginxのstab_statusモジュールを有効にする ◦
NginxのDeploymentマニフェストにannotationsを4行追加する 34 ➢ Deploymentにannotationsを 追加した例 ➢ Nginxのメトリクスが取得できる 以下はdev環境の例
© ZOZO Technologies, Inc. サイドカーコンテナNginxのログを収集したい • k8s上で動作しているコンテナログは、Datadog Agentのマニフェ ストにenvを数行追加するだけで自動収集できる ➢
マニフェストにenvを追加した例 ➢ Datadog Log Managementで参照可能になる →コンテナログの収集を有効にした上で、 対象コンテナの判定条件を記載している 35
© ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 36 • どこで何が起こっている? •
API Gatewayのサイドカーコンテナも監視したい • 監視対象のデータが多く、俯瞰しにくい
© ZOZO Technologies, Inc. 監視対象のデータが多く、俯瞰しにくい • Datadog個々の機能は導入も容易で非常に強力だが、複数のUIを渡 り歩くのは効率も悪く、辛い ◦ Datadog
APM ◦ Datadog Log Management ◦ Datadog Nginx Integration • Datadog Dashboardでまとめよう! 37
© ZOZO Technologies, Inc. 38 Datadog Dashboard ➢ dev環境の例
© ZOZO Technologies, Inc. まとめ 39 • ZOZOTOWNはクラウド化・マイクロサービス化を進める中で、柔軟な スケーラビリティやアジリティなどを獲得してきた •
一方で、その複雑性により可観測性には課題が発生していた • そこで、非常に強力なDatadog APMを導入し、さらに分散トレースやタ グ付きトレースの仕組みを利用することで、可観測性が向上した • Datadogはトレース以外のログ・メトリクス収集も簡易に導入でき、 Dashboardでサービスにとって重要なデータをまとめることで、監視・ 運用者のコスト削減も見込める
None