DevOps BootCamp/CI, CD 파이프라인

지속적 통합

cloudmaster 2023. 4. 20. 12:29
지속적 통합이 있기 전에는 어떻게 릴리스를 만들었을까요?
 

지속적 통합 (Continuous Integration, CI)가 보편화되기 전에는 수동으로 릴리스를 만들었습니다. 릴리스를 만들기 위해서는 개발자들이 작성한 코드를 컴파일하고, 테스트하고, 패키징하는 과정이 필요합니다. 이러한 과정은 수작업으로 수행되었으며, 매우 번거로운 작업이었습니다.

예를 들어, 개발자가 새로운 코드를 작성하면, 이 코드는 개발 환경에서 테스트되어야 합니다. 그리고 이 코드는 버전 관리 시스템 (예: Git)을 사용하여 릴리스 브랜치에 병합되어야 합니다. 이후, 릴리스 브랜치에서 코드를 빌드하고, 패키징하여 배포 가능한 형태로 만들어야 합니다.

이러한 릴리스 과정에서 발생하는 문제들은 수작업으로 해결하기가 매우 어려웠습니다. 코드 충돌, 빌드 오류, 패키징 오류 등이 발생하면, 문제를 해결하기 위해 많은 시간과 노력이 필요했습니다. 이러한 문제를 해결하기 위해 CI가 등장하게 되었고, 이후로는 릴리스 과정이 자동화되어, 개발자들은 더욱 빠르고 안정적인 방식으로 애플리케이션을 릴리스할 수 있게 되었습니다.

 
 
지속적 통합을 도입함으로써 기존의 개발 방식의 어떠한 문제를 해결해 주었을까요?
 
  1. 더 높은 코드 품질: CI를 사용하면 개발자가 작성한 코드를 자동으로 빌드하고 테스트하므로 코드의 품질을 더욱 향상시킬 수 있습니다. 이는 코드 오류를 신속하게 파악하고, 수정하여 코드의 안정성과 신뢰성을 높이는 데 도움이 됩니다.
  2. 더 짧은 릴리스 사이클: CI를 사용하면 코드 변경 사항이 버전 관리 시스템에 통합되면 자동으로 빌드 및 테스트되므로 릴리스 사이클이 더 짧아집니다. 이는 개발자가 빠르게 피드백을 받아 변경 사항을 더욱 빠르게 적용할 수 있게 해줍니다.
  3. 작업 병렬화: CI를 사용하면 여러 작업을 병렬로 실행할 수 있으므로, 개발자들은 더욱 효율적으로 작업을 수행할 수 있습니다. 또한, 작업을 자동화하기 때문에 개발자들은 더 많은 시간을 실제 개발 작업에 집중할 수 있습니다.
  4. 더 높은 협업 수준: CI를 사용하면 팀원들이 자신이 변경한 코드가 다른 팀원들의 코드와 어떻게 상호작용하는지 더욱 쉽게 파악할 수 있습니다. 이는 팀원 간 협업 수준을 높여, 코드의 품질을 높이는 데 도움이 됩니다.
  5. 더 높은 안정성: CI를 사용하면 코드 변경 사항이 배포되기 전에 자동으로 빌드 및 테스트되므로 배포 전에 코드 오류를 발견할 수 있습니다. 이는 배포 후 잠재적인 문제를 예방하고, 시스템의 안정성을 높이는 데 도움이 됩니다.

 

지속적 통합을 통해 어떻게 버그를 일찍 발견할 수 있는 걸까요?

 

  1. 자동화된 테스트: CI는 코드 변경이 발생하면 자동으로 빌드 및 테스트를 수행합니다. 이는 버그를 조기에 발견하고, 수정할 수 있게 해줍니다. 또한, 자동화된 테스트는 사람의 실수를 방지할 수 있으며, 반복적인 작업을 수행할 수 있습니다.
  2. 지속적인 빌드 및 배포: CI를 사용하면 개발자는 코드 변경 사항이 버전 관리 시스템에 통합되면 자동으로 빌드 및 배포가 이루어집니다. 이는 코드 변경 사항이 실시간으로 테스트되므로, 버그를 조기에 발견할 수 있게 해줍니다.
  3. 코드 변경 추적: CI를 사용하면 코드 변경 사항이 버전 관리 시스템에 자동으로 기록되므로, 언제 어떤 변경이 발생했는지 추적하기 쉽습니다. 이는 코드 변경에 따른 문제를 파악하기 쉽게 해줍니다.
  4. 코드 리뷰: CI를 사용하면 개발자들은 코드 리뷰를 수행할 수 있습니다. 코드 리뷰를 통해 다른 개발자들이 작성한 코드를 검토하고, 버그나 개선할 사항을 발견할 수 있습니다.
  5. 지속적인 모니터링: CI를 사용하면 지속적인 모니터링을 수행할 수 있습니다. 이는 버그가 발생했을 때 빠르게 대응할 수 있게 해줍니다. 또한, 모니터링을 통해 시스템의 상태를 지속적으로 파악할 수 있으며, 예측할 수 없는 문제를 예방할 수 있습니다.

 

지속적 통합 과정에서 반드시 자동화가 이뤄져야 하는 부분은 어떤 부분인가요?

 

  1. 빌드: CI를 위해 소스 코드를 컴파일하고 라이브러리 및 종속성을 설치하여 빌드 과정을 자동화해야 합니다. 이를 통해 빌드 오류를 미리 확인할 수 있습니다.
  2. 테스트: 자동화된 테스트를 통해 개발자가 코드 변경 사항이 발생할 때마다 즉시 테스트를 실행하고 문제를 빠르게 파악할 수 있습니다. 유닛 테스트, 통합 테스트, 시스템 테스트 등을 자동화할 수 있습니다.
  3. 배포: CI를 사용하면 개발자가 코드 변경 사항을 커밋하면 자동으로 빌드하고 배포할 수 있습니다. 이를 통해 프로덕션 환경에서의 버그와 호환성 문제를 방지할 수 있습니다.
  4. 알림: CI 도구는 오류 및 경고를 자동으로 감지하고 알림을 보내야 합니다. 이를 통해 팀 내에서 문제를 빠르게 파악하고 해결할 수 있습니다.
  5. 코드 리뷰: 코드 리뷰를 자동화할 수 있습니다. 코드 변경 사항이 있는 경우, CI 도구는 자동으로 코드 리뷰 요청을 보내어 팀원들이 코드를 검토하고 문제를 파악할 수 있게 합니다.


업계에서 주로 사용하는 CI/CD 툴은 무엇인가요

 

업계에서 주로 사용하는 CI/CD 툴은 Jenkins, Travis CI, CircleCI, GitLab CI/CD, AWS CodePipeline 등이 있습니다.

 

Jenkins는 CI/CD 분야에서 가장 대표적인 오픈 소스 툴로, 커스터마이즈가 가능하며 다양한 플러그인을 제공하여 유연하게 구성이 가능합니다.

Travis CI는 GitHub와 연동하여 사용할 수 있는 클라우드 기반 CI/CD 툴로, 빠른 설정과 사용이 가능합니다.

CircleCI는 Docker, AWS와의 연동이 용이하며, 소스코드를 컨테이너 내에서 빌드하여 보안성을 높일 수 있습니다.

GitLab CI/CD는 GitLab과 통합되어 사용할 수 있으며, CI/CD 기능 외에도 이슈 트래커, 웹 IDE, CI/CD 파이프라인 등 다양한 기능을 제공합니다.

AWS CodePipeline은 AWS 클라우드 환경에서 제공되는 CI/CD 서비스로, 다양한 AWS 서비스와의 통합이 용이하며, 서비스를 이용하면서 큰 부담 없이 사용할 수 있는 장점이 있습니다.

 

stageing vs product > config로 구분, 버전 구분 x

'DevOps BootCamp > CI, CD 파이프라인' 카테고리의 다른 글

서버 배포 파이프라인  (0) 2023.04.24
클라이언트 배포 파이프라인  (0) 2023.04.24
코드로부터 환경 변수 분리  (0) 2023.04.21
GitHub Action 작성법  (0) 2023.04.20
Github Action의 장점  (0) 2023.04.20