今日は珍しく自分がメインでやっている仕事について書いてみたいと思います。
現在は業務委託ですが、会社でのポジション名は相変わらずSRE(Site Reliability Engineer)です。
社内では「DevOpsを推進していこう」といった文脈でDevOpsという言葉もよく使っています。
しかし、これらの言葉の定義ってなんでしょう?
自分の認識を整理するためにも、記事にしてみようと思います。
SRE
SREの正確な定義はここに示されています。
SRE is what you get when you treat operations as if it’s a software problem.
私は、SREとは、「ソフトウェア・エンジニアに運用を依頼したときに出来上がるもの」だと思っています。
正確に記憶していないですが、SRE本に示されているものと、ほぼ同様だと思っています。
また、翻訳によるブレは若干あるもの、定義と認識には差がないと思っています。
コードを書けない、何らかの自動化によって増え続けるトイルを撲滅するのは難しいので、SREはソフトウェアを作れる人が運用をやることで実現されるものだと思います。
DevOps
では、DevOpsってなんでしょう?
正直なことを言うと、これを語るのには自信がないです。
正確な定義を探していたら、随分時間がかかってしまいました。
WikipediaのDevOpsの項目にはこうあります。
Most often, DevOps is characterized by key principles: shared ownership, workflow automation, and rapid feedback.
「 多くの場合、DevOpsは、所有権の共有、ワークフローの自動化、迅速なフィードバックという主要な原則によって特徴付けられます。」
定義はこれだ、と書かれている訳ではなさそうです。
DevOps as "a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality".
「DevOpsとは、「高い品質を確保しながら、システムへの変更をコミットしてから変更が通常の生産に入るまでの時間を短縮することを意図した一連のプラクティス」である。」
新し目な定義としてはこういったものも提案されているようです。
更に調べていると、Matt Klein氏の記事で定義は様々であると語られていました。
記事中にあるKlein氏の定義はWikipediaのものより、しっくりきますね。
DevOps is the practice of developers being responsible for operating their services in production, 24/7.
翻訳すると、「DevOpsとは、開発者が本番でのサービス運用に責任を持ち、24時間365日体制で運用することです。」といったところでしょうか。
私は「開発者が運用をやること」とか「開発者と運用者が垣根を超えて協力してやっていくこと」程度の説明しか思い浮かばなかったですが、それにもう少し肉付けして具体性が増した良い表現ですね。
まとめ
まとまりはないのですが、定義と自分の認識のすり合わせをしてみました。
結論はないです、おわり。
次回はCloud Native, AIOps, NoOpsあたりについて記事にしてみようと思います。