インターネット企業には重要な職種が一つあり、「運用」と呼ばれている。

「運用」の英語はOperationsで、Opsと略される。直訳すると「操作」となり、様々なサーバーの操作を指す。
簡単に言えば、運用エンジニアとはサーバーを管理し、コードの実行環境を確保する人である。
これは非常に重要な仕事であり、企業は十分に重視すべきだ。しかし実際にはここ数年、運用職は常に縮小傾向にあり、OpsエンジニアはDevOpsエンジニアへの転換を求められている。私の知る限り、多くの運用エンジニアは実際に悩んでいる。
このような変化をどう見るべきか?運用には将来性があるのか?将来どうなっていくのか?

最近、外国人の記事を読んだ。タイトルは『運用の未来はプラットフォームエンジニアリング』だった。
「Opsの未来はプラットフォームエンジニアリングだ」

著者はこれらの質問に体系的に答え、運用が最終的に消滅し、新しい職種「プラットフォームエンジニアリング(platform engineering)」へと発展すると考えています
彼の記事はとても示唆に富んでおり、私の運用に対する見解が明確になりました。皆さんと共有させていただきます
一、運用の由来
最初の頃、運用は存在せず、プログラマーがソフトウェアの作成と実行の両方を担当していました
しかし、ソフトウェアの作成と実行は実質的に二つの異なるスキルです:前者はコードに精通する必要があり、後者はサーバーに精通する必要があります
インターネットソフトウェアが発展するにつれて、これらの二つのスキルは徐々に分離していきました
開発エンジニアがコードを作成し、運用エンジニアがコードを実行する責任(すなわちサーバー実行環境の確保)を負います
二、運用の衰退
証明されたように、開発と運用の分離は大きな誤りだった。
コードを書く人々がサーバー環境を理解していないし、サーバーを管理する人がコードが何をしているかを理解していない。これでは優れた製品を作り出すことが難しくなり、問題の特定も困難になる。
したがって、一部の会社では開発と運用を再び統合しようとしている:ソフトウェアを書く人々もソフトウェアの運用を担当する。
これが DevOps の由来であり、Dev(開発)+ Ops(運用)の合体である。

一方で、インターネット会社の核心的な資産と競争力は、よりコードの方が運用よりも多い。そのため、会社は開発にさらに力を入れる意向があり、専門的な運用チームを段階的に縮小し、可能な限りインフラを外部委託する。
これらの要因が決定づけたように、運用は独立した職種として徐々に消えていく。
3. DevOps の問題
しかし、DevOps は実際には運用を置き換えることはできません
業務がますます複雑になるにつれ、システムとインフラストラクチャも複雑になり、同時に安定性と信頼性も求められます
通常の開発エンジニアはこれを実現する能力がありません。彼らはすべてのインフラストラクチャを理解しておらず、専門的な運用レベルのシステム管理には至りません
このような状況では、会社は外部委託を選択し、外部のクラウドサービスを購入しインフラストラクチャを専門的なクラウドサービスプロバイダーに委託し自社のコストを最大限に削減します
4. 運用の責任
全体として、運用はサーバーを管理することですが、二つの側面の責任に細分化できます:基盤の構築 + 実行環境の管理
「基盤インフラの構築」はハードウェアの調達、設置、棚卸し、ネットワーク接続といった作業を指します。
「運用環境の管理」は業務ソフトウェアの動作を保障することを指します。
DevOpsが登場した後、「基盤インフラの構築」这一つの責任は次第に消え、クラウドサービスの調達に変わりました。「運用環境の管理」这一つの責任はDevOpsエンジニアに移されました。
そうして、新しい問題が現れました:誰がクラウドサービスの調達と統合を担当するのか?
五、プラットフォームエンジニアリングとは何か
適切なクラウドサービスを調達することは簡単なことではありません。
クラウドサービスは多岐にわたります。さまざまなAPI、SDK、付属ツールが目まぐるしく、経験豊富な運用エンジニアでさえ明確に説明することが難しいです。
そのため、正しい意思決定を行い、必要に応じたクラウドサービスを選択し、さらにすべての調達したクラウドサービスを統合して業務開発に供するための専任のスタッフが必要です。
この役割はプラットフォームエンジニアリングと呼ばれ、様々なクラウドサービスを評価・調達・統合し、それを自身のインフラストラクチャとして利用し、外部のクラウドサービスを基に自身のプラットフォームを構築し、開発エンジニアがそれを通じて自己サービスを提供し、自身のコードを本番投入できるようにします。
上記の定義にはいくつかのポイントがあります。
(1)インフラストラクチャは外部委託されることで、コストと開発期間を最小限に抑える。
(2)プラットフォームエンジニアは外部委託されたインフラストラクチャを統合し、プラットフォームを構築する。
(3)開発エンジニアはこのプラットフォーム上で、自己の環境を構築・管理し、自身のコードを実行する。
六、プラットフォームエンジニアリングと運用の違い
プラットフォームエンジニアリングと運用には、いくつかの顕著な違いがあります。
(1)プラットフォームエンジニアリングはソフトウェアの開発が必要で、テストの作成やコードレビューを含み、チームの運営は開発チームに似ており、プロダクトマネージャー、デザイナー、フロントエンドエンジニアがいる。
運用は通常アプリケーションソフトウェアの開発はしない、最大限に自動化スクリプトを書くだけである。
以前は、あるエンジニアはコードを書き、別のエンジニアはコードを実行していた。今後は、すべてのエンジニアがコードを書き、自分のコードを実行し、開発エンジニア、DevOpsエンジニア、プラットフォームエンジニアであれ、違いは層や機能に基づく責任範囲が異なることである。
(2)プラットフォームエンジニアリングはクラウドネイティブで、すべての作業はクラウド上にある。
運用はクラウドネイティブではない、ハードウェアを自分で管理する必要があり、クラウドをサポートしているだけと言える。
(3)プラットフォームエンジニアリングはクラウドサービスを購入し、運用はハードウェアを購入する。
七、運用エンジニアのキャリアパス
従来の運用役が消滅する中で、現在の運用エンジニアは必然的に転身を迫られる。選択肢は主に三つある。
(1)業務ソフトウェアの開発に興味があるなら、DevOpsエンジニアになることができる。
(2)プラットフォームソフトウェアの開発に興味があるなら、プラットフォームエンジニアとして、インフラストラクチャの統合に専念できる。
(3)ハードウェアや低レベルに興味があるなら、「インフラストラクチャ即サービス」(IaaS)のクラウド企業に加わり、インフラストラクチャの研究に没頭できる。
(完)












