1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CI/CDとは?②メリットや使い方

Posted at

はじめに

前回の記事はこちら↓

CI/CDの概要について学びました。
今回は

  • なぜCI/CDが必要なのか(メリット)
  • 具体的なフロー(どのように仕組みを取り入れるのか?)

をまとめていきます!

前回に引き続き、完全に自分用アウトプットです🙏

ゴール

  • CI/CDがどんな時に役立つのかがイメージできる
  • CI/CDを導入するメリットがわかる
  • CI/CDを使う時の全体像がつかめる

この記事を読み終わったら、自分の開発にCI/CDを取り入れるイメージが持てるのを目指します!

なぜCI/CDが必要なのか?

前回、CI/CDは「自動でテストして品質を守り、テストを通過したらリリースに向けて自動で準備(もしくは自動でリリース)し効率を上げる」仕組みのことだと学びました。

もし、テスト〜リリースまでを人間が行うと、

  • テストのチェックミスにより、プログラムに欠陥があるままリリースしてしまった
  • テストをする人によって品質に差が生まれてしまった
  • リリース作業までの手順書作成やフローで時間と手間がかかる
  • リリース中にミスがあった!

などヒューマンエラーの可能性が大きくなることが考えられます。

一方、CI/CDを使うことによって

  • pushするだけでテストとデプロイが自動化できる!
  • 一定のテスト基準でバグを検知することができ、品質が保たれる
  • 開発スピードが上がって効率的

というメリットが考えられます。

また、参考サイトには下記のようにありました。

ずっと昔のシステムでは、「一度作ったらプログラムは変更しない。」という環境もあったかと思います。その場合、1回しかデプロイ(プログラムを展開する)しないので、別に自動的にリリースする必要はありません。
むしろ、仕組みを作るのが面倒(かもしれない)ので、手作業で頑張ってプログラムをリリースするというのが一般的であったような気がします。

ただ、現状ビジネスを勝ち抜くためには、お客さまや利用者の声を聴いてプログラム(サービス)をアップデートしていく必要があります。そのためには頻繁にリリースを実施していく必要があります。

昔よりも、一つのシステムに関してアップデート(リリース)が必要になったこと、
さらに、社会的にどんどんシステムをリリースしていくようなスピード感についていくためにCI/CDはあった方が良さそうです💡

CI/CDの使い方

では、実際にCI/CDを行う際はどのようなフローになるでしょうか?
参考サイトには下記のようにありました。

方法1:Kubernetes(k8s)+ Jenkinsを利用する
Kubernetes、もしくはそれに準するツール(OpenShift やAWSの場合EKS)+ Jenkinsを利用してCICDを実現する。

方法2:パブリッククラウドの機能を利用する。

この辺りを噛み砕きたく、GPTにも聞いてみたところ初心者向けになったのでまとめてみます🐣

▼方法① 自分で環境を組むパターン(Kubernetes(k8s)+ Jenkinsなど)

  • Kubernetes (クーバネティス)
    コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソースのプラットフォーム(コンテナをまとめて管理・自動でスケールしてくれる仕組み)

  • Jenkins(ジェンキンス)
    定番のCI/CDツール。ジョブ(ビルド・テスト・デプロイの流れ)を自由に組める

🔸メリット

  • 柔軟にカスタマイズ可能
  • 大規模なシステムでよく使われる
  • セットアップや運用はやや難しい

学習コストが高そうですし、パッと始められるものではないようです。

▼方法② クラウドサービスを使うパターン

AWSの例

  • CodePipeline:パイプライン全体を管理
  • CodeBuild:コードのビルドやテスト
  • CodeDeploy:アプリをサーバやECSにデプロイ
  • ECR/ECS(Fargate):コンテナ管理 👈聞いたことがある!

GCPの例

  • Cloud Build, Cloud Deploy

Azureの例

  • Azure DevOps

🔸メリット

  • サービスを取り入れるだけで導入が簡単
  • インフラ運用の負担が少ない
  • クラウドに依存する(ロックインリスクあり)👈このあたりは今後調べます。。

方法③ SaaS(ホスティングCI/CDサービス)を使うパターン

  • GitHub Actions + Vercel
    → フロントエンド開発者に人気。プッシュ → 自動テスト → デプロイまで一気通貫でできる
    (これなら個人でもやってみることができそう…?)

  • GitLab CI/CD
    → GitLabに組み込み済み。リポジトリとセットで便利

  • CircleCI, TravisCI, Render, Heroku
    → 専用サービスを契約して手軽にCI/CD環境を持てる

🔸メリット

  • 設定がシンプルで学習コストが低い
  • 個人開発〜中小規模のチームに向いてる
  • 高度なカスタマイズはしにくい

まとめ

ここまで調べたりGPTの回答を読んで、「CI/CDって聞くと難しいイメージだったけど、案件の中のアレか!」と腹落ちしました。

Githubなら自分でも導入できそうなので、今度仕組みを作ってみたいと思います。
その際も記事にします!!

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?