매거진 QA의 시작

CI/CD

자동화 및 도구 관련

by 제임스

CI/CD(Continuous Integration/Continuous Deployment)는 소프트웨어 개발과 배포를 더 빠르고 효율적으로 만드는 자동화된 워크플로우를 의미합니다.

이 프로세스는 코드 변경 사항이 팀 전체에 자동으로 통합(CI)되고, 테스트를 거쳐 안정적인 상태라면 사용자 환경에 배포(CD)되도록 합니다.

즉, 개발부터 배포까지의 과정을 매끄럽게 연결하는 자동화된 소프트웨어 생산 라인이라고 할 수 있습니다.



CI/CD란 무엇인가?


1. Continuous Integration (지속적인 통합)

여러 개발자가 작성한 코드를 한 곳(주로 Git과 같은 저장소)에 자주 통합하는 프로세스입니다.

통합된 코드가 자동으로 빌드되고, 유닛 테스트, 통합 테스트 등 다양한 테스트를 실행해 문제 없이 작동하는지 확인합니다.

예: 개발자가 새로운 기능을 추가하면, CI가 이를 자동으로 테스트하고 빌드해 저장소에 통합합니다.

2. Continuous Deployment (지속적인 배포)

CI 과정에서 테스트를 통과한 코드를 자동으로 운영 환경에 배포하는 프로세스입니다.

사용자는 변경 사항이 신속히 반영된 최신 소프트웨어를 경험할 수 있습니다.

예: CI를 통과한 코드가 바로 운영 서버에 반영되어 사용자에게 제공됩니다.



CI/CD는 마치...


CI/CD는 공장에서 움직이는 자동화된 조립 라인과 비슷합니다.

공장에서 조립품이 자동으로 생산되고, 품질 검사를 통과하면 바로 출하되는 것처럼, CI/CD도 코드를 자동으로 테스트하고 문제없다면 즉시 사용자 환경에 반영합니다.

이 프로세스는 사람의 개입을 줄이고, 빠르고 안정적인 배포를 가능하게 합니다.



CI/CD의 실제 사례


사례 1: 전자상거래 플랫폼

한 전자상거래 사이트에서 “결제 속도 최적화” 기능을 추가했다고 가정해봅시다.

1. 개발자가 새로운 코드를 커밋하면 CI 시스템이 이를 자동으로 빌드하고 테스트합니다.

2. 테스트가 성공하면, CD가 변경 사항을 운영 서버에 배포합니다.

3. 사용자는 바로 새로운 결제 속도 최적화 기능을 경험할 수 있습니다.


사례 2: 모바일 앱 업데이트

모바일 앱의 새로운 기능 추가 또는 버그 수정 시,

1. 코드 변경 사항을 커밋

2. CI 시스템이 앱을 빌드하고 테스트

3. CD가 앱 스토어 또는 운영 환경에 자동으로 업데이트


결과

사용자는 복잡한 배포 과정 없이 업데이트된 앱을 빠르게 다운로드 가능



CI/CD의 주요 장점


1. 개발 속도 향상

자동화 덕분에 더 자주, 더 빠르게 배포 가능

예: 한 달에 한 번 배포하던 소프트웨어를 하루에 여러 번 배포 가능

2. 신속한 피드백 제공

CI 과정에서 문제가 발생하면 바로 알림을 받아 빠르게 수정 가능

예: 코드 충돌이나 테스트 실패를 즉시 확인

3. 높은 품질 보장

자동화된 테스트를 통해 코드 변경 사항이 항상 안정적이고 신뢰할 수 있는 상태임을 확인 가능

4. 운영 환경과의 일관성 유지

운영 환경에 배포되는 코드와 개발 환경에서 테스트된 코드가 일치

“내 로컬에서는 잘 되는데?“라는 핑계를 없앨 수 있음

5. 사용자 경험 개선

새로운 기능과 버그 수정을 신속하게 배포해 사용자 만족도 향상


CI/CD의 단점


1. 초기 설정 복잡

CI/CD를 구축하려면 자동화 파이프라인 설계, 테스트 작성, 서버 구성 등 많은 초기 작업이 필요합니다.

2. 테스트 신뢰도 의존

테스트가 충분히 신뢰할 수 없으면, 잘못된 코드가 운영 환경에 배포될 위험이 있습니다.

3. 리소스 부담

CI/CD 시스템이 빌드와 테스트를 수행하는 동안 서버 리소스를 많이 사용합니다.

4. 도구와 기술 학습 필요

Jenkins, GitLab CI/CD, GitHub Actions 등 도구 사용법을 익히는 데 시간이 필요합니다.



CI/CD와 주니어 QA의 연결점


1. 자동화 테스트 경험

주니어 QA는 CI/CD 파이프라인을 통해 자동화 테스트의 중요성과 작동 방식을 이해할 수 있습니다.

예: 자동화된 테스트가 코드 품질을 어떻게 보장하는지 배우기

2. 효율적인 협업 이해

CI/CD는 개발자, QA, 운영 팀 간의 협업을 강화하므로, QA로서 팀의 일원이 되는 경험을 제공합니다.

3. 도구 활용 능력 향상

Jenkins, GitLab CI/CD 같은 도구를 다루며, 실무에서 요구되는 자동화 역량을 키울 수 있음

4. 품질 중심 사고 방식 학습

QA는 CI/CD 과정에서 발생하는 결함을 분석하고, 테스트 범위를 확장해 품질을 높이는 방법을 고민 가능



CI/CD는 현대 소프트웨어 개발 환경에서 없어서는 안 될 프로세스입니다.

자동화된 통합 및 배포를 통해 빠르고 안정적으로 코드 변경 사항을 테스트하고 배포할 수 있으며, 이는 개발팀과 QA팀 모두의 업무를 더욱 효율적으로 만듭니다.


주니어 QA는 CI/CD를 통해 자동화 테스트의 중요성을 배우고, 팀의 품질 보증에 기여하는 능력을 키울 수 있습니다.

keyword
매거진의 이전글End-to-End Testing