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

[Observability conference 2022/3/11] NewsPicks ...

[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE

2022/3/11 に行われた Observability Conference 2022 での資料です。
Observability tool の「New Relic One」の事例登壇として参加させていただきました。

===

Track A 2022/03/11 15:05-15:45
『NewsPicks のプロダクト開発エンジニアが実践する スキルとしての SRE』
https://event.cloudnativedays.jp/o11y2022/talks/1383

Yukako IIDA

March 10, 2022
Tweet

More Decks by Yukako IIDA

Other Decks in Technology

Transcript

  1. 2 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 はじめまして 2013 年 4 月より

    株式会社サイバーエージェントにサーバーサイドエンジニアとして入社。 2015 年 12 月より AbemaTV への異動をきっかけにフロントエンドエンジニアとして従事。 2019 年 9 月より 株式会社ニューズピックスにエンジニアとして入社。 入社後 API 開発なども行っていたが、 2020年よりフロントエンドエンジニアをメインに従事。 NewsPicks の Web project の Re-architecture の提案をきっかけに、 2021年7月に Web Frontend Unit が発足。 現在は同 Unit の後継である Web Product Unit のメンバーとして開発を行う。 略歴 主な興味分野は、 a11y、design system、UI/UX。 安心感高い開発環境を つくっていきたい!
  2. 3 “SRE” のつく部署の経験がない、開発者としての Web Frontend メンバーが スキルとしての “SRE” と対峙し、現在の project

    で実践していく話です。 開発者にとって「スキルとしての “SRE”」がなぜ必要だと考えるか、 具体的に、o11y ツールである New Relic One のどういった機能を利用して、 開発者目線の SRE 的課題をクリアしているか をご紹介します。 本日の内容 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 

  3. 5 Web Product Unit division 内の Web Product Unit の立ち位置

    NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 NewsPicks Product Division (経済メディアサービスの開発を担当する division) Product Growth Team Product Development Team A/B テスト等分析 Unit アプリケーション共通基盤開発 Unit 13 Unit 特定機能開発 Unit 入稿ツール担当 Unit 法人機能 Development Team Core Development Team 課金事業担当 Unit SRE Unit データ/アルゴリズム Unit Product Design Team Product Management Team デザイン Unit CRE/QA Unit 企画管理 Unit Product Curation Team コンテンツキュレーション Unit * 組織図は、2022年2月時点 開発を行う Unit モバイルアプリ開発 Unit we’re here
  4. 6 Web Product Unit division 内の Web Product Unit の立ち位置

    NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 NewsPicks Product Division (経済メディアサービスの開発を担当する division) Product Growth Team Product Development Team A/B テスト等分析 Unit アプリケーション共通基盤開発 Unit 13 Unit 特定機能開発 Unit 入稿ツール担当 Unit 法人機能 Development Team Core Development Team 課金事業担当 Unit SRE Unit データ/アルゴリズム Unit Product Design Team Product Management Team デザイン Unit CRE/QA Unit 企画管理 Unit Product Curation Team コンテンツキュレーション Unit * 組織図は、2022年2月時点 開発を行う Unit モバイルアプリ開発 Unit we’re here Web 開発を行う Unit
  5. 7 • Web Product に関する開発 ◦ Frontend 開発、bff(GraphQL)開発、API 開発を担う •

    Web 基盤の開発&メンテナンスをする『Web 基盤屋』 ◦ 開発部隊である 9 Unit のうち 6 Unit がコミットする基盤の運用 ◦ Web 基盤環境の全域を、メンテナブルにする責務も持つ NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 Web Product Unit の責務 後者の責務により、全関係者にとって「安心して開発できる環境」の整備が必要で、 そのために他 Service を含めたプロダクト全体で起こっている事象や因果関係がわかる オブザーバビリティ(以降、o11y) の向上がとても重要 だと考えている。
  6. 8 • 安心して開発してもらいたい • ユーザーに価値を提供できることに集中してもらいたい 課題 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 


    Web Product Unit としての理想と課題 この課題を解決することでより Unit の Value を発揮できると感じている みんなでこれらの観測ができるようになることがポイントになる 理想 対して不安になる要素の例とは、 • 何がどうあったら安全なのかをわからないと怖い • イレギュラー時にどうなるのかわからないから怖い • リリースした瞬間問題が発覚したら怖い • リリース後、悪い影響を出していないか不安に感じる • 不具合が起こった時どこを見ればいいのかわからない • (もっと言うと) どうなっていけば better なのかがわからない ◦ 自身の見立てを立証する根拠やデータがほしい
  7. 9 • 安心して開発してもらいたい • ユーザーに価値を提供できることに集中してもらいたい 課題 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 


    Web Product Unit としての理想と課題 この課題を解決することでより Unit の Value を発揮できると感じている みんなでこれらの観測ができるようになることがポイントになる 理想 対して不安になる要素の例とは、 • 何がどうあったら安全なのかを知りたい • 今安全なのかを知りたい • リリースした瞬間問題が発覚したら怖い • リリース後、悪い影響を出していないか知りたい • 不具合が起こった時どうしたらいいのか知りたい • (もっと言うと) どうなっていけば better なのかがわからない ◦ 自身の見立てを立証する根拠やデータがほしい そこまでする? SRE Unit に任せてもよくない? FAQ 次スライドより、実際どういった理念を持ち働いているのかを 「プロダクト開発エンジニア」の働き方の紹介を交えつつ紹介します。
  8. 10 • NewsPicks の product division 内で根付いている考え方、働き方の名称 • 「ユーザーに価値を届ける」ことを重点に置いている ◦

    いわゆる「アプリケーション開発」だけでなく、モニタリングやトラブルシューティング といった運用にもコミット ◦ 「問題発見」から「解決」までやることを開発者が担当(もちろん助け合います!) • よりよい体験、より良いプロダクト開発を実現したいと願い、その責任も持っている 「プロダクト開発エンジニア」とは? この図の全てをフルサイクルで行うことを 息を吸うようにカジュアルに、 かつ、スピーディにやっていきたい NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 

  9. 11 「プロダクト開発エンジニア」にとっても辛さや不安を感じる要素 • 何がどうあったら安全なのかをわからないと怖い • イレギュラー時にどうなるのかわからないから怖い • リリースした瞬間問題が発覚したら怖い • リリース後、悪い影響を出していないか不安に感じる

    • 不具合が起こった時どこを見ればいいのかわからない • (もっと言うと) どうなっていけば better なのかがわからない ◦ 自身の見立てを立証する根拠やデータがほしい NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 開発者にとっての o11y の必要性 課題 「プロダクト開発エンジニア」としてプロダクトに関わる文化/環境だからこそ 各開発者がプロダクトの健全さを把握するために 「スキルとしての “SRE”(サービスの信頼性を高めるための視点を持ち、価値が想定通り届いているか観測するスキル)」の実践が必要。 よって、全ての「プロダクト開発エンジニア」の運用コストを下げるためにも、o11y の向上が必要。
  10. 12 2006 年のワーナー・ヴォゲルス氏の発言である “you build it, you run it” の精神を大事にしていきたいです。

    開発者にとっての a11y の必要性 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 私達は、開発者が「企画、実装、運用」を含む「フルサイクル」でのプロダクト開発を推進する。 その時、「スキルとしての “SRE”」が必然的になると考えています。
  11. 13 2006 年のワーナー・ヴォゲルスの発言である “you build it, you run it” の精神を大事にしていきたいです。

    開発者にとっての a11y の必要性 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 私達は、開発者が「企画、実装、運用」を含む「フルサイクル」でのプロダクト開発を推進する。 その時、「スキルとしての “SRE”」が必然的になると考えています。 それって開発者が「DevOps 頑張ってます」 という意味と何が違うの? FAQ
  12. 14 この図の全てをフルサイクルで行うことが プロダクト開発の上で重要と考える 開発者が「スキルとしての “SRE”」を持つこと NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 よくいわれる「DevOps」とは

    開発チーム(Development)と運用チーム(Operations)が 別のチームとして存在する場合が多い。 私達は『「フルサイクル」の流れで開発者が運用と向き合うこと』が より良いプロダクト開発につながると、強調して伝えたい。
  13. 15 特定のロールに依存せずプロダクトを監視できるようになる →(担当 Unit を越えた) 問題の発見が早まる →フィードバックループのサイクルが早まる →結果、実装物の運用コストも下がり、  開発者が目指す「デプロイ頻度の向上」にも寄与する 開発者と

    o11y の距離が近いことで得られるメリット NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 開発者体験向上のためにも ”o11y は大事な指標の一つ” と言える NewsPicks の開発組織が掲げている指標の一つ
  14. 18 DB App Server Java/Kotlin project GraphQL Web server Next.js

    project API & Web 用 rendering を担う、Spring base で作られた project。 GraphQL 未対応ページについては NP Server に引き続きリクエストする 最終的に API に特化した project になることを目指す( Web を切り離す) NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 アーキテクチャ(略図) 初回来訪時 Next.js project 内の ページ遷移時に発生する API Request 対応状況により path ごとに振り分け (Path-based routing) ALB Web Client TypeScript project
  15. 19 DB App Server Java/Kotlin project GraphQL Web server Next.js

    project API & Web 用 rendering を担う、Spring base で作られた project。 GraphQL 未対応ページについては NP Server に引き続きリクエストする 最終的に API に特化した project になることを目指す( Web を切り離す) NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 アーキテクチャ(略図) 初回来訪時 Next.js project 内の ページ遷移時に発生する API Request 対応状況により path ごとに振り分け (Path-based routing) ALB Web Client TypeScript project 当時のリリース対象
  16. 20 DB App Server Java/Kotlin project GraphQL Web server Next.js

    project API & Web 用 rendering を担う、Spring base で作られた project。 GraphQL 未対応ページについては NP Server に引き続きリクエストする 最終的に API に特化した project になることを目指す( Web を切り離す) NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 アーキテクチャ(略図) 初回来訪時 Next.js project 内の ページ遷移時に発生する API Request 対応状況により path ごとに振り分け (Path-based routing) ALB Web Client TypeScript project 当時のリリース対象
  17. 21 o11y の実現 (APM を利用した具体例) NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 •

    各 Service の APM を確認 • 起因となる Service の Transactions を監視し、通信を探る • 原因の Transaction を確認後、当時実装を担当していたメンバーにヒアリング APM 設定後の流れ 実際に起っていることを1ページにまとまっているデータで伝えることができ、 スピーディに議論、その後の改善方法の提案、実装にまで繋がりました。
  18. 22 • 関係のある Service 全てが健全であることで初めて「サービスの健全性」を担保できる • マイクロサービス化が進む昨今だからこそ、求められる機能 ただ、APM の導入だけでももちろん十分に不具合を検知できるが、 私達は、もっと「安心して開発できる」かつ、もっと「運用コストが下がった」環境を実現していきたい。

    APM の導入を行って感じたこと NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 Point 1: 共有しやすさ 同 Unit メンバーへの共有はもちろん、Unit を越えたメンバーに見てもらう&伝えることができる Point 2: 一覧しやすさ 複数 Service を一覽で確認できる ( = 調査、確認がしやすい) • 不具合内容に関する共有用ドキュメントを書く必要がない ◦ ここがほぼ 0 カロリーでできることにとても意味がある
  19. 24 APM の次のステップに進みたい NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 「プロダクト開発エンジニア」にとっても辛さや不安を感じる要素 • 何がどうあったら安全なのかをわからないと怖い

    • イレギュラー時にどうなるのかわからないから怖い • リリースした瞬間問題が発覚したら怖い • リリース後、悪い影響を出していないか不安に感じる • 不具合が起こった時どこを見ればいいのかわからない • (もっと言うと) どうなっていけば better なのかがわからない ◦ 自身の見立てを立証する根拠やデータがほしい 課題 「開発」「運用 (通常時/問題発生時)」「改善」のフェーズ全てに課題がある状態
  20. 26 各フェーズにおける観測したいポイント NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 開発  1. (リリース前の段階で) 事前にエラーを検知し、より安全に

    deploy したい  2. イレギュラー時に自身のプロダクトがどうなるのかを知りたい 運用 (通常時/問題発生時)  3. ひと目で「今私達のプロダクトは健全である」を確認したい  4. プロダクト全体でどんな変更が行われているかを確認したい 改善  5. 外的要因を含めた Performance 改善を図るヒントがほしい この3つの異なるフェーズの全てで観測したいポイントを観測できるようにし、課題の解決を図る
  21. 27 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 事前にエラーを検知し、より安全に deploy したい エラー発生を知ることだけでなく、 IDE

    と連携することで「エラーイベント」を「手元」に持ってくることができる 「本番環境でエラーを認識」を避けたい。 事前にエラー発生に気づき、その内容を知り、対策を練りたい。 開発環境、テスト環境、本番環境の全てで o11y を測ることで解決 開発段階でのバグの早期発見&修正が可能。本番前から SLO をより意識できる環境に。 開発で使用している VSCode が開く
  22. 29 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 ひと目で「今私達のプロダクトは健全である」を確認したい 「健全だ」と、実装者自身にも、チームメンバーにも立証できる形で伝えたい。 各環境ごとに SLO を

    o11y ツール内で設定し、監視データから計測&描画することで解決 (副次効果として、新規メンバーへの説明もしやすく、 SLO 達成の良い文化づくりにも繋がる ) Web Server Availability Latency GraphQL Server Availability Latency サービスの健全レベルをひと目で確認でき、SLO を守れていない時に「予期していない状態」を認識しやすい
  23. 30 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 プロダクト全体でどんな変更が行われているかを確認したい 自分たちの Code Deploy 以外の

    Deploy (画像基盤の変更、インフラの改修など ) も追うことで、 より正確な、状態の向上低下の原因究明を実現することで、より効果的な PDCA を回したい。 Deployments 履歴を o11y ツール内で設定し、追っている数値の変化を可視化することで解決 Apdex score やエラー率を一覧に載せることで deploy 履歴と状態の推移を確認できる Deployment Marker で deploy ごとに Apdex score や Error 率などを比較することができる
  24. 31 我々のサービスの特性上、他サービスからの情報取得がクリティカルになるので、実はとても重要。 測りにくい外のサービスの情報を正確なデータで取得し、判断材料にしたい。 NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 外的要因を含めた Performance 改善を図るヒントがほしい

    o11y ツール内の外的 Service の監視機能を使用し、解決。 直近の Performance 的変化などを可視化することでより正確な対策を練ることができる。 外のサービスをドメインごとに Response time がどう変化しているかを一覽することができる
  25. 32 APM の先に進むため、o11y 向上を図った NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE 
 あらゆる環境で o11y

    を図ることで、 「開発」「運用 (通常時/問題発生時)」「改善」の各フェーズの不安要素を解決することができた deploy deploy next deploy next deploy ✗ ✔ ✔ next deploy ✔ ✔
  26. 34 今回 Web Product Unit のいちエンジニアが実体験を元に「スキルとしての “SRE” の必要性」と、 そこで直面した課題を o11y

    を実践することで解決に至った話を共有しました。 「ユーザーに価値を届ける」ことを評価軸にサービス開発しているエンジニアにとって、 開発、運用 (通常時/問題発生時)、改善のあらゆるタイミングの不安解消を図るために o11y の向上が有用でした。 これからもより開発に集中できる環境にすべく o11y 観点を意識した開発、環境強化をしたいです。 また、この経験を通して、本当の意味での「サービス監視」に向き合い、その価値を体感できました。 まとめ NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE