DevOpsへの追悼文
(matduggan.com)DevOpsの概念と歴史
- DevOpsは2007年ごろに導入された概念で、ハードウェアを管理する人々とソフトウェアを書く人々の間の区別をなくすことを目指していた
- 初期にはNASAの手順やアイデアを模倣し、コードデプロイの安全性を高めようとする試みだった
- 当時のソフトウェア配布プロセスは次のようなものだった:
- 開発チームがサーバーソフトウェアのリリースを準備し、QAチームがテストした後に顧客へ配布
- 運用チームは、ソフトウェア変更点や問題発生時の対処方法を含むプレイブックを受け取る
- データセンター内で段階的にアップデートをロールアウトしながら監視
- デプロイ日を決め、デプロイ後に監視
DevOpsの問題点
- DevOpsは非常に労働集約的だった
- 開発チーム、QAチーム、テクニカルライター、運用チームの協力が必要だった
- 機能のデプロイは遅く、重要なアップデートが優先された
- 多くの組織がDevOpsを導入した理由は次のとおりだった:
- 技術人材を簡単には代替できなかった
- 採用が難しく、コストも高かった
- SaaSベンダーが複雑さを減らしてくれた
- クラウドプラットフォームの利点が強調された
- 開発者は、小さな変更がデプロイされるまでに長い時間がかかることに不満を持っていた
DevOpsの実態
- DevOpsは開発チームと運用チームを1つのチームに統合することを目指していた
- QAチームは解雇され、迅速なデプロイとフィードバックによって内部テスト期間が短縮された
- DevOpsはGoogleのSREと混同されることもあるが、SREはより構造化され、厳格なアプローチを取る
- DevOpsの実際のプロセスは次のようなものだった:
- 開発者がgitでブランチを作成し、機能を追加
- PRを開き、チームメンバーがレビューした後でmainにマージ
- CI/CDシステムがビルドを開始し、コンテナをレジストリへプッシュ
- CDシステムがサーバーに新しいリリースを通知し、デプロイの成功可否を監視
- リリース認識メトリクスを通じてデプロイ後の変化を監視
DevOpsの失敗要因
- 開発者がローカル環境でテストし、Linuxサーバーにデプロイする過程で小さな差異が生じた
- 運用チームがデプロイを監視しなかったため、問題解決が難しかった
- 開発者はシステム運用に関する知識が不足していた
- コンテナの導入で一部の問題は解決されたが、運用の複雑さは依然として残っていた
コンテナの導入と限界
- コンテナは「自分のマシンでは動いたのに」という問題を解決した
- Linuxサーバーの構成要素を単純化した
- それでも残った問題
- 運用(Operate): インフラ保守、アップグレードなど専門性が求められる
- 観測(Observe): 複雑なモニタリングシステムの構築と管理が難しい
- 継続的フィードバック: 内部フィードバック処理が不十分
- 発見(Discover): チーム間の知識共有が不足
- 計画(Plan): 中央集権的な計画策定が難しい
Platform Engineeringの登場
- Platform EngineeringはDevOpsの後継概念であり、開発チームがプラットフォーム運用を理解して問題を解決する代わりに、プラットフォームチームがそれを担う
- このアプローチは開発チームとプラットフォーム運用の責任を明確に分離して役割分担をはっきりさせるが、それでもなお多くの技術を必要とする
- 開発者と運用チームの双方が、より多くの作業をしなければならない
結論
- インフラ領域では、シンプルでプラットフォーム非依存のツールを求める傾向が強まっている
- 多くの組織がKubernetesのような複雑な技術を手放し、よりシンプルなワークフローへ戻りつつある
- Platform Engineeringは万能な解決策ではなく、組織は本当に必要なものと不要なものを見極める必要がある
- DevOpsアプローチの利点を維持しつつ、単純化と安定性に焦点を当てるべきだ
GN⁺の見解
-
DevOpsの進化と現在の状況は、技術業界のトレンド変化をよく示す事例だ。初期の理想的な目標と現実の間にあるギャップを認識し、実用的なアプローチを探っていく過程が興味深い
-
Platform Engineeringへの移行は、DevOpsの限界を認めて新たな解決策を模索する試みと見える。しかし、これもまた完璧な解決策ではなく、組織の規模や特性に合ったカスタマイズされたアプローチが必要だろう
-
クラウドネイティブ技術とマイクロサービスアーキテクチャの複雑性が増す中で、単純さと安定性の再評価が進んでいる。これは技術選択において、ビジネス価値と運用効率をより重視すべきことを示唆している
-
DevOpsとPlatform Engineeringの変化は、ソフトウェア開発と運用の分野における継続的な学習と適応の重要性を強調している。技術者は新しいツールや方法論を学ぶだけでなく、ビジネス要件と技術的複雑性の間でバランスを取る能力も養う必要があるだろう
-
今後のソフトウェア開発と運用のあり方は、より柔軟で状況に応じたアプローチを採用していくと予想される。大規模組織と小規模スタートアップが同じ方法に従うのではなく、それぞれの状況に適した最適なプロセスとツールを選ぶ流れが強まるだろう
2件のコメント
かなり頻繁に
管理者たちは
DevOpsという概念さえ導入すれば
努力なしに大きな変革が現れると
期待するという(大企業中小企業を問わず)
古い企業の誤った考え
Hacker Newsのコメント
「devops cycle」の図で重要なのは「build, test, deploy」に集中すること
devopsチームが経験した問題に基づく意見
Kubernetesへの批判は的外れ
devopsとは、ソフトウェアのデプロイを容易にするために障壁を取り除くこと
devopsは方法論ではなく哲学
リーダーシップの「サイロを壊す」は、ほとんど儀式的なもの
ユーザーがテスターになれるなら、そうすべき
プラットフォームチームは大企業でしか成り立たない
devopsは方法論ではなく哲学
devopsには良い意図がある