ちょっと調べ物をする事になったので、今回は、その前提部分として、「DevOpsとかGitOpsとか、今更、そのルーツを探る話。」を書いて行きたいと思います。
なんとなく、コレ系の類義語を並べると見えてくるかなぁ?と思い、以下、類義語を列挙してみました。
- ツール類
- テスト自動化ツール
- ビルド自動化ツール
- IaC(Infrastructure as Code)
- プラクティス類
- TDD(テスト駆動開発)
- CI/CD(継続的インテグレーション / デリバリ)
- DevOps、GitOps
- アジャイル
こう書き出してみると、
なんとなく見えてきますね?
これらのツールやプラクティスは、
「要件定義 → 設計 → 開発 → 実装 → テスト → リリース → 運用の各プロセスのアクティビティを効率化するツールから始まり、その後、効率化によって浮いたリソースを使用して、分業化されて、恐らく発生しただろう、各種の問題を解決するために"軸"を通そうとするプラクティスを誕生させたのではないか?」
と言う様な話だと思います。
そう考えると、ソフトウェア自体を進化させるには、
「現在、分業化されている "要件定義 → 設計 → 開発 → 実装 → テスト → リリース → 運用" の各種プロセス間のコミュニケーション量を増やして、各プロセス上での整合性をとり、これによってプロダクトのライフサイクル全体に渡って軸を通して行く事」
...が重要なのだろうな?
と言う気がしますね。
「元来、こういう仕事は、PMの仕事だったような気がしますが、PMPホルダーの私的にコレを分析させて頂きますと、PMは、要件定義ベースの段階的詳細化と、後工程のQCD堅守が主なタスクなので、要件自体の問題や、納品以後の問題については、あまり関わって来なかったと言えると思います。」
...と言うのも、昔は、ツールの進化により、新しいプラクティスが生まれてきたように思いますが、最近のツールの進化は、どうも、コレ等のプラクティス自体に牽引されている感があるからです。
最も解り易いのは、
以前も書きましたが、Docker系なのではないか?と思います。もうチョット言うと、クラウド(AWSやAzure)上のOpen PaaS(K8s)に、Dockerコンテナをデプロイすると言う話です。
簡単に言うと、「ITIL (Information Technology Infrastructure Library)みたいなモノが重要視されて来ている。」ということかも知れません。