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

大規模SaaS『KARTE』のパフォーマンス改善 とオートスケーリング:Datadogの活用事例

PLAID Tech
November 28, 2023

大規模SaaS『KARTE』のパフォーマンス改善 とオートスケーリング:Datadogの活用事例

2023年11月28日の「事例ウェビナー DatadogでGKEと マネージドサービスを 効率的に運用する方法」で、プレイドで提供しているKARTEがどのようにDatadogを活用しているかをエンジニアのKosuke Oyaが発表しました。

PLAID Tech

November 28, 2023
Tweet

Other Decks in Technology

Transcript

  1.   |  © PLAID Inc. 2023.11.28  |  Datadog Webinar  |  1
    ⼤規模SaaS『KARTE』のパフォーマンス改善
    とオートスケーリング:Datadogの活⽤事例
    株式会社プレイド ⼤⽮康介

    View full-size slide

  2.   |  © 2019 PLAID Inc.
      |  © PLAID Inc. 2023.11.28  |  Datadog Webinar  |  2
    ⾃⼰紹介
    ⼤⽮ 康介 株式会社プレイド
    エンジニア 2020年新卒⼊社 DX & Performance
    GKEの運⽤、KARTE Talk の開発、KARTEの管理画⾯のパフォーマンス改善など

    View full-size slide

  3. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    本⽇のテーマ
    BtoB SaaS『KARTE』で
    どのように Datadog を
    活⽤しているか
    ● サービス紹介と全体構成
    ● 活⽤事例
    ○ KARTE管理画⾯のパ
    フォーマンス改善
    ○ メトリクスによるオート
    スケール
    ● まとめ
    話すこと
    3

    View full-size slide

  4. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc. 4
    KARTEについて
    CX(顧客体験)プラットフォーム
    Webサイトの訪問者の⾏動を
    顧客ごとにリアルタイムに解析
    ⼀⼈ひとりに合わせた
    顧客体験を提供

    View full-size slide

  5. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    アーキテクチャ
    全てのコンポーネントを
    Datadogで監視
    5

    View full-size slide

  6. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc. 6
    Datadog活用規模
    ほぼ全てのエンジニアが
    Datadogを活⽤
    83 ⼈
    datadog ユーザ数
    858
    モニター数
    463
    ダッシュボード数
    150 Hosts
    APM
    800K /hour
    Custom Metrics
    500M /mon
    Indexed Log

    View full-size slide

  7. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス監視
    KARTE管理画⾯の
    パフォーマンス改善
    7

    View full-size slide

  8. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    KARTE 管理画⾯の特徴
    - 国内でも有数の規模のデー
    タ量を扱う
    - ユーザーひとりひとりを⾼
    解像度で分析
    - GKE を利⽤し複数のマイク
    ロサービスで構成される
    パフォーマンス改善
    パフォーマンスが劣化しやす
    く、原因の特定が困難
    8

    View full-size slide

  9. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    Webパフォーマンスの計
    測‧監視⽅法(以前)
    パフォーマンス監視
    9
    Lighthouseの定期実⾏
    - KARTEの特定のプロジェクト(テナント)の主要ページに
    puppeteerでアクセスして計測
    - KARTEは⼤量のデータを扱うという特性上、プロジェクト
    毎にかなりスコアが変わる
    APM
    - ページのボトルネックになるAPIのレイテンシを監視
    - これだけでは最終的なページの読み込み時間はわからない
    課題
    - 実際のユーザー体験の計測はできていない
    - 改善がどの程度ユーザに効いたか判断が難しい

    View full-size slide

  10. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    Datadog RUM の導⼊
    パフォーマンス監視
    10
    - Core Web Vitals などの重要な指標を把握
    - LCP 75パーセンタイルの改善を⽬標
    - 実際のユーザから収集されたデータ
    - APMとの接続

    View full-size slide

  11. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    RUM のセットアップ時のポイント
    - service, env, version を APM の設定と合
    わせることで APM と接続
    - excludeActivityUrls を指定して正確なパ
    フォーマンスを計測
    - プロジェクト毎に集計できるよう context
    を追加
    <br/>(function(h,o,u,n,d) {<br/>h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)}}<br/>d=o.createElement<br/>(u);d.async=1;d.src=n<br/>n=o.getElementsByTagName<br/>(u)[0];n.parentNode.insertBefore<br/>(d,n)<br/>})(window,document,'script','https://www.datadoghq-browser-age<br/>nt.com/us5/v5/datadog-rum.js'<br/>,'DD_RUM')<br/>window.DD_RUM.onReady(function() {<br/>window.DD_RUM.init({<br/>clientToken: '<CLIENT_TOKEN>'<br/>,<br/>applicationId: '<APPLICATION_ID>'<br/>,<br/>site: 'us5.datadoghq.com'<br/>,<br/>service: 'my-web-application',<br/>env: 'production',<br/>version: '1.0.0',<br/>sessionSampleRate: 100,<br/>sessionReplaySampleRate: 100,<br/>trackResources: true,<br/>trackLongTasks: true,<br/>trackUserInteractions: true,<br/>excludedActivityUrls: ['https://b.karte.io/event', …]<br/>});<br/>})<br/>window.DD_RUM.setGlobalContextProperty('project', { id:<br/>project.id, name: project.name });<br/>
    パフォーマンス改善
    11

    View full-size slide

  12. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス監視
    パフォーマンスの改善⼿順
    12

    View full-size slide

  13. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス改善
    RUM を利⽤した分析
    - ネットワークリクエストの
    ウォーターフォールグラフ
    を⾒る
    - 全てのコンテンツの読み込
    み、API呼び出しのうちボ
    トルネックを特定
    13

    View full-size slide

  14. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス改善
    ネットワークリクエストの
    分析
    - 先ほどの画⾯からトレース
    (APM)にシームレスに接
    続できる
    - ログやメトリクス、プロ
    ファイラーも関連づけられ

    - ここまでくるとボトルネッ
    クの原因はかなり絞れる
    14

    View full-size slide

  15. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス改善
    プロファイルの分析
    - 特定の時間帯のプロファイ
    ルがみれて、⽐較できる
    - どの関数呼び出しにどれく
    らい時間がかかったかわか

    - ボトルネックの関数を特定
    し、LCPが50%改善
    15

    View full-size slide

  16. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    今後
    - 主要画⾯のLCPに内部SLOを設定
    - ページ毎のLCPの推移(改善‧悪化の傾向)
    を監視
    パフォーマンス改善
    16

    View full-size slide

  17. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    パフォーマンス改善
    パフォーマンス改善の
    ポイントまとめ
    - 実際のユーザの視点でパフォーマン
    スを計測‧監視する
    - グラフによってボトルネックを可視
    化し、効率的に調査する

    View full-size slide

  18. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    メトリクスによる
    オートスケール
    メトリクスによるオートスケール
    18

    View full-size slide

  19. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    メトリクスによるオートスケール
    Track Servers の特徴
    - 負荷が1⽇で10倍近く変化
    する
    - ピーク時には急激に負荷が
    増える
    柔軟なオートスケールが必要

    View full-size slide

  20. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    メトリクスによるオートスケール
    Eventarc Cloud
    Run
    Cloud
    Spanner
    Compute
    Engine
    Monitor
    オートスケール
    汎⽤的なオートスケーラーによる⼀元管理
    - Datadog に集約された全てのメトリクスを活⽤可能
    - オートスケールする対象のコンポーネントもさらに追加できる
    20
    - cpu/memory
    - pubsub message
    - lb latency
    - custom metrics

    View full-size slide

  21. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    メトリクスによるオートスケール
    - 通常のモニターと同じよう
    に演算などもできる
    - 簡単にオートスケールのパ
    ラメータを変更したり、閾
    値を変えたりできる
    21

    View full-size slide

  22. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    hpa.yaml
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
    name: nginxext
    spec:
    metrics:
    - type: External
    external:
    metric:
    name: datadogmetric@nginx-demo:nginx-requests
    target:
    type: Value
    value: 9
    datadog-metric.yaml
    apiVersion: datadoghq.com/v1alpha1
    kind: DatadogMetric
    metadata:
    name: nginx-requests
    spec:
    query:
    max:nginx.net.request_per_s{kube_container_name:nginx}.rollup(60)
    メトリクスによるオートスケール
    今後は Kubernetes の
    HPA でもDatadog のメト
    リクスを使いたい
    - custom metrics
    stackdriver adapter と併
    ⽤できる⽅法を検討中
    22

    View full-size slide

  23. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    まとめ
    まとめ
    23

    View full-size slide

  24. 2023.11.28  |  Datadog Webinar  | 
      |  © PLAID Inc.
    まとめ
    BtoB SaaS『KARTE』での
    Datadog の活⽤事例につい
    て話しました
    - Web アプリケーションのパフォー
    マンスを改善‧監視
    - 実際のユーザー視点で計測する
    ことが⼤事
    - 汎⽤的なオートスケールの仕組みを
    構築して運⽤を⾃動化
    24

    View full-size slide