
日記~DevOps~
こんにちは。たろいもです。
今回はDevOpsについての自分なりの理解と考えをメモリます。
はじめに
DevOps、CI/CD、クラウドネイティブなど時代の流れすら知らず数日いろいろなものをインプットして、ようやく腹落ちしてきたのでまとめておこうと思います。
DevOpsとは
現在のプロジェクト開発にはさまざまな手法が存在する。
その中で多くが取り入れている手法の一つに、開発と保守を体制として分断する、というものである。
この体制分けを行った結果、「開発と保守」の間に利害関係の不一致が発生し非常に無益な争いが発生している。
ここでのDevOpsは、それを解決するための「思想(+手段)」の位置づけと定義します。
では具体的なDev(製造担当)とOps(保守担当)のそれぞれの主張を見てみましょう。
Dev:ユーザーのフィードバックを迅速に反映したい。
→リードタイムを短くしたい。
Ops:システムを安定稼働したい。
→リードタイムを一定(もしくは長く)にしたい。
このように、「ユーザー要求を作りこみ実現したいDev」と「リリースによるリスクを軽減したいOps」という立てつけで利害は相反するのです。
これを知って僕が感覚的に思い描いたのは以下のようなもの。
僕的には飛空艇のようなイメージ。
飛行士(Dev):このままでは追い付けん!全速力!
技工士(Ope):これ以上スピードあげたらエンジンが焼けるわい!
みたいな。
こんなシーンがあっても、物語では飛行士も技工士も、互いを認め尊敬しあい信頼しあっていて、だから「全速力!」を出してもその影響でエンジンが焼け焦げて墜落なんてシーンはない。(ほとんどない)
この「互いを認め、尊敬しあい、信頼し」場合によっては飛行士がエンジンルームで手助けする、こういう感じがDevOps。
※伝わるかなぁ。。
ちなみにDevOpsを開発と保守に分けたけど当然そのトップ(管理者)も含まれる。
これだけだと前述のとおり、「DevOps=文化」で文化の改変だけ(だけ、と書いたが環境によってはこれがとてつもない壁)なのだが、同時に今はDevOpsを実現するための技術もすでに存在し、それを操れるをDevOpsエンジニアなのではないかと思う。
その一つがクラウドサービスであり、それらが提供するマネージドサービスだったりCI/CDだったり。
また、合わせて利用するツールやソフトウェアもたくさんあり、組み合わせのベストプラクティスのようなものも確立されつつある。(もうされてる?)
結論
DevOpsとは
プロジェクト開発において、ユーザーのフィードバックを迅速にシステムへ反映し、かつ安定稼働させるための文化や考え方。
DevOpsエンジニア
DevOpsを実現するための技術的な取り組みができるエンジニア。
今度はDevOpsエンジニアに必要なスキルについてまとめておこうと思いますがそれはまた今度。
最後まで読んでくれてありがとうございました。