ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CI/CD(Continuous Integration/Continuous Deployment)
    CS 2024. 6. 2. 12:44

    소프트웨어 개발은 끊임없이 변화하고 있으며, 효율성과 품질을 동시에 높이는 것을 가장 중요시 여긴다.

    개발 팀은 코드 변경, 테스트, 배포 등 다양한 작업을 빠르고 효율적으로 수행해야 하며, 동시에 높은 품질을 유지해야 하는데, 이러한 개발 팀의 코드 변화를 신속하고 안정적으로 배포할 수 있게 도와주는 핵심적인 솔루션이 바로 CI/CD이다.

     

    CI/CD는 개발, 테스트, 배포 과정을 자동화하여 개발 속도를 높이고 품질을 향상시키는 데 도움을 준다.

    그렇다면 CI/CD가 무엇인지 자세히 알아보도록 하자.

     

    CI/CD란?

    CI(Continuous Integration, 지속적 통합)

    개발자들의 새로운 코드의 변경 사항을 정기적으로 빌드 및 테스트 되어 git과 같은 외부 저장소에 통합하는 것을 의미한다.

     

    CI를 통해 코드 변경 사항을 신속하게 통합하고 자동으로 빌드 및 테스트하여 문제를 조기에 발견할 수 있다.

    이런 CI의 핵심 요소는 다음과 같다.

     

    1. 버전 관리 시스템(VCS) 사용: 모든 코드의 변경 사항은 git과 같은 버전 관리 시스템을 통해 관리된다.
    2. 자동화된 빌드: 코드가 저장소에 병합될 때마다 자동으로 빌드가 수행된다.
    3. 자동화된 테스트: 빌드 과정에서 단위 테스트와 통합 테스트가 자동으로 실행되어 코드 품질을 보장한다.
    4. 신속한 피드백: 빌드 및 테스트 결과가 개발자에게 신속히 전달되어 문제를 조기에 수정할 수 있다.

     

    CD(Continuous Deployment/Continuous Delivery, 지속적 배포/전달)

    CI의 연장선에서 빌드된 코드를 자동으로 배포하는 과정이다.

     

    CD는 배포 과정을 자동화함으로써 배포 시간을 단축하고, 배포 오류를 방지하는 데 도움을 준다.

     

    1. 지속적 전달(Continuous Delivery)
      모든 변경 사항이 자동화된 테스트를 통과한 후, 수동 승인 단계를 거쳐 프로덕션 환경에 배포된다.
      수동 승인 없이 배포가 이루어지기에 완전한 자동화를 실현한다.
    2. 지속적 배포(Continuous Deploymen)
      모든 변경 사항이 자동화된 테스트를 통과하면 자동으로 프로덕션 환경에 배포된다.
      수동 승인 없이 배포가 이루어지기에 완전한 자동화를 실현한다.

    왜 필요한가?

    CI/CD가 왜 필요한가 묻는다면, 한마디로 속도와 효율을 위해서이다.

    개발 팀은 끊임 없이 진화하고 있는 개발 환경을 고려할 때, 시장 변화 및 고객 요구에 신속하고 유연하게 대응할 수 있는 개발 안을 구축해야 하는데, 이를 위한 핵심적인 솔루션인 Agile 문화와 DevOps의 한 부분으로 CI/CD 개념이 출현한 것이다.

     

    주로 많이 사용되는 CI/CD 도구 5가지

    Jenkins

    • 특징: 오픈 소스 CI/CD 도구로, 플러그인 생태계가 매우 풍부하여 다양한 개발 환경과 통합 가능
    • 장점: 높은 커스터마이징 가능성, 광범위한 커뮤니티 지원
    • 단점: 설정과 유지보수가 복잡할 수 있으며, 리소스 소모가 큼

     

    GitLab

    • 특징: GitLab에 통합된 CI/CD 기능으로, GitLab 리포지토리와 밀접하게 연동
    • 장점: 설정이 간편하고, GitLab과 완벽하게 통합되어 소스 코드 관리와 CI/CD를 한 곳에서 관리 가능
    • 단점: GitLab 자체를 사용하는 것이 필수적이며, 기능이 풍부하지만 모든 기능을 학습하는 데 소요되는 시간 발생

     

    circleci

    • 특징: 클라우드 기반 CI/CD 서비스로, 간단한 설정과 빠른 빌드 성능 제공
    • 장점: 설정이 간편하고, 다양한 언어와 플랫폼을 지원 및 클라우드 서비스로서 인프라 관리 불필요
    • 단점: 무료 플랜의 한계가 있으며, 복잡한 워크플로우 구성 시 추가 비용 발생 가능성

     

    Bamboo

     

    • 특징: Atlassian에서 제공하는 CI/CD 도구로, Jira 및 Bitbucket과의 통합이 강력
    • 장점: Atlassian 생태계와의 깊은 통합, 강력한 빌드와 배포 기능
    • 단점: 유료 도구로, 비용이 발생하며 설정과 유지보수가 복잡할 수 있음

     

    Travis CI

    • 특징: 오픈 소스 프로젝트에 널리 사용되는 클라우드 기반 CI 서비스로, GitHub 리포지토리와 쉽게 통합
    • 장점: 설정이 간편하고, GitHub와의 통합이 매우 뛰어남
    • 단점: 무료 플랜의 한계가 있으며, 일부 고급 기능이 제한될 수 있음

     

    CI/CD의 이점

    CI/CD를 도입함으로써 얻을 수 있는 이점들은 다음과 같다.

    1. 신속한 배포 주기: 코드 변경 사항이 빠르게 배포되어 사용자에게 신속하게 전달
    2. 높은 코드 품질: 자동화된 테스트를 통해 코드 품질을 지속적으로 유지하고 개선 가능
    3. 개발 효율성 향상: 반복적인 작업이 자동화되어 개발자는 핵심 기능 개발에 집중 가능
    4. 문제 조기 발견: 작은 단위로 자주 통합하고 테스트함으로써 문제를 조기에 발견하고 해결 가능

    결론

    CI/CD는 현재 소프트웨어 개발 시장에서 필수적인 도구로 자리잡고 있다.

    각각의 CI/CD 도구들은 고유한 장점과 단점을 가지고 있으므로, 각 개발 팀의 요구사항과 환경에 맞는 도구를 선택하는 것이 중요하다. 사용의 용이성, 커스터마이징 가능성, 지원 언어 및 플랫폼, 커뮤니티 지원 등을 고려하여 가장 적합한 도구를 선정하도록 하자.

     

    CI/CD를 통해 지속적인 통합과 지속적인 배포를 통해 개발 프로세스를 자동화하고, 품질을 향상시키며, 배포 주기를 단축할 수 있기에, 이러한 이점들을 활용하여 더욱 효율적이고 안정적인 소프트웨어를 고객에게 제공할 수 있다.

    'CS' 카테고리의 다른 글

    HTTP/HTTPS?  (0) 2024.06.19
    GitHub Actions  (1) 2024.06.02
    Docker?  (0) 2024.05.30
    인증과 인가  (0) 2024.05.12
    JWT(JSON Web Token)?  (0) 2024.05.11
Designed by Tistory.