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

Datadogと歩むZOZOTOWNの可観測性 / Observability of ZOZOTOWN with Datadog

akitok
March 01, 2021

Datadogと歩むZOZOTOWNの可観測性 / Observability of ZOZOTOWN with Datadog

akitok

March 01, 2021
Tweet

More Decks by akitok

Other Decks in Technology

Transcript

  1. © ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ SRE部 小林 明斗 2020年7月にZOZOテクノロジーズへ中途入社 前職は通信系SIerでバックエンドやインフラを中心に

    テックリードとして活動していました 現在はZOZOTOWNリプレイスプロジェクトにSREとし て参画しています 2
  2. © ZOZO Technologies, Inc. https://zozo.jp/ • 日本最大級のファッション通販サイト • 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに 2020年6月末時点)

    • 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商品を掲載 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3
  3. © ZOZO Technologies, Inc. アジェンダ • ZOZOTOWNリプレイスとAPI Gateway • API

    Gatewayにおける可観測性の課題と解決手法 • まとめ 4
  4. © ZOZO Technologies, Inc. IIS (Web) RO iOS Android ブラウザ

    PC/SP リプレイス開始前: 〜2017年 ストアド ストアド ストアド 8 IIS (API) ロジックがDBに載っ ている(ストアド) 成功 • データの近くで処理を行うため高速 (特に2005年当時はネットワークが細い) • ロジックをDBに載せることでDRYにできる 課題 • ストアドプロシージャ (ストアド) をスケール させづらい • ストアドのテストが書きづらい • Classic ASP • Windows Server の構築自動化が難しい • 現実問題、ASPレイヤーで2重管理になってい るロジックは存在する • レガシーなフレームワークからの脱却も難しい
  5. © 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
  6. © 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
  7. © 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
  8. © ZOZO Technologies, Inc. API Gatewayのメリット • 各マイクロサービスに求められる共通機能を集約できる ◦ ルーティング

    ◦ 認証、認可 ◦ リトライ、タイムアウト設定 ◦ ロギング、トレース ◦ etc. 16
  9. © ZOZO Technologies, Inc. API Gateway ID認証 サービス RW IIS

    (Web) RO ブラウザ PC/SP ストアド ストアド ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 17
  10. © ZOZO Technologies, Inc. 商品 サービス RO API Gateway ID認証

    サービス RW IIS (Web) RO ブラウザ PC/SP ストアド ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 18
  11. © ZOZO Technologies, Inc. 商品 サービス RO お気に入り サービス RW

    API Gateway ID認証 サービス RW IIS (Web) ブラウザ PC/SP ストアド IIS (API) ZOZO DC iOS Android 切り替え 切り替え クラウド API Gatewayを用いた切替 (ストラングラーパターン) 19
  12. © ZOZO Technologies, Inc. 商品 サービス RO お気に入り サービス RW

    メンバー サービス RW API Gateway ID認証 サービス RW IIS (Web) ブラウザ PC/SP IIS (API) ZOZO DC iOS Android クラウド API Gatewayを用いた切替 (ストラングラーパターン) 20
  13. © ZOZO Technologies, Inc. 新フレームワーク Viewのみ 商品 サービス RO お気に入り

    サービス RW メンバー サービス RW ネイティブアプリ はAPI直呼び出し ブラウザ PC/SP iOS Android フロントエンドに 新技術が使えるよ うになる それぞれのAPIが 独立したサービスに =マイクロサービス化 API Gateway ID認証 サービス RW 21 第2フェーズ: 目指す姿
  14. © ZOZO Technologies, Inc. ログ・インフラメトリクス収集 24 • Datadogを使用 ◦ 各マイクロサービスともにアプリケーションメトリクスはDatadogのAPM

    
 
 
 トレーシング • CloudWatch Log/CloudWatch Container Insights ◦ EKSを利用しているため基本的にノードやk8sのメトリクスについてはAWS ◦ アラート通知はCloudWatchモニターからSlack • Datadogを使用 ◦ Elastic CloudなどAWSではないマネージドサービスについてはDatadog ◦ アラート通知はDatadogモニターからSlack
  15. © ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 25 • どこで何が起こっている? •

    API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
  16. © ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 26 • どこで何が起こっている? •

    API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
  17. © ZOZO Technologies, Inc. どこで何が起こっている? • マイクロサービス化により複雑なサービス間連携が発生している が、各マイクロサービス単位でのAPMしか確認できない • API

    Gatewayで発生したエラーが、どのマイクロサービスに起因す るのか追いにくい、パフォーマンスボトルネックを見つけづらい、 など、監視コストが高まっていた • また、特定クライアントで発生するエラー も有り得るため、どのクライアントで発生 しているのか、にも関心が高まっていた 27 API Gateway Service A Service B Service C iOS Android
  18. © ZOZO Technologies, Inc. ➢ マイクロサービス間でのトレース例 29 API Gatewayを 含む3つのサー

    ビスがトレース されている。 どのマイクロサービスで起こっている? 分散トレーシング
  19. © ZOZO Technologies, Inc. 31 • Datadogのタグ付け機能を利用して解決 • タグ付け機能もトレースの起点となるマイクロサービスに1コード 埋め込むのみ

    ➢ Golangでのクライアント情報を clientタグとして埋め込む例 ➢ APMのUIにclientタグが出現し クライアント情報でフィルター可能になる どのクライアントで起こっている? タグ付きトレース
  20. © ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 32 • どこで何が起こっている? •

    API Gatewayのサイドカーコンテナも監視したい • 収集する監視データが多く、俯瞰しにくい
  21. © ZOZO Technologies, Inc. サイドカーコンテナNginxのメトリクスを収集したい • やることは2つ ◦ Nginxのstab_statusモジュールを有効にする ◦

    NginxのDeploymentマニフェストにannotationsを4行追加する 34 ➢ Deploymentにannotationsを 追加した例 ➢ Nginxのメトリクスが取得できる 以下はdev環境の例
  22. © ZOZO Technologies, Inc. サイドカーコンテナNginxのログを収集したい • k8s上で動作しているコンテナログは、Datadog Agentのマニフェ ストにenvを数行追加するだけで自動収集できる ➢

    マニフェストにenvを追加した例 ➢ Datadog Log Managementで参照可能になる →コンテナログの収集を有効にした上で、 対象コンテナの判定条件を記載している 35
  23. © ZOZO Technologies, Inc. API Gatewayにおける可観測性の課題 36 • どこで何が起こっている? •

    API Gatewayのサイドカーコンテナも監視したい • 監視対象のデータが多く、俯瞰しにくい
  24. © ZOZO Technologies, Inc. まとめ 39 • ZOZOTOWNはクラウド化・マイクロサービス化を進める中で、柔軟な スケーラビリティやアジリティなどを獲得してきた •

    一方で、その複雑性により可観測性には課題が発生していた • そこで、非常に強力なDatadog APMを導入し、さらに分散トレースやタ グ付きトレースの仕組みを利用することで、可観測性が向上した • Datadogはトレース以外のログ・メトリクス収集も簡易に導入でき、 Dashboardでサービスにとって重要なデータをまとめることで、監視・ 運用者のコスト削減も見込める