DevOpsとSREの関連性
データ基盤エンジニアであってもDevOpsに対する理解がなければ開発効率や生産性の向上を考えることはできない
どのようなエンジニアであってもDevOpsはある程度理解しておく必要がある
DevOpsについて調べる
DevOps(デブオプス[1])は、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する(さらに両担当者の境目もあいまいにする)開発手法をさす[1]
ソフトウェア開発手法についてwikiを見てみる
ソフトウェア開発方法論(英: software development methodology; SDM)は、ソフトウェア開発に用いられる一連のルール・ガイドライン、またそれを扱うソフトウェア工学の一分野である[1]。システム開発方法論(英: system development methodology)とも。
よく DevOpsは手法 で SREはDevOpsの実装 と言われ、役割について混乱しがちなので、この辺も調べてみる
DevOps とは、高品質かつ迅速なサービス提供によりビジネス価値や対応スピードを向上することを目的とした、企業文化、自動化、およびプラットフォーム設計に対するアプローチです。SRE は DevOps を具体化したものと考えられます。
DevOpsはSREの抽象的な概念で、SREはDevOpsよりも実践レベルの話
レイヤーが違うだけで関係性は有る
企業毎に実装の内容は異なるはずなのでSREの一般論みたいなのはなさそう
ただ共通している部分も有るはずなので、それは必ず抑えておきたい
DevOpsのクラウド活用(クラウドネイティブ化)にはいくつかのフェーズが存在している
-
Retain & Optimize
モノリシックなアプリケーションをウォータフォール開発しているようなサイクル
DevとOpsが切り離されている状態
使用インフラ:DC(データセンター) -
Lift & Shift
アプリケーションの動作環境がIaaS
ただアプリケーション自体はまだモノリシックでDevとOpsには距離が存在している
使用インフラ:DCとクラウド(VM) -
Re-Factor
クラウドのマネージドサービス(RDS etc)やオートスケールを活用してシステムのアーキテクチャの見直しがされる
モジュール化は進んでいるがアプリコンポーネントは相互に依存している状態
使用インフラ:クラウド(VM、コンテナ、k8s) -
Re-Architect / Cloud-Native
クラウドサービスを利用したマイクロサービスアーキテクチャが採用されている
サービスを構築しているモジュールごとに言語やフレームワークが多様化が起きている
使用技術の範囲が広くなっているのでDevとOpsが密接である必要が出ててきている状態
使用インフラ:クラウド(コンテナ、k8s、クラウドサービス)
(国内での話)
10年くらい前からあるIT企業であれば Lift & Shift
状態が多い気がする
中規模のIT企業であれば Re-Factor
状態が多そう
Cloud-Naitive
まで行けているのはサービス規模が小さければ(少ないが)企業としてありそう
ただ少ないメンバーでマイクロサービスを運用するケースを散見することが多い
言語やフレームワークが多様化していくので、基本的には人数が多い状態で運用されることを想定されている
少人数規模でのマイクロサービス導入は返って保守運用コストが高くなるので、導入には慎重になる必要がある