アジャイル開発のメリットとは?システム運用にどう関係する?

アジャイル開発のメリットとは?システム運用にどう関係する?

ITシステムの開発スタイル(モデル)は、業界ごとに異なるだけでなく、時代のニーズでも変化し続けています。例えば、以前は「ウォーターフォール型」が主流でしたが、近年ではさまざまな場面で「アジャイル型」が取り入れられています。この開発モデルの違いや変化は、システム運用にも深く関わります。今回は、開発モデルの変化と、それがシステム運用に与える影響について見てみましょう。

順番に開発を進めるウォーターフォール型モデル

1970年頃、開発手法で主流だったのは「ウォーターフォール型」と呼ばれる方法です。その名の通り、上から下へと水が流れ落ちる滝のように、多段式になった開発フェーズを工程ごとに完了し、一つずつ順番に進めていくスタイルです。原則として、後戻りすることはないため、要件定義の時点でサービスの詳細を決定しておかなければならず、仕様を変更しづらいという問題がありました。なお、ウォーターフォール型モデルでは、開発と運用は完全に切り分けて考えられることが当たり前でした。

企画→要件定義→設計→開発→テスト→リリース

◯ウォーターフォール型モデルのデメリット

  • 仕様書を書く立場の人が、実際にはコーディングしないことが多い
  • 当初の設計通りを目指しても、実際に開発を進める中で判明する問題は避けられない
  • コードを書いている途中で、設計の改善を思いついても、簡単に反映させられない
  • テスト段階で不具合が見つかった場合、遡らなければならない工数が非常に多い など

時代のニーズで生まれたアジャイル型モデル

そこで、2001年頃から注目され始めたのが、「アジャイル型」という開発手法です。アジャイル(俊敏な)型開発では、初期の段階では厳密な仕様は決めず大まかな仕様だけでスタートし、機能ごとに開発していきます。各機能は、設計から実装、テスト、改善という一連の流れを、「イテレーション(反復)」という小さなサイクルで繰り返しながら、進めていきます。
アジャイル型開発モデルには、さらにいろいろなスタイルがありますが、それはまたの機会に。

設計→実装→テスト→リファクタリング(コードの整理)→改善
(以後、設計や実装へのフィードバックとテスト)

◯アジャイル型モデルのメリット

  • 仕様で決めた機能を確認できるまでの時間が短い
  • テストが組み込まれているため、不具合をいち早く発見できる
  • 仕様変更や機能調整にも柔軟に対応可能
  • 変化と競争が激しいマーケットに対応 など

◯アジャイル型モデルのデメリットや注意点

  • 細分化され、短期間でリリースが繰り返されていくため、全体のマネジメントが難しい
  • テストで不備や不具合があれば、対処しなければならないのは同じ
  • 各機能を統合するときに、上手く整合性が取れない場合も同様
  • 組織や業種、エンジニアによっては、必ずしも馴染まない など

アジャイルとDevOpsはどういう関係?

「DevOps(デブオプス)」という言葉を初めて見聞きしたとき、『アジャイル型モデルの開発とどう違うんだ?』と思った人もいるかもしれません。そもそも開発と運用では、利害関係が真っ向から対立することがよくあります。サービスの改善や新しい機能のリリース、新技術へチャレンジしたい開発と、サービスの安定稼働やパフォーマンスの維持を目的とする運用とでは、業務に求める内容が相反するためです。しかし、現代人の社会生活にITシステムが欠かせない存在になるにつれ、ユーザのニーズもダイナミックに変化するようになりました。ネットワークの高速化やデバイスの多様化、クラウドやコンテナ技術の隆盛など、システム環境の変化もあり、質の高いサービスを安定して提供し、素早くユーザのニーズに応えるためには、開発と運用をひとつながりで捉える必要性が出てきました。
つまり、DevOpsという環境を実現するには、アジャイル型モデル開発が不可欠だといえます。別の言い方をすれば、アジャイル開発モデルに抜けていたシステム運用という視点をプラスすることで、DevOps環境が整い、システム全体の俊敏性(アジリティ)が高められます。

開発と運用が相互協力するDevOps、運用も開発現場に積極参加!
https://un4navi.com/automation/19018/

SREって大規模な組織の話?開発と運用をチームにするメリットとは?
https://un4navi.com/automation/19016/

アジャイルとシステム運用の関係とは?

注意しておきたいのは、アジャイル型モデルがウォーターフォール型モデルに置き換えられるわけではないことです。サービスには、高速な変化が求められる業務や、むしろ変わらない堅牢性が重視される業務が混在するため、目的に合った開発モデルが導入されることは変わりません。
また、アジャイル型モデルで開発が高速化するなら、システム運用もそれに合わせて(むしろそれ以上に!)、統合型の専用サービスなどを導入して高速化・自動化する必要があります。ニーズに応じた柔軟なスタイルで開発される以上、システム運用もまたフレキシブルな対応が常に求められます。

関連記事

ページ上部へ戻る