新機能を「早く」出したい開発と、システムを「安定して」回したい運用。仲が悪くなりがちなこの二人を、文化とツールの力で手を組ませるのがDevOpsです。CI/CD・IaC・コンテナまで、開発技術分野の頻出ワードをまとめて整理しましょう。
今日は「DevOps」よ。
まず想像してね。
新しい料理を毎週出したいシェフと、お店を毎日きちんと開け続けたい店長。
二人がケンカしてたら、お店はどうなるかしら?
そりゃ回らないじゃん。
新メニュー出すたびに店長が『勝手なことすんな!』ってキレそう。
ふふ、それが昔のIT現場なの。
新機能を早く出したい開発チームと、止めずに安定運用したい運用チームが対立してたのよ。
その対立を協力関係に変える考え方がDevOpsですね。
Development と Operations をつなげた造語です。
へぇ〜。
じゃあ何か新しいツールの名前、ってわけじゃないんですねぇ?
そこ大事です。
DevOpsはソフトではなく文化・手法の総称。
それを4語で覚えるのがCAMS、文化・自動化・測定・共有です。
カムス…カムス…よし覚えた。
で、具体的には何を自動化すんの?
中核がCIとCD、あわせてCI/CDです。
シーアイとシーディー…似てて混ざっちゃいますぅ。
違いって何なのぉ?
CIは『コードをこまめに合流させてすぐ自動テスト』まで。
CDはその先、『いつでもリリースできる形まで自動で運ぶ』ところ。
CIがバトンの受け渡し、CDがゴールまでの走り、ってイメージね。
補足すると、CDは2種類。
人が最終ボタンを押すのが継続的デリバリー、本番反映まで完全自動なのが継続的デプロイメント。
同じ『CD』でも到達点が違うんです。
そしてコードをリポジトリにpushすると、自動でビルド→テスト→デプロイ。
この一連の流れをパイプラインと呼ぶのよ。
なるほど、自動テストが番人なんだ。
バグったコードはテストで止められて先に進めない、と。
マジで便利じゃん。
ツールも頻出です。
Jenkins・GitHub Actions・GitLab CI/CD・CircleCIあたりを押さえましょう。
自動化はアプリだけじゃないわ。
サーバやネットワークの設定までコードで書いて管理するIaCも重要。
Terraformなどが代表ね。
設定をコードに?
手で一個ずつ作らなくていいってことですかぁ?
そうです。
手作業だと人によって設定がブレますが、コードなら同じ環境を何度でも正確に再現できます。
Gitで履歴も残り、元に戻すのも簡単なんですね。
その『環境ごと持ち運ぶ』を実現するのがコンテナよ。
代表がDockerね。
Docker、エンジニアがよく言ってるやつだ!
お弁当箱にアプリと環境を詰めて、どこで開けても同じ、みたいな?
うまい例えです。
弁当箱が増えると管理が大変なので、Kubernetesでまとめて自動管理します。
読みは『クーベネティス』、k8sと略します。
クバネ…ティス…名前むずかしいですぅ。
でも持ち運べるって便利なのぉ。
じゃあ整理ね。
DevOpsは開発と運用の協力文化、中核はCI/CDの自動パイプライン。
設定はIaCでコード化し、コンテナとKubernetesで持ち運ぶ。
合言葉は『カムス』。
発展でDevSecOps(セキュリティ込み)とGitOps(Gitを正とする運用)も名前だけ覚えておくと安心よ。
開発と運用、仲直り大作戦ね。
覚えやすっ!
確認クイズ
開発チームと運用チームが協力する文化を重視し、継続的な統合・デプロイの自動化によってリリースを素早く繰り返す考え方はどれか。
- ウォーターフォールモデル
- DevOps
- ERP
- SOA
こたえを見る
正解: 2. DevOps
DevOpsは Development と Operations を合わせた考え方で、両チームの協業文化とCI/CD・IaC・コンテナによる自動化が柱です。ウォーターフォールモデルは工程を順に進める開発手法で協業の自動化を指しません。ERPは企業資源を統合管理する仕組み、SOAはサービス単位でシステムを組む設計思想で、いずれも開発と運用の協業文化とは別物です。