본문으로 건너뛰기
  1. Posts/

CI/CD의 개념과 필요성 이해하기

·505 단어수·3 분· loading · loading · ·
DevOps CI/CD DevOps CI/CD
목차
CI/CD - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)는 현대적인 소프트웨어 개발 프로세스의 핵심 요소입니다. 이 블로그에서는 CI/CD의 개념을 살펴보고, 각 단계를 Mermaid 다이어그램으로 시각화하여 설명한 후, 설치형과 외부 서비스형 CI/CD 서비스의 장단점을 비교해 보겠습니다. 또한, CI/CD가 없는 환경과 있는 환경을 비교하여 CI/CD의 필요성을 강조하겠습니다.

CI/CD의 개념
#

지속적 통합(CI) 은 개발자들이 코드 변경사항을 중앙 리포지토리에 정기적으로 병합(merge)하는 것을 의미합니다. 이 과정은 코드 품질을 유지하고, 버그를 신속하게 발견하며, 소프트웨어 개발의 효율성을 높이는 데 목적이 있습니다.

지속적 배포(CD) 는 자동화된 테스트를 통과한 코드를 자동으로 프로덕션 환경에 배포하는 과정을 말합니다. CD는 두 가지 유형으로 나뉩니다: 지속적 전달(Continuous Delivery), 여기서는 배포 준비가 완료된 코드를 수동으로 배포합니다; 지속적 배포(Continuous Deployment), 여기서는 모든 변경 사항이 자동으로 프로덕션에 배포됩니다.

CI/CD 프로세스 시각화
#

아래의 Mermaid 다이어그램은 일반적인 CI/CD 파이프라인의 각 단계를 나타냅니다:

graph LR;
    A[코드 커밋] -->|자동 트리거| B[자동 빌드];
    B -->|자동 트리거| C[자동 테스트];
    C --> D{테스트 성공?};
    D -- 예 --> E[자동 프로덕션 배포];
    D -- 아니오 --> F[버그 수정];
    E --> G[자동 모니터링 및 피드백];
    F --> B;
  1. 코드 커밋: 개발자가 소스 코드 변경사항을 리포지토리에 커밋합니다.
  2. 빌드: 시스템이 최신 코드를 받아와서 빌드합니다.
  3. 테스트 실행: 자동화된 테스트를 실행하여 코드의 안정성을 검증합니다.
  4. 테스트 성공?: 모든 테스트가 성공했는지 확인합니다. 실패한 경우, 버그를 수정하는 과정으로 돌아갑니다.
  5. 프로덕션 배포: 테스트를 통과한 코드를 프로덕션 환경에 배포합니다.
  6. 모니터링 및 피드백: 배포된 애플리케이션의 성능을 모니터링하고 피드백을 수집합니다.

CI/CD가 없을 때와 있을 때의 비교
#

CI/CD가 없을 때의 전통적인 개발 프로세스는 다음과 같습니다:

graph LR;
    A[코드 커밋] --> B[수동 빌드 및 테스트];
    B --> C{테스트 성공?};
    C -- 예 --> D[수동 배포 준비];
    C -- 아니오 --> E[버그 수정];
    D --> F[수동 프로덕션 배포];
    E --> B;
    F --> G[수동 모니터링 및 피드백];

이 접근법은 시간이 많이 소요되고 오류의 가능성이 높으며, 전체 프로세스가 느리고 비효율적입니다. 반면, CI/CD를 도입하면 모든 단계가 자동화되어 개발 사이클이 빨라지고, 버그 수정이 신속해지며, 소프트웨어 품질이 향상됩니다.

설치형 VS 외부 서비스형 CI/CD 서비스
#

CI/CD 서비스는 크게 두 가지 유형으로 나눌 수 있습니다: 설치형(On-premise)외부 서비스형(SaaS).

설치형 CI/CD 서비스
#

설치형 CI/CD 서비스는 자체 서버에 직접 설치하여 운영하는 방식입니다.

장점:

  • 보안: 민감한 데이터를 외부에 노출하지 않고 내부 네트워크에서 모든 것을 관리할 수 있습니다.
  • 제어: 서버와 소프트웨어에 대한 완전한 제어권을 갖게 됩니다.
  • 맞춤 설정: 특정 요구 사항에 맞게 시스템을 맞춤 설정할 수 있습니다.

단점:

  • 유지 관리: 하드웨어와 소프트웨어 모두를 직접 관리해야 합니다.
  • 비용: 초기 설치 비용과 유지 보수 비용이 발생합니다.
  • 복잡성: 설정과 운영이 복잡할 수 있습니다.

외부 서비스형 CI/CD 서비스
#

외부 서비스형 CI/CD 서비스는 클라우드 기반의 서비스로, SaaS 모델을 따릅니다.

장점:

  • 쉬운 설정: 빠르고 간편한 설정이 가능합니다.
  • 저비용: 하드웨어 비용이 없고, 일반적으로 유지 관리 비용이 낮습니다.
  • 확장성: 필요에 따라 리소스를 쉽게 확장하거나 축소할 수 있습니다.

단점:

  • 보안: 데이터가 외부 서버에 저장되므로 보안이 우려될 수 있습니다.
  • 제한된 제어: 외부 서비스의 경우, 시스템에 대한 제어가 제한될 수 있습니다.
  • 종속성: 서비스 제공업체의 정책과 가용성에 의존하게 됩니다.

결론
#

CI/CD는 소프트웨어 개발의 효율성을 크게 향상시키는 동시에 제품의 품질을 유지하는 데 필수적인 프로세스입니다. CI/CD의 도입은 빠른 피드백 루프와 더 빠른 마켓 진입을 가능하게 하며, 개발자의 생산성을 크게 향상시킵니다. 당신의 팀과 프로젝트에 가장 적합한 CI/CD 솔루션을 선택하는 것은 여러 요소를 고려해야 하며, 이 글이 그 결정을 내리는데 도움이 되기를 바랍니다.

CI/CD - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

관련 글

Jenkins Dood 설정하기
·269 단어수·2 분· loading · loading
CI/CD Jenkins Docker