CI/CDについて


📌 CI/CDとは?
  • アプリケーション開発フェーズから導入フェーズまで、すべてのフェーズを自動化することで、ユーザーはより短いサイクル、より効率的、より迅速な方法でお客様に提供できます.
  • CI/CD優勢
  • 発売時間短縮
  • リスクを低減
  • 審査時間
  • を短縮
  • コード品質改善
  • シームレスに生産環境
  • に移行する.
  • より高速なエラー修正
  • 効率的なインフラストラクチャ
  • 進捗評価可能
  • より緊密なフィードバックループ
  • コラボレーションおよび通信
  • 📌 CI:継続的な統合
  • アプリケーションのエラー修正または新しいコード変更は、定期的にプライマリ・リポジトリで構築およびテストおよびマージ(merge)されます.
  • CIには2つのポイントがあります

  • コード変更を定期的に頻繁にマージします.
  • 人以上の開発者がプロジェクトを行い、ジオメトリ管理ツール(Git、svnなど)を使用していると仮定します.
  • 複数の開発者がコード変更を頻繁にマージしたくない場合、それぞれの長時間の変更を一度にマージしたい場合は、マージと適用が困難です.
  • 競合するコードが発生する確率が高く、新しい機能を記述するコードに比べて競合するコードを修正するのに多くの時間がかかるため、効率が低下する可能性があります.
  • なので、できるだけ小さい単位で区分し、定期的に、頻繁に開発し、統合を継続することが重要です.
  • 👉 CI 흐름
    1. 코드 변경 사항을 계속해서 github 등 관리 시스템에 통합한다.
    2. 통한한 코드가 제대로 동작하는지 build, test를 진행한다.
    3. 버그 등 문제 발생 시 다음에 처리할 목록에 정리하고 해결한다.

  • 統合手順の自動化(構築、テスト、マージ)
  • の上のステップでは、構築およびテストのプロセスは必ずしも人によって完了されなければならないとは限らない.
  • 周期的に結合されたコードの変更は、コードの変更後も構築が成功していることを確認するために自動的に生成されます.
  • はまた、新しく追加されたコードの変更を自動的にテストし、既存のシステムに他のエラーが発生したかどうかをテストする必要があります.
  • 通常、
  • の開発チームでは、開発者は毎日定期的にコードレビューを通じて変更が適切かどうかを確認し、統合します.
  • mergeの場合、チームが作成したCIスクリプトによって自動的に追加されたコードによって構築され、チームが作成したUnitテストなどの各種テストもスクリプトによって実行されます.
    -green:安全に通過し、後で導入するときに反映できます.
    -red:問題を起こした開発者に自動的に通知します.
  • 👉 장점
    
    ✔ 개발 편의성이 증가한다.
    
    ✔ 주기적으로 merge를 하기 때문에 충돌을 피할 수 있어 개발의 생산성을 높일 수 있다.
    
    ✔ 모든 코드들은 자동으로 build되고 test 되기 때문에 코드의 결함이나 문제점이 빠르게 발견될 수 있다.
    
    ✔ 주기적으로 merge를 하기에 코드 변경 사항이 빈번하기 때문에 문제를 수정할 때도
    좀 더 고립된, 작은 단위의 문제를 확인할 수 있다.
    
    ✔ 코드 검증에 들어가는 시간이 줄어든다.
    
    ✔ 항상 테스트 코드를 통과한 코드만이 repository에 올라가기 때문에 좋은 코드 퀄리티를 유지할 수 있다.
    📌 CD:継続的な提供/導入
  • CDは、継続的な配信と継続的な導入を意味します.
    ✔CIで作成およびテストした後、導入フェーズでpreparereleaseと最終導入の自動化選択に従って区分します.

  • 継続的な提供
  • リリースの準備フェーズを経て、開発者と検証チームは、問題と修正が必要な事項があるかどうかを検証します.
  • ユーザに配布できるという結論が得られた場合、受動的に配布することを指す.
  • 簡単なコード変更は、定期的にプライマリノードにコミットされ、自動化された構築およびテストプロセスを経て、さまざまなプリプロダクション環境にアップグレードされ、問題が見つからない場合に最終的に導入されます.

  • 継続的な導入
  • の導入フェーズでは、導入の準備が整うと自動化され、継続的な導入と呼ばれます.
  • コードの変更がパイプラインのすべての前のステップを正常に通過した場合、手動で介入しない場合、これらの変更は自動的に本番に配布されます.
  • の継続的な導入により、品質を低下させることなく、できるだけ早くユーザーに新しい機能を提供できます.
  • 👉 CD 흐름
    
    ✔ CI를 적용하여 코드를 검증한다.
    
    ✔ 배포 환경과 비슷한 곳에서 검증을 진행한다.
    
    ✔ 검증된 소프트웨어를 실제 프로덕션 환경으로 배포한다.
    📌 の最後の部分
    👉 CI/CDの自動化の度合いは異なり、同じではなく、チームや会社ごとに異なります.

  • CI/CDパイプライン


  • CI/CD自動化ツール


  • reference!
    https://www.redhat.com/ko/topics/devops/what-is-ci-cd
    https://seosh817.tistory.com/104
    CI/CD 5分コンセプトまとめ(EllyのDREAMコード)