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.4k
Other Decks in Programming
See All in Programming
僕がつくった48個のWebサービス達
yusukebe
18
17k
Go言語でターミナルフレンドリーなAIコマンド、afaを作った/fukuokago20_afa
monochromegane
2
140
Kubernetes for Data Engineers: Building Scalable, Reliable Data Pipelines
sucitw
1
200
Googleのテストサイズを活用したテスト環境の構築
toms74209200
0
270
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
540
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
3
400
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.3k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.2k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
7
430
Identifying User Idenity
moro
6
7.8k
役立つログに取り組もう
irof
26
8.6k
Vue SFCのtemplateでTypeScriptの型を活用しよう
tsukkee
3
1.5k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
156
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Statistics for Hackers
jakevdp
796
220k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Raft: Consensus for Rubyists
vanstee
136
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Bash Introduction
62gerente
608
210k
It's Worth the Effort
3n
183
27k
A Philosophy of Restraint
colly
203
16k
The Pragmatic Product Professional
lauravandoore
31
6.3k
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