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.6k
持続可能なドキュメント運用のリアル: 1年間の成果とこれから
akitok_
2
620
明日から始める持続可能なドキュメンテーション戦略 / 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
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
240
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
210
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
350
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
230
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
AIエージェントを前提としたプラットフォーム エンジニアリング:GKEで作るAgent-Ready Golden Path
legalontechnologies
PRO
2
220
20分でわかるセキュアAPI
nwiizo
1
200
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
780
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Designing for humans not robots
tammielis
254
26k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Chasing Engaging Ingredients in Design
codingconduct
0
260
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Optimizing for Happiness
mojombo
378
71k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Statistics for Hackers
jakevdp
799
230k
The Invisible Side of Design
smashingmag
301
52k
Producing Creativity
orderedlist
PRO
348
40k
Making the Leap to Tech Lead
cromwellryan
135
10k
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