こんばんは!
もう明日はクリスマスイブだなんて、ほんとに日が経つのは早いっすね、、、。
てなわけで今日はCI/CDについてまとめたいと思います!
CI/CDとは
CI/CDとはソフトウェア開発ツールの中の一つです。
それぞれの単語の意味は下記のようになっています。
CI 「Continuous Integration」継続的インテグレーション(統合)
CD 「Continuous Delivery」継続的デリバリー(配布)
以前Gitの話をした際に出てきたことですが、企業がサービスを開発する場合、複数のエンジニアが同時に開発したソースを開発、本番と言う環境へ反映していくことでサービスがアップデートされていきます。
反映させることをマージ(取り混ぜる)、再構築することをビルド(構築)、そして検証をテスト、お客さんが使用できるようにすることをデプロイと呼びます。
このような作業は手動で行っても良いのですが、自動化できれば非常に時短になり、開発に集中することができますよね。
そこで登場するのがCI/CDツールです。
上記のような一連の作業を自動化してくれます。
またこのようなツールがあることで、開発のプロセスを細分化し、少しづつ作っては確かめるアジャイル開発と言う方法がメジャーになりました。
逆に最初から全体を設計し、綿密な計画に沿って進める方法をウォーターフォールモデルと呼んだりします。
(滝のように上から下へ水が落下するイメージです。)
それぞれメリットデメリットはあるんですが、個人的には軌道修正や、間違いに気づきやすそうなアジャイル開発の方が性に合ってそうな気がします。
エンジニア界隈でも今はアジャイル開発が主流のようですね。
そんなCI/CDツールもいろんな種類があるので少し紹介します。
大きく分けてオンプレミス型とクラウド型があります。
オンプレミス型は自社で物理的に所持すること。
クラウド型はインターネット上に所持すること。でしたね。
オンプレミス型には「Jenkins」というダンディなおっちゃんのソフトがあります。

こちらの特徴はCI/CDを実現でき、かつオープンソースです。(なので物理的に所持するのはサーバー)
オンプレミス型なので、カスタムしやすいことも挙げられますね。
クラウド型にはサムネにもあげた「CircleCI」というSaaS型のサービスがあります。
SaaSはSoftware as a Serviceつまり、サービスをソフトウェアとして配信しています。
そのため無料枠もありますが、一定以上は従量課金性になります。
その分クラウド型のため、準備に手間がかからず、冗長化もされています。
どちらを採用するかと言うのは会社によって異なると思いますが、昔は物理的なサーバーを立てるしかなかったものが、AWSやGCPのようなクラウドのサービスが主流になりつつあるイメージですね。
てなわけで今日はCI/CDの話でした〜
機会があればJenkinsとかCircleCIについて、もっと深堀りしてみたい。
2020.12.23 ガオ
コメント