Slide 1

Slide 1 text

TechFeed Experts Night 2022-06-07 Toshiaki Baba Twitter: @netmarkjp 株式会社X-Tech 5 取締役CTO https://x-tech5.co.jp/ 株式会社iCARE技術顧問(インフラ) https://dev.icare.jpn.com/tech_adv/ しつこくじわじわパフォー マンスチューニング Disclaimer ● おもに「サーバサイドのパフォーマンス」を取り扱います ● 「サービスが遅い・重い」と言ったときは、主に「レイテンシが 高い」という意図です ● モニタリングツールの基本知識がDatadog(とAmazon CloudWatchと、Nagios・Cacti)に偏っているので、暗黙のう ちにそれらを前提にして発言するかもしれません

Slide 2

Slide 2 text

担当:Chapter 1 チューニングの基礎知識 2

Slide 3

Slide 3 text

「いれたはいいけどうまく使えていないDatadog」 なんとかします:X-Tech5の「OBServe」 3 OBServe - 株式会社X-Tech5 https://x-tech5.co.jp/service/observe/

Slide 4

Slide 4 text

パフォーマンスでよくある問題と対策 4 【問題になること】 パフォーマンス問題は致命傷にならないと気づかない 【対策】 継続的にしつこくモニタリングする パフォーマンスをモニタリ ングできるようになる 課題を効率よく見つけられ るようになる 致命傷になる前に発見でき るようになる

Slide 5

Slide 5 text

パフォーマンスをモニタリングする 5 パフォーマンスをモニタリ ングできるようになる 課題を効率よく見つけられ るようになる 致命傷になる前に発見でき るようになる

Slide 6

Slide 6 text

前提知識:モニタリングSaaSの多くはメトリクス中心 6 ログ メトリクス ログ APM APM 正規化 マスク 変換... メトリクス アラート ダッシュ ボード : コンソール

Slide 7

Slide 7 text

われわれの武器:ログとAPM ● ログ ○ その要素の処理単位で計測・確認できる ○ プログラムの処理インターフェース単位で扱う(例:アクセスログならURL) ○ 全量調査なので「特定のコレ」を見つけ出せる ● APM(Application Performance Monitoring) ○ 複数要素にまたがって一気通貫で計測・確認できる ※マイクロサービスじゃなくても ○ プログラムの内部情報を扱える(例:コントローラのメソッドや呼び出したときの引数) ○ サンプリング調査なので「多くの母数を持つ前提で傾向を把握する」のが前提 7 お勧め:「よくわからないなら、まずはAPM」

Slide 8

Slide 8 text

アプリケーションにAPMを追加する ● 「計装する」(Instrument)と呼ぶ ● SaaSベンダのライブラリ or OpenTelemetryを使う ○ よくわからないならSaaSのドキュメントの通りにSaaSのライブラリを使ってSaaSのサポート をうけるのがよい ○ OpenTelemetryで計装しておくと後からSaaSが変更しやすい ● 利用しているプログラム言語やフレームワーク・ライブラリによっては、追 加でライブラリを読み込む程度 ○ Python、Ruby、Java、Node(JavaScript/TypeScript)あたりはたぶん楽 ○ Goは少しコード修正が必要かも 8 アプリケーション プログラム lib モニタリング エージェント モニタリングSaaS

Slide 9

Slide 9 text

効率よく見つけたい 9 パフォーマンスをモニタリ ングできるようになる 課題を効率よく見つけられ るようになる 致命傷になる前に発見でき るようになる

Slide 10

Slide 10 text

効率よく見つけたい:目星をつける ● ユーザ、カスタマーサクセス担当、プロダクトオーナーに聞くと「ここ が!」というのが出てくることが多いので、まずはそこからがベスト ● ISUCON本ではアクセスログをalpで分析 ● DatadogならAPMのServicesで分析(APMをもとにしたメトリクス) ○ ISUCONのように「リソース逼迫の要因を見つけたい」状況ではTOTAL TIMEに着目 ○ REQUESTSが一定以上ありP50やP90レイテンシが高いものに着目していくとよい 10

Slide 11

Slide 11 text

見つけたら ● 短期・中期で傾向が変化したか確認する ● レイテンシの分散を確認して狙い所を定める 11

Slide 12

Slide 12 text

見つけたらTraceを詳しく見る ● 横に長い箱はどれか ● 箱(Span)の数、繰り返しパターン ● レイテンシの分散を確認して狙い所を定める 12 https://datadog-docs.imgix.net/images/tracing/index/ConnectLogsWithTraces.b1310bb21582381d3bfb1ec7dd47031f.png

Slide 13

Slide 13 text

継続的にしつこくモニタリング 13 パフォーマンスをモニタリ ングできるようになる 課題を効率よく見つけられ るようになる 致命傷になる前に発見でき るようになる

Slide 14

Slide 14 text

継続的にしつこく ● 定点観測を確立しましょう ○ 習慣の力も使うが、土台と詰めは『根性と執念』 ● なんだかんだ言ってみんなできない(定着に課題がある)からサービス化し たのが「OBServe」 ● お問い合わせいただくと、ばばが出てきます https://x-tech5.co.jp/service/observe/ 14

Slide 15

Slide 15 text

おまけ:自己紹介 馬場俊彰(ばばとしあき) Twitter: @netmarkjp 株式会社X-Tech5 取締役 CTO、株式会社iCARE技術顧問 運用エンジニアリング/DevOps/SRE/コンサルティング/組織構築/事業運営... 電気通信大学人間コミュニケーション学科(2004年卒) →社会人(SCC→ハートビーツ→X-Tech5) →産業技術大学院大学(AIIT)情報アーキテクチャ専攻(2011年卒) 主な守備範囲:Webシステムのインフラ・ミドルウェア全般、モニタリング、 チューニング、プログラミング(Python、Go) 15 Amazon著者ページ https://www.amazon.co.jp/%E9%A6%AC%E5%A0%B4-%E4%BF%8A%E5%BD%B0/e/B004Y4SUBY