DevOps開発手法の概念と実践について考えてみた

以前、「DevOps」に関しては、DevOpsの実践方法を考えてみたで効率化の概念としての持論を展開しましたが、どうやらIBM社が主体として推進してきている「DevOps開発」の概念が「DevOps」として固まってきたようです。
※ここでは今までのDevOpsの概念とこれからDevOpsの概念とで混乱を招くため、今までのDevOpsを「DevOps」、これからDevOpsを「DevOps開発」と分けて表現しています。

内容としては「DevOps開発」では、概念としてだけではなく、「継続的リリースサイクルを実践することに特化した開発手法」として定義しているようです。

そういった「継続的リリースサイクル」が可能なサービスや製品を提案することで、単なる言葉だけではなくビジネスとして活用するフェイズに来ているようです。このままではバズワードの最有力候補になっていましたので、より具体性を持ったのはいい方向なのかもしれません。

「継続的リリースサイクル」というのはどんなものか

この概念では開発 (Development) と運用 (Operations) だけではなく、品質(Quality Assurance)も含めることで、利用者や発案者も含めたサイクルを構成しています。

小さなサイクルで、開発者がデモ版を利用者へのリリースを繰り返して完成を目指すアジャイル開発よりもさらに大きな枠組みとなっています。
概念の本質がデモ版(プレリリース)ではなくリリース版となっているのがより特徴的でしょう。

簡単に言えば、機能が足りなくても本番リリースしてしまい、利用者(顧客)からのフィードバックを取り入れて、次々にバージョンアップを繰り返すという開発モデルです。
スマホアプリの提供方法を想定してもらうとわかりやすいかもしれません。

「DevOps開発」の実践方法とは

それではどのように「DevOps開発」を実践するかというと、各チームをつなぐためのコミュニケーションツールを導入する必要があります。
また、リリーススピード向上と安定性を保つためのさまざまな仕組みの導入も必要です。

まずは課題や要望、不具合などのタスク管理がチームでできるコミュニケーションツールになります。
誰かが窓口とかではなく、誰もが見えるように優先度や課題や問題を共有して、開発が終わったら、すぐテスト、リリース、運用と進められる環境を構築する必要があります。

テストには特に時間がかかっていましたが、ここもツールを利用して自動化します。いまや負荷テストやシステムテストなどもテストパターンを事前に用意すれば、自動で不具合を検出してくれます。

さらに、開発時点でも負荷テストやシステムテストを考慮できるようにします。負荷の考慮などは運用の仕組みが分からないとなかなか難しいところですが、開発時点で意識できる開発ツールを利用することで、意識して開発するようになります。
(デバック実行時でもCPUやメモリ使用量が可視化されているなど。)

もし追加機能の開発途中に不具合修正のコードが入り混じったとしても、バージョン管理ツールを利用すれば、コード管理はそうハードルにはなりません。(ひたすらコード内に修正内容のコメントを何行も書く運用なども全く必要ありません。)

さらには運用監視ツールもこのサイクルに組み込むことで、より保守性が上がります。(構築してもいいですし、クラウドサービスなどを使うことで、より簡単に導入できます。)

そして必要なツール自体はすでに整っています。もちろん商用でも売っていますし、オープンソースで無料のツールもあるのです。

各所に最適なツールを利用するにより、自動化と効率を上げることができますので、リリーススピードを上げつつも、安定性も得ることが出来るのです。
もちろん、ツール導入後の運用方法を随時最適化することも重要事項です。(内部承認やコミュニケーション不足でかえって遅くなっては意味がありません。)

実際に「DevOps開発」を導入するには

こういったツールの導入や運用アドバイスなど、実際まだ経験がない会社やチームには難しいでしょう。
まずは各チームの課題や進捗が見えるツールを導入してから、、いろんなツールを試行錯誤しつつ徐々に開発のスピードアップを図る形になります。
とにかくさまざまなツールが各種ありますので、調査や選定を行うには時間がかかります。

時間に余裕があればいいのですが、特ににアジャイル開発も未経験な会社では、コンサルタント会社にツール全体の提案をしてもらった方がいいでしょう。また、導入後もSEO対策のように外部のアドバイザーとして、定期的にチェックしてもらうことを検討してもいいかもしれません。

これからの「DevOps」

一部の社内でしか使わないようなものや、年1回のリリースタイミングのソフトウェアとかは今のところ気にしなくていいのかもしれません。

ですが、運用と開発の相互理解や作業の効率化はとてもいいことです。

また、時代の流れからいうと一般向けにソフトウェアやクラウドサービスを提供している企業なら、ユーザーニーズの即時反映などは競業ビジネスとの差別化になります。もちろん競業企業も導入していくことになりますので、こういったリリーススピードを上げるため取り組みが必須な時代になっていくでしょう。

今まで、50MB~100MBなどあればCDやDVDで提供していましたが、今や通信インフラが整っており、1GBでも問題なくリリースできるようになっています。(20MBアプリダウンロード後、こっそり内部でダウンロードとか。。。)
パッチでの細かいバージョンアップで互換性などを気にしなくても、プログラム全体の再提供が十分可能な時代です。

IT業界では進化のスピードが特に速くなっていますので、柔軟にも大胆に変革していく必要がありそうです。

この記事をシェアする
Tweet about this on Twitter
Twitter
Share on Facebook
Facebook
0

Comments

Comments