トイルのないアプリケーション開発体制を整備する
DevOpsを実現するためのアプローチのひとつに、SRE(Site Reliability Engineering)がある。エラーバジェットを加味した効率的なシステム運用という切り口で語られるSREで、一見するとDevOpsとは関係ないように思えるが、実際はDevOpsの考え方を具体化し、運用や実装に落とし込むための方法論であり、開発も深く関わる考え方とスリーシェイクのSREエンジニア、佐藤慧太氏は述べる。
そのSREを実践する上で重要な目標に、Toil(トイル)をなくすという項目がある。トイルは、労苦の意味だ。Googleでは「手作業であること」「繰り返されること」「サービスの成長に比例して増加すること」などと定義している。
アプリケーション開発・運用におけるトイルとは何か。佐藤氏は主なトイルとして以下の3点を挙げる。
複雑な処理の修正
リファクタリングされていない複雑な処理をそのまま放置することにより、開発者の認知的負担が上がり、リリースサイクルが伸びてしまう可能性がある。
環境依存
特定の場所でしか起動しないような形で実装されている場合、動作確認の時間や使えるメンバーに限りがでてしまい、開発速度が低下してしまう。
不安定なE2Eテスト
E2Eテストが不安定な場合、新しいメンバーが機能を修正をする際に、動作保証ができず、修正によるものなのかそもそもの挙動なのかが判断つきにくくなってしまう。
これらのトイルに関して「処理が複雑なものを修正するのはバグ調査コストが高くなり、環境に依存するシステムでは開発のフィードバックサイクルが長くなる恐れがある」と佐藤氏は説明する。
トイルを解決するには、設計や実装を見直すことが近道になる。しかし、特に内製開発を始めたユーザー企業では知識や経験の不足から自力で解決するのは難しい。
そこでスリーシェイクが提供するのは、SREに基づき、技術戦略やサービスの設計、構築、運用までをワンストップで支援するサービス「Sreake」だ。ヒアリングでトイルを洗い出し、優先的に進めるべきタスクを整理。そして、顧客と伴走しながら課題解決に挑み、デモやハンズオン、ペアプログラミングによるスキルトランスファーなどを通じて、自走できるように支援する。ただ現時点の課題解決ではなく、将来的な運用を見据えたトイル排除と開発・運用体制の整備が目標と佐藤氏は言う。