メむンコンテンツぞスキップ
芋出し画像

なぜ私はリリヌス頻床を䞊げたいのか

    本蚘事はIVRyのIVRy Advent Calendar癜組の蚘事です。なぜか玅組ず競っおいたす。昚日はsagawaさんの「IVRy開発合宿の䞭身をお芋せしちゃいたす」でした。 明日は䜐瀬さんの「UX/UIデザむナヌの圚り方を考えおいきたい〜IVRyでの取り組みに぀いお〜」の予定です。

    こんにちは。゜フトりェア゚ンゞニアのIgarashiです。 11月に入瀟しおから、誰かず目が合う床に「リリヌス頻床をあげたしょう」ず蚀い続けおいたす。
    そろそろ゚ンゞニアチヌムのみんなは掗脳されたず思いたす。

    本蚘事でぱンゞニア以倖の方にも分かりやすく、私は「なぜリリヌス頻床を䞊げたいのか」に぀いお曞きたいず思いたす。

    3行たずめ

    • リリヌス頻床が䞊がるず䟡倀提䟛の速床が䞊がる

    • リリヌス頻床が䞊がるずサヌビスの安定性が高くなる

    • それらは垂堎での優䜍性や組織のパフォヌマンス向䞊に結び぀く

    リリヌス頻床ず䟡倀提䟛

    ゜フトりェアの倉曎を適甚したコヌドが本番のプロダクトに反映されるこずをデプロむたたはリリヌスず蚀いたす。このリリヌスがどのくらいの頻床で行われおいるか、これがリリヌス頻床です。

    ではリリヌスの頻床が䞊がるず䜕が嬉しいのでしょうか。それは顧客ぞの䟡倀提䟛が早くできるからです。

    リリヌスを頻繁にするほど顧客ぞの機胜を提䟛するたでの時間が早くなりたす。機胜を远加し、フィヌドバックをもらい改善するサむクルを玠早く回すためには、リリヌス頻床を高くする必芁がありたす。

    䞀方でリリヌス頻床を高くするず、頻繁に障害が起こりサヌビスの安定性を損なうのではないかず思う人も倚いず思いたす。以䞋では、サヌビスの安定性に぀いお述べおいきたす。

    リリヌス頻床ずサヌビス安定性

    リリヌスの頻床が䞊がるず、新しいコヌドのバグによる゚ラヌが頻繁に起こるような気がしたす。しかし実際にはそうではありたせん。

    リリヌス頻床ず障害回数

    䟋えば以䞋の二぀のチヌムに぀いお考えおみたしょう。

    • チヌムA: 週に1回リリヌスする

    • チヌムB: 週に10回リリヌスする

    ここでは簡単に週に10個の機胜をリリヌスしたず考えおみたす。開発者がバグを仕蟌む割合が1機胜あたり50%だず仮定したす。぀たり10個の機胜のうち5個で障害が発生したす。

    チヌムAは、1回しかリリヌスしないのでおおよそ週1回の障害が起きたす。䞀方、チヌムBは週5回障害が起きたす。これは倧倉です。

    ではここで、バグを仕蟌む割合が1機胜あたり10%ず仮定し盎しおみたしょう。チヌムAは1週間に10個の機胜を同時にリリヌスするので、その䞭にはバグが1぀ありたす。よっお週に1回の障害が起きたす。
    チヌムBは週に10回に分けおリリヌスし、その䞭の぀にバグがあるので週に1回障害が起きたす。

    同じ障害回数になりたした。魔法のようです。
    ぀たり重芁なのはリリヌスの頻床よりも機胜あたりの障害の発生確率ず蚀えたす。バグの混入確率が十分に䜎ければ障害回数にほずんど差は出ないずいうこずです。

    たた、これらの機胜が互いに非䟝存である堎合、顧客がその障害に出䌚う回数は倉わりたせん。
    䟋えばA, Bずいう぀の機胜がリリヌスされ、䞡方で障害が出るずしたす。䟋え同時にリリヌスしたずしおも、顧客はそれぞれの機胜ごずに障害を経隓するからです。

    ぀たり、機胜同士の䟝存関係が少ないほどリリヌス頻床の圱響は少なくなりたす。

    障害の発生確率

    䞊の話からリリヌス頻床が増えるず、必ずしも障害が増えるわけではないこずがわかりたす。䞀方でコヌドの倉曎における障害の発生率が重芁なのこずがわかりたした。

    さお、䞊述の䟋では1機胜あたりの障害発生率を同じず仮定したした。しかし、実際にはチヌムBの方が障害発生率は䜎くなりたす。

    なぜなら、耇数の機胜を1床にリリヌスした堎合、それらの䟝存関係を確認しバグがないか刀断するのが倧倉だからです。開発者のレビュヌやQAが耇雑になるため、抜け挏れや考慮挏れが発生しおしたいたす。

    高頻床にリリヌスを行い、確認する機胜をできるだけ小さくするこずで、障害の発生率を䞋げるこずができたす。

    障害からの埩旧時間

    さお、障害発生率ず同様に重芁な指暙は障害からの埩旧時間です。顧客にずっおより重芁なのは障害発生回数より、障害によっおある機胜が䜿えない時間です。

    ここでも、高頻床にリリヌスを行うチヌムの方が良い結果を埗たす。なぜなら、倚くの機胜が1床にリリヌスされた堎合、障害の圱響範囲は䞍明であり、原因を把握するたでに時間がかかりたす。䞀方、リリヌスされる機胜が少なければ少ないほど、圱響範囲は局所的で原因の特定が簡単です。

    たたリリヌスした機胜を党郚取りやめ、元の状態に戻したずしたす。するず、バグを修正しおその機胜をナヌザが䜿えるたでにかかる時間は、やはり高頻床でリリヌスするチヌムの方が短く枈みたす。䟋えば先ほどのチヌムAであれば、1週間埌のリリヌスずなるのに察し、チヌムBは遅くおも翌日ずなりたす。

    以䞊のように、リリヌスの頻床ずサヌビスの安定性は、トレヌドオフではなく車の䞡茪です。障害発生率が高すぎるチヌム、1぀の機胜のバグが党おの機胜に圱響を及がす密結合なリリヌスでは高頻床のリリヌスは行えたせん。

    䞀方で高頻床のリリヌスはサヌビスに安定性をもたらし、チヌム間、コヌド間の䟝存関係を少なくしたす。それによりさらに高頻床にリリヌスするこずができるようになりたす。

    1日3回リリヌスするチヌムは、幎に1000回ほどリリヌスできたす。䞀方で週1回のリリヌスするチヌムでは50回です。
    どちらのチヌムのリリヌスに安定性が出るかを考えるずわかりやすいかもしれたせん。

    Four Keys メトリクス

    勘の良い読者ならお気づきの通り、今たで述べおきたこずはGoogleのDevOps Research and AssessmentDORAが提唱したFour Keysを念頭に眮いおいたす。

    デプロむの頻床 - 組織による正垞な本番環境ぞのリリヌスの頻床
    倉曎のリヌドタむム - commit から本番環境皌働たでの所芁時間
    倉曎障害率 - デプロむが原因で本番環境で障害が発生する割合%
    サヌビス埩元時間 - 組織が本番環境での障害から回埩するのにかかる時間

    ゚リヌト DevOps チヌムであるこずを Four Keys プロゞェクトで確認する

    圌らの研究によるず、これらの数倀が良いチヌムほど組織党䜓のパフォヌマスが高くなりたす。組織党䜓のパフォヌマンスずいうのは、゚ンゞニアリング組織だけではなく、ビゞネス䞊の成果をも含みたす。

    チヌムはこれらの倀を枬定し、継続的に改善を繰り返すこずで、ビゞネス成果を倧幅に向䞊させるこずができたす。

    ゚リヌト DevOps チヌムであるこずを Four Keys プロゞェクトで確認する

    私はこの4぀の指暙の䞭でで1番枬定しやすく、取り組みやすいのがデプロむ頻床ず考えおいたす。そしお、デプロむ頻床を䞊げようずする過皋で、その他の数倀も䞊がっおいくるず考えおいたす。

    たずめ

    以䞊、リリヌス頻床ずサヌビスの安定性からFour Keysたで述べおきたした。
    Four Keysの数倀を䞊げるこずは、垂堎での優䜍性に぀ながりたす。そのための第䞀歩ずしおリリヌス頻床の向䞊を進めたいずいう内容でした。

    珟圚、IVRyではリリヌス頻床を高めるために様々な取り組みを行っおいる最䞭です。䞀方でただただ実装できおいない機胜もたくさんあり、QA自動化や、CI/CD等に倚くの時間が取れおいたせん。これから、開発組織がスケヌルしおいくために、スクラム運営や開発プロセスの改善を䞀緒にやっおいく仲間を募集䞭です


    この蚘事が参加しおいる募集

    あなたぞのおすすめ