DevOpsの効果と導入と最大の障壁は?
現在、プロジェクトで一緒に働いている KDDI アジャイル開発グループの川上さんが「アジャイル開発とDevOps」について登壇されるということで、改めて DevOps とアジャイル開発の相乗効果や導入の障壁について考えてみようと思います(ずいぶんとご無沙汰しています。。。)。
以前IBM で働いていた時はDevOps という単語が日常で使われていました。その理由は簡単で、価値のある成果物を提供するためには「アジャイル開発と DevOps」 を切り離すことが出来ないからです。アジャイル開発は各イテレーション(反復)で実際に動くソフトを作成しユーザーにUIや動作を確認してもらうなどの作業を一般的には含む、そのためイテレーション中にビジネス・ユーザーから運用面での課題をもらうこともある。
そしてDevOps では信頼性の高いアプリをより早くリリースできる環境を作成することだけではなく「継続的なデリバリー」を目指し保守性も最大化することを目指しています。このような事からDevOps とアジャイル開発を組み合わせて使うことで「開発の生産性」が上がると言われており、45%も生産性が上がったという記事もあります。
では実際の現場では DevOps をどのように受け止めているのでしょうか。私が今使っている Pega というモデル駆動の製品は主にアジャイルもしくは DCO (Agile と Waterfallの中間) 手法を使います。ある程度の要件定義をした後にUIを簡単に作成し実際の画面をユーザーに見てもらいフィードバックをもらうというパターンが多いです。そのような場面で良く質問されるのは「ドロップダウンのリストや割引率などをビジネス・ユーザーが変更したい」という要望です。なぜなら今日のビジネスではそれらの値が毎週変わることも珍しくないからです。
このようにビジネス・ユーザーに一部のルールや値の変更権限を委任するためにはアプリケーションの設計段階でその可能性を想定しデザインする必要があります。また委任するためにはグループや権限なども考えながら全体のアーキテクトを作っていく必要があります。「適切なルール(表示するリストやロジックで使う値など)の委任」はビジネス・ユーザーがスピーディーに対応する武器を与えるだけではなく、運用コストを大幅に削減する効果も期待できます。これらが DevOps という考え方でアプリケーションの作成段階から運用側やユーザー側の目線に立って考え、満足度の高いアプリケーションを一緒に作って行くのです。
ただ DevOps を推進するためにはその企業や部署の人たちが従来の依頼するだけの開発から一緒に開発するという文化に変わって行く必要があります。実際、 DevOps + アジャイル 開発を進める上での最大の障壁は「企業文化(部署文化)」ではないかと考えています。どんなに素晴らしい方法もその考えを理解し一緒に動いてくれる人たちがいなければ成り立ちません。プロジェクト・チームの最初の挑戦は「お互いの考えを理解すること」と「結果を出すために協力をしてもらう体制」ではないでしょうか。時代が変わっても人を動かすことが成功に繫がるという黄金式は変わらないようです。
参考サイト:
http://ac.nikkeibp.co.jp/nc/ssd_ea2017_05/01.html
https://japan.zdnet.com/article/35096178/