APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

CI/CDの定義をちゃんと理解する

新年あけましておめでとうございます。2024年もよろしくお願いします。

(このエントリは東京近郊の初日の出の時間にあわせ日本時間の1月1日 6:50に公開)

新年最初の投稿を何で始めようかいろいろ考えたのですが、最初は簡単な内容からはじめたいと思います。

2024年はきっとPlatform EngineeringというキーワードがIT界隈を賑わすでしょう。 Platform Engineeringではこれまでの開発・リリースプロセスを見直すことが多くなると思います。ですから、あらためてプロセスの基本的な部分を押さえることが重要になってくると思います。 そこで2024年の一番最初のテーマはCI/CDの定義についてあらためて見ていきたいと思います。 CI/CDという言葉よく使われれると思いますが、ちゃんと理解できていますでしょうか。特にCDにはContinuous DeliveryとContinuous Deploymentの2種類がありますがそれらの区別ついていますでしょうか。 (とても一般的な用語になっていて簡単なことでもあり、他の人に聞きにくいですよね)

実はちょうどよい内容のリポートを先日読みましたのでそちらの内容をご紹介したいと思います。

learning.oreilly.com

定義

Continuous Integratoin

Continuous Integratonは開発者がマージ(しようと)する変更が適切なものかどうかを確認するものです。 CIのゴールはこうした確認を素早く実行し、コード中の不具合を自動的に発見、開発者に通知することにあります。

Continuous Delivery

Continuous Deliveryはコードの変更をトリガーにCI以降のプロセスを実行するものです。そのプロセスは「ビルド」「テスト」「パッケージ」などデプロイ可能なリリースを作成するための作業を含みます。さらに、付加プロセスとしてさらにContinuous Deploymentプロセスを実行します。

Continuous Deliveryの成果物としては実行可能ファイルやライブラリ、コンテナイメージなどで、こうした成果物は基本的にバージョン管理されます。

Continuous Testinig

Continuous Deliveryのプロセスにおいて行われる自動テスト。複数コンポーネントを組み合わせて実行する結合テストや、受け入れテスト、パフォーマンステスト、ストレステストなどさまざまなテストの実行をContinuous Testingと呼びます。また、テストではないがコードメトリクスの収集なども含みます。

Continous Deployment

Continuous Deliveryで作成された成果物を最終的なユーザーが利用可能な状態にすることをContinuous Deploymentと呼びます。アプリケーションのインストールやWebサイトへの公開などがそれに該当します。 「Blue/Green Deploy」「Canary Deploy」などはContinous Deploymentの手法です。

全体像まとめ

まとめると以下のようなイメージとなると思います。

定義のその先

定義そのものは難しくないと思います。また忘れてしまったらこのブログに戻ってきて頂いて再度確認していただくとよいでしょう、。

それだけ簡単な内容なので、実践も簡単・・・・でしょうか。簡単な部分もありますが、本格的にやろうとすると実は難しいなと思う部分もあるのではないでしょうか。

Continuous Deploymentなどはちゃんとできていますか?Canary Deployってどうですか?

パフォーマンステストやストレステストなどはできていますか? コードメトリクスの収集やそのデータの活用などはできていますか?

こうした「自信がないな」とか「どうするんだろう」というところをまとめて誰もが実現できるようにすることがPlatform Engineeringの一部になってきます。ぜひあらためて定義など簡単な定義からはじめ、それぞれ奥深くまで考えてみてください。

できていること、できていないことが見えてきたらその一部を解決することを2024年の目標にしてみてはいかがでしょうか。