Slide 1

Slide 1 text

CREの守護者たち
 〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 株式会社マネーフォワード
 ERP開発本部 福岡第一開発部
 Guardianグループ
 手島 尚人 / tosite
 2024-10-25
 JaSST'24 Kyushu
 実行委員LTセッション


Slide 2

Slide 2 text

はいさい ぐーすよー
 ちゅー うがなびら
 訳: 皆さんこんにちは、ごきげんよう
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 3

Slide 3 text

うちなーぐちさーに 
 ちゅくとぅば えーさち 
 うんぬき やびら
 訳: うちなーぐち(沖縄弁)で一言ご挨拶申し上げます
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 4

Slide 4 text

わんねー tosite やいびーん 
 福岡から ちゃーびたん
 訳: tositeと申します
 福岡から来ました
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 5

Slide 5 text

ゆたしく うにげーさびら
 訳: 今日はよろしくお願いします
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 6

Slide 6 text

改めまして
 初めまして
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 7

Slide 7 text

CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 8

Slide 8 text

CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 株式会社マネーフォワード 
 ERP開発本部 福岡第一開発部
 Guardianグループ クラウド経費チーム
 リーダー / バックエンドエンジニア
 手島 尚人 / tosite
 
 趣味:
 キャンプ・登山・料理・ドライブ・温泉・車中泊


Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

昨日の出来事
 美味しかったですが
 会計については
 思い出したくないです 


Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

一目惚れして
 買ってしまいました・・・


Slide 13

Slide 13 text

最近の趣味
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

たのしい!(*^ー゚)v
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

家庭で作るラーメンにも
 手を出し始めた始末
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 18

Slide 18 text

いま一番欲しいものは
 製麺機です
 対戦よろしくお願いします
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 19

Slide 19 text

閑話休題 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 20

Slide 20 text

私事ですが今期から
 Guardianグループ
 経費チームのリーダー
 に就任しました
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 21

Slide 21 text

今日はチームリーダーの立場から
 Guardianの取り組みについて
 紹介したいと思います
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 22

Slide 22 text

Guardian
 って何?
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 23

Slide 23 text

まずは「現在」の話をしよう
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 24

Slide 24 text

我々Guardianグループはプロダクトの
 保守・運用を中心に守護する組織です。
 CRE(Customer Reliability Engineering)に近い
 組織ですが、ただ単に運用・保守だけを行うだけでなく、
 能動的に働きかけてプロダクトを前に進める、
 言わば「DevOps」を体現するチームです。
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 25

Slide 25 text

我々Guardianグループはプロダクトの
 保守・運用を中心に守護する組織です。
 CRE(Customer Reliability Engineering)に近い
 組織ですが、ただ単に運用・保守だけを行うだけでなく、
 能動的に働きかけてプロダクトを前に進める、
 言わば「DevOps」を体現するチームです。
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 26

Slide 26 text

Guardianグループでは問い合わせ対応だけでなく
 定常業務の効率化や
 不具合になりそうな部分の改修を
 行っています
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 27

Slide 27 text

ここまでが「今まで」の
 Guardianグループ
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 28

Slide 28 text

新しい
 取り組み
 〜攻めと守り〜
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 29

Slide 29 text

リーダー就任にあたって再び「Guardian」
 という組織の存在意義を考えた結果
 「保守」「運用」を再定義
 することにしました
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 30

Slide 30 text

現在のGuardianグループは
 保守・運用を主に担当しています
 カスタマーサポートからの問い合わせ対応や
 定型業務の運用、サービスの保守などなど
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 31

Slide 31 text

そしてそれ以外にもライブラリの
 アップデートや不具合修正
 パフォーマンスチューニングや
 新機能追加などの開発も行っています
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 32

Slide 32 text

保守・運用はSaaSにとって大切な仕事ですが…
 それだけでは成り立たず
 将来の負債を減らすための活動
 もしていく必要があると思っています
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 33

Slide 33 text

そこで我々は運用を
 攻めの運用と守りの運用に
 分割して再定義することにしました
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 34

Slide 34 text

攻めの運用
 将来顕在化する見込みの
 運用上の問題に対し、
 発生前に先んじて対応を
 行うタスク
 守りの運用
 すでに運用上の問題が
 発生しており、
 期限内の対応が
 求められるタスク
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 35

Slide 35 text

攻めの運用
 将来顕在化する見込みの
 運用上の問題に対し、
 発生前に先んじて対応を
 行うタスク
 守りの運用
 すでに運用上の問題が
 発生しており、
 期限内の対応が
 求められるタスク
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 36

Slide 36 text

攻めの運用
 将来顕在化する見込みの
 運用上の問題に対し、
 発生前に先んじて対応を
 行うタスク
 守りの運用
 すでに運用上の問題が
 発生しており、
 期限内の対応が
 求められるタスク
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 37

Slide 37 text

すでにこの運用が始まっていますが、蓋を開けてみると
 6:4くらいで攻めていて
 非常にいい動きができているという
 データが取れました🎉
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 38

Slide 38 text

事例紹介
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 


Slide 39

Slide 39 text

攻めの運用の例
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 40

Slide 40 text

DevOps によるトイルの撲滅 
 〜駅マスタと銀行マスタ更新を例に〜
 DevOps によるトイルの撲滅 〜駅マスタと銀行マスタ更新を例に〜 - Money Forward Developers Blog
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 41

Slide 41 text

全国の駅情報が登録された駅マスタと
 最新の銀行情報が登録された銀行マスタを更新する
 作業の自動化を行った例です
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 42

Slide 42 text

年間約12営業日の作業工数の削減に成功し
 浮いた時間をさらなる攻めの運用に
 充てることができるようになりました
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 43

Slide 43 text

約9年開発されている Rails アプリケーションを
 6.1 から 7.0 へメジャーバージョンアップする
 約9年開発されている Rails アプリケーションを 6.1 から 7.0 へメジャーバージョンアップする 
 - Money Forward Developers Blog
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 44

Slide 44 text

フレームワークのメジャー
 バージョンアップを行いました!
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 45

Slide 45 text

新しいRailsの機能が使えるだけでなく
 セキュリティ的な観点からも
 大きなプロダクトへの貢献となりました
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 46

Slide 46 text

tbls活用事例 
 〜 ビューポイントからデータベースを整理してみた話 〜
 [2024/04/23]tbls活用事例 〜 ビューポイントから データベースを整理してみた話 〜 - Speaker Deck
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 47

Slide 47 text

データベースのドキュメント作成を自動化し、
 スキーマ情報を常に最新化することで
 開発速度を向上させた例です
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 48

Slide 48 text

入社してから プロダクトのキャッチアップをする際、また何か調査する際にめちゃくちゃお世話になってます!!! 
 中でもテーブルやカラムのコメントがありがたく、細かなRailsの実装を見なくとも、それらが何をしているのかがわかるのは本当にありがたいです 🙏
 ER 図をシュッと見ることができて便利だと思いました。 リレーションで困ったらすぐ活用してます。
 複雑なリレーションを持つテーブルが視覚的に分かるのがとてもいいですね。
 有志が追加してくれているdescriptionもとても重宝しています。 
 開発・調査で迷った際に参照させていただいています。 
 開発チームの時は、実装する前にリレーションがどうなっているか確認できてとてもよかったです! 
 Guardianになってからは主に調査で活用させてもらいました! 
 シュッと確認できるので、とても助かってます!ありがとうございます! 
 ビューの機能がすごくありがたいです! 
 膨大なコードベースなので対象の関心ごとを理解するのにすごく役立っています! 
 また、 CIで腐らないER図になっているところも非常にありがたいです! 
 既存のER図は手運用だったため網羅されていない点や、最新状態でないという点が大きな問題だったかと思っていますが、 
 tblsの導入でこれらの点が払拭されたと思っています!( 入社のタイミングで欲しかった!)
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 49

Slide 49 text

Guardian攻めてる💪
 Guardianとして生まれ変わった俺は 
 攻めと守りの運用で無双する
 〜守りの天才が考える、攻めの運用術〜 
 より引用 
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 50

Slide 50 text

その他にもCIの高速化を通して
 開発体験の向上を図っています
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 51

Slide 51 text

それ以外にも
 誰でも実行できるE2Eテストの環境整備など
 プロダクトの品質向上にも寄与しています
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 52

Slide 52 text

品質について
 話そう


Slide 53

Slide 53 text

それ以外にも
 誰でも実行できるE2Eテストの環境整備など
 プロダクトの品質向上にも寄与しています
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 54

Slide 54 text

E2Eテストの環境改善を
 通して見えてきたこと
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 55

Slide 55 text

E2Eテストそのものの成否が
 Guardianの仕事量
 に直結している?
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 56

Slide 56 text

リリース前の不具合を検知して
 事前に対応できる
 =
 問い合わせの数が減る
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 57

Slide 57 text

いにしえの図
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 58

Slide 58 text

このようないい循環が
 生まれたことに気づきました
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 59

Slide 59 text

問い合わせが削減できるということは
 プロダクト改善のための開発に
 時間を使うことができるようになる
 ということ
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 60

Slide 60 text

つまり、DevOpsを体現するCREチーム
 「ガーディアン」のマインドセットに
 「シフトレフト」を取り入れることで
 よりプロダクトを「前に」進めることができる!
 ΩΩΩ < な、なんだってー
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 61

Slide 61 text

シフトレフトのアプローチを取り入れることで
 DevOpsのプロセスの信頼性が上がり
 効率的な開発ができるようになる
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 62

Slide 62 text

品質保証活動を前倒しにすることで
 CI/CDの信頼性が高まり
 より早く・より高品質なプロダクトを
 届けることができる
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 63

Slide 63 text

これは
 攻めの運用
 を実現できている!
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 64

Slide 64 text

ただの「保守・運用」ではなく
 その一歩先を見据えて
 プロダクトの信頼性を高めていく
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 65

Slide 65 text

Guardianグループは今後
 そういう取り組みを増やしていきたい
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 66

Slide 66 text

シフトレフトは
 誰のもの?


Slide 67

Slide 67 text

思うに、「シフトレフト」とは
 もはやQAエンジニアだけの責任ではなく
 プロダクトに携わる開発者全員が意識を
 向けるべきものに変化しているように思います
 \主語が大きい/
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 68

Slide 68 text

例えばユニットテスト
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 69

Slide 69 text

ユニットテストが増えることで
 自然とE2Eテストの責務が減り
 早期にバグを発見できるようになるでしょう
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 70

Slide 70 text

他にもユースケースを意識した
 ユニットテストを書くことで
 仕様が明確になり、意図しない
 エンバグを防ぐことができるかもしれません
 例えばRequest Specなど
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 71

Slide 71 text

特にRubyは動的型付け言語なので
 ユニットテストの数と
 プロダクトの品質が直結します
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 72

Slide 72 text

ユニットテストがもっと拡充されていけば
 Railsのアップデートももっと簡単に
 できるようになるかもしれません
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 73

Slide 73 text

例えばドキュメント
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 74

Slide 74 text

開発ノウハウや仕様をまとめた
 ドキュメントを整備することで
 開発スピードの向上やOJT
 その他諸々のことに使えるでしょう
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 75

Slide 75 text

他にも問い合わせの早期解決や
 機能改修の際にも便利に使える!
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 76

Slide 76 text

例えばカバレッジ
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 77

Slide 77 text

現状のカバレッジを集計することで
 どこの機能のテストが手薄かを
 確認でき、次の目標が明確になるでしょう
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 78

Slide 78 text

とは言えこれらの施策は場当たり的にやるのではなく
 よく使われる機能や
 その機能が参照しているメソッドから
 先に対応していくなどの
 戦略的アプローチが必要になります
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 79

Slide 79 text

そしてガーディアンとして
 品質向上に対してのアプローチを
 技術的側面から後押ししていきたい
 と思っております
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 80

Slide 80 text

そのことを肝に銘じつつ
 今後はより一層、品質の高いプロダクトを
 提供していけるように頑張ります!
 CREの守護者たち〜DevOps×シフトレフト - 俺またプロダクト救っちゃいました!?〜


Slide 81

Slide 81 text

にふぇーでーびたん!