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
成長痛に立ち向かうBill One SREのミッションと取り組み
Search
paper2
March 09, 2023
Programming
1
1.5k
成長痛に立ち向かうBill One SREのミッションと取り組み
急成長を支える開発組織の紹介を交えながら、Bill One の SRE チームが掲げるミッション、開発組織全体での信頼性担保の取り組みやその成果についてお話しします。
paper2
March 09, 2023
Tweet
Share
More Decks by paper2
See All by paper2
SREは何を目指すのか
paper2
7
4.6k
Other Decks in Programming
See All in Programming
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
220
Refactor your code - refactor yourself
xosofox
1
260
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
5
900
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
Security_for_introducing_eBPF
kentatada
0
110
ブラウザ単体でmp4書き出すまで - muddy-web - 2024-12
yue4u
2
460
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
700
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
3
1.1k
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
140
HTTP compression in PHP and Symfony apps
dunglas
2
1.7k
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Designing for humans not robots
tammielis
250
25k
How GitHub (no longer) Works
holman
311
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Facilitating Awesome Meetings
lara
50
6.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Transcript
成⻑痛に⽴ち向かう Bill One SRE のミッションと取り組み 2023-03-09
スピーカー紹介 Sansan 株式会社で Bill One プロダクトの SRE チームに 2022 年
8 ⽉から所属。前職は SIer 企業でコンテナ技術や SRE の普及活動、AWS・Azure での Kubernetes サービスの 設計・構築に従事。現職では SRE のミッション定義や信頼 性向上の⽂化づくり、負荷試験による性能改善、 IaC 化など を推進。最近は Google Cloud ⼀筋。趣味は家族。 Twitter: @paper2parasol Kamitsukasa Yohei Sansan株式会社
Bill One のご紹介 01 03 02 Bill One SRE のビジョンとミッション
SRE プラクティスの実践 04 その他の取り組み 05 まとめ
Bill One のご紹介 01
Bill One プロダクトの紹介 Bill Oneは、Sansan株式会社が提供するインボイス管理サービスです。 郵送やメールといったさまざまな⽅法・形式で届く請求書をオンラインで⼀括受領し、素早く正確にデータ化。請求書をク ラウド上で⼀元管理することで、アナログで⾮効率な請求書業務をデジタル化します。インボイス制度や電⼦帳簿保存法に も対応し、⽉次決算業務を効率化することで、企業経営における意思決定のスピードを加速します。 ※⽉次決算業務 毎⽉の営業成績、財政状況を明らかにするために⾏われる業務。経理担当者が⾏う業務で、毎⽉の数字の締め処理作業として発⽣します。
急成⻑中のプロダクト Sansan株式会社 2023年5⽉期 第2四半期 決算説明資料より引⽤
スケーラブルな開発組織 急成⻑に伴った組織規模拡⼤のためにシステム同様組織のスケーラビリティが重要となる 可能な限りの権限が委譲され、上⻑がボトルネックにならないスケーラブルな組織を⽬指している グループリーダ 権限委譲しない組織 全部 決めたい!! 忙しい、、承認待って これ以上チームは 増やせない、、
承認伺い 権限委譲する組織 ええやん 相談 相談を重ねて ⾃らが 最終判断をする グループリーダ チーム チーム チーム チーム チーム チーム チーム チーム
プロダクト開発チーム 4 ⼈前後のチームが 12 個存在 SRE 機能開発 グローバル対応 機能開発 機能開発
機能開発 グローバル対応 グローバル対応 機能開発 機能開発 機能開発 機能開発
横串チーム 運⽤改善推進 IaC (Infrastructure as Code) 改善 押忍 (Auth) オンボーディング...etc
フロントエンド エラー改善 開発組織横断の課題を解決する有志メンバによるチーム、任意結成・任意解散
マイクロサービスを採⽤ サービス 機能開発チーム 機能開発チーム サービス 機能開発チーム サービス 機能開発チーム 開発・運⽤ 信頼性向上
開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 主要マイクロサービスが 6 個存在し、各マイクロサービスを 1~2 の機能開発チームで担当する
アーキテクチャ
Bill One SRE の ビジョンとミッション 02
Bill One SRE チームのビジョンとミッション ミッション 開発チームが⾃律的に動ける仕組みを整えつつ、 信頼性と開発効率の向上をリードする ビジョン ⾃律的に⾼い信頼性を維持できる 開発チームを⽀えるための触媒となる
開発組織のスケーラビリティの維持 Bill One の成⻑のためにも SRE チームがボトルネックになり、 開発組織のスケーラビリティを低下させてはいけない SRE チーム スケーラビリティを阻害する例
インフラ全部やる! 信頼性向上全部やる! なんでもやる!! 忙しすぎ、、これ以上は 対応できない、、、 環境構築 依頼 チーム チーム チーム 変更依頼 性能問題 調査依頼
ビジョン ⾃律的に⾼い信頼性を維持できる開発チームを⽀えるための触媒となる ※ 触媒とは化学反応の反応速度を速める物質で、⾃⾝は反応の前後で変化しないものをいう サービス 機能開発チーム 機能開発チーム サービス 機能開発チーム サービス
機能開発チーム 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上
ビジョン ⾃律的に⾼い信頼性を維持できる開発チームを⽀えるための触媒となる ※ 触媒とは化学反応の反応速度を速める物質で、⾃⾝は反応の前後で変化しないものをいう SRE チーム サービス 機能開発チーム 機能開発チーム サービス
機能開発チーム サービス 機能開発チーム 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 なんかめっちゃ 信頼性維持しやすい!
ミッション 開発チームが⾃律的に動ける仕組みを整えつつ、信頼性と開発効率の向 上をリードする • SRE チームメンバの専⾨性が必要なタスクは SRE が主導する • 並⾏してそれらを機能開発チームに委譲する仕組みづくりを検討・推進する
SRE チーム サービス 機能開発チーム 機能開発チーム サービス 機能開発チーム サービス 機能開発チーム 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 開発・運⽤ 信頼性向上 信頼性向上 促進
SRE プラクティスの実践 03
SRE プラクティス実践例のご紹介 SLI / SLO トイル削減 可観測性向上
SLI / SLO • ユーザリクエストのレスポンスレイテンシ とエラー率を SLI としている • SLI
が急激に低下した場合にバーンレートを 活⽤し、アラートを発報 • SLO は定義しているがエラーバジェットに よる意思決定は実施していない Users Bill One サービス サービス ・・・ SLO レイテンシ 99%tile が 1000ms 以下 エラー率 0.1% 以下
トイルの削減 • 各メンバが個⼈・または横串チームなどで ⾃律的に削減活動を実施 例) 運⽤改善横串チームでは運⽤作業におけ るトイルの収集、タスク化、優先度付け、 各チームへの実装依頼などを実施 • SRE
チームとしての施策は特になく、組織 全体でトイル削減を実施できている 解消 解消 解消 解消
可観測性向上 • アプリおよびインフラのログをトレースに 紐付け、ユーザの 1 リクエストに関する各 コンポーネントのログを抽出可能 • 性能問題など細かい挙動の把握が必要な際 に課題を感じており、スパンの活⽤余地が
ある トレース ID によるログ抽出
その他の取り組み 04
その他の取り組み例 • 開発者の⾃律的な信頼性向上の⽂化づくり ◦ SRE のビジョン・ミッションの定義、 開発組織全体への共有 ◦ ポストモーテムの推進 ◦
機能開発チームと週次でメトリクス確 認を開始 ◦ インフラの課題解決を SRE の⽀援を 前提に適宜機能開発チームに依頼 • 性能改善 ◦ 負荷試験による性能劣化原因の特定、 解消による信頼性向上(詳細後述) ◦ SRE チームで週次のメトリクス確認、 懸念点を機能開発チームと解消 • 可観測性向上 ◦ 分散トレーシングの活⽤、改善 ◦ サービスダッシュボードの作成
プロダクトの成⻑痛 成⻑に伴い負荷量が増え、⾼負荷時に性能劣化が発⽣ Bill One サービス サービス ・・・
ユーザリクエストのレイテンシ SLI が急激に低 下したことをアラートにより検知 原因が特定できず、試⾏錯誤の中で実施した DB のスペックアップにより解消 ⾼負荷時の性能劣化 Bill One
Users Bill One Users
負荷試験による性能劣化原因の特定・解消 • 負荷試験による原因調査を実施 • Google Cloud のサポートと連携し調査を進めることで以下が判明 ◦ Cloud SQL
の監査⽤クエリログの量が多いことが原因 ◦ 当原因は Google Cloud の提供するメトリクスやログでは特定できない • 別種の DB ログと組み合わせ、監査⽔準を維持しつつログ量を削減することで問題を解消 Bill One サービス サービス ・・・ GCE
• DB の CPU、メモリ、ネットワークトラフィックなどはメトリクス上枯渇していなかった • アプリで記録される DB クエリのレイテンシが⻑い( 例 :
300ms )のに対して、Cloud SQL の ログに表⽰されるクエリレイテンシは⾮常に短かった( 例 : 1ms ) • アプリを重点的に調査したが問題を⾒つけられず、Cloud SQL の確認も実施 • Cloud SQL のログが⽋損していることを(たまたま)発⾒ ◦ BigQuery で本番環境でも 30 秒以上ログが出⼒されない期間があることなどを確認 • その後サポートと連携し調査を進めることで原因を特定 Google Cloud の提供するメトリクスやログから原因が特定できないこと 困難だったこと
まとめ 05
まとめ Bill One のご紹介 • Bill One は機能開発チームとは別に有志メンバによる横串チームがある • マイクロサービスアーキテクチャを採⽤している
ビジョン・ミッション • ビジョン ◦ ⾃律的に⾼い信頼性を維持できる開発チームを⽀えるための触媒となる • ミッション ◦ 開発チームが⾃律的に動ける仕組みを整えつつ、信頼性と開発効率の向上をリードする 取り組み例 • SRE チームでは SLI/SLO の定義、可観測性向上などに取り組んでいる • トイル削減は組織全体で実施できている • 負荷試験により成⻑痛(性能問題)を解消できた
Bill One の SRE 募集中です!!
None