はじめに
ITスクールRareTECHで学習しているゆーせーです。
RareTECHではハッカソンというイベントがあり、私は現在そのハッカソンに参加していて、インフラのポジションを担っています。
初めてインフラをやらせていただいて、わからないことも多く、期間中のほとんどが学習時間だと思います。
その学習している中で今回ピックアップしたのが、「CI/CD」です。正直最初は「なんだそれ?」という感じで、全く理解などできませんでした。しかし「インフラ担当がそんなんでいいのか?」と自問自答をし、1週間かけて勉強しました。(私の理解力がなくかかり過ぎました、、)
長くなりましたが、今回CI/CDを小学6年生にもわかるようにご説明いたします!
CI/CDを「宿題の提出」に例えると…
学校で「毎日ノートに日記を書いて提出」する宿題が出ます。
しかし、この宿題にはルールがあります。
このルールを下記で説明します。
CI(Continuous Integration:継続インテグレーション)
これは「宿題のノートを提出する前に、自動でチェックしてくれる先生がいる」というイメージです。
その流れをご説明します。
1.あなたが日記を書き終わったら、提出箱に入れる(=Gitにプッシュ)
2.自動チェック先生がすぐに間違いを探す(=自動テスト)
・漢字が間違ってないか
・日付がちゃんと入っているか
・字が読めるか
3.間違いがあれば、すぐ「ここ直してね!」と教えてくれる
書いたものをこまめに提出して、間違いをすぐ見つけるという仕組み、
これが「CI」です!
CD(Continuous Delivery/Deployment)
次に「CD」です。
これは「チェックに合格した宿題を先生が自動で先生の机に置いてくれる」イメージです。
・Continuous Delivery(継続的デリバリー)
・チェックに合格したら「いつでも提出できる状態」にしてくれる
・最後に提出するかどうかは自分で決める(=手動デプロイ)
・Continuous Deployment(継続的デプロイ)
・チェックに合格したら自動で提出してくれる(=自動デプロイ)
つまりCDは「合格した宿題を自動で提出する仕組み」
まとめると
・CI=提出前の自動チェック
・CD=合格したら自動提出
・この2つをつなげた流れがCI/CD
上記の流れをWebアプリでの流れに置き換えます。
1.プログラムを書いてGitに保存(提出箱)
2.自動でプログラムのテストが走る(宿題チェック)
3.問題なければ自動でサーバーに反映(提出)
まとめ
CI/CDの説明は以上になりますが、みなさん理解いただけたでしょうか??
インフラCI/CDは、Infrastructure as Code(IaC)が前提となります。インフラをコードで定義することで、バージョン管理、自動化、再現性が可能になります。
私は現在Terraformの学習も行っています。詳しい説明は本記事では控えますが、IaCツールで代表的なツールだと思います。みなさんも興味があれば調べてみてください。
これからもAWSや現在学習しているTerraformの記事を書いていきたいなと考えております。
未経験でまだ未熟な部分や誤った解釈をしてしまってることも多々あると思いますが温かい目で見守っていただけると幸いです。