지금까지 QA(Tester)업무를 해오면서 곁눈질로 자동화에 대해 아주 조금이나마 알 수 있었지만 이 자동화가 무엇을 뜻하는지 무엇을 목표로 하는지 왜 있어야 하는지에 대해서는 알지 못했다.
Jenkins를 통해 BAT/BVT를 수행해 빌드가 적합한지 확인 어쩌구 저쩌구 솔직히 그다지 와닿진 않았는데 이번에 ISTQB-CTFL 자격증 준비를 하면서 CI/CD에 대해 조금이나마 알게 되었고 더 자세히 공부해보고 싶었다.

CI(Continuous Integration) 지속적 통합
1991년 Grady Booch가 처음으로 사용했고 extreme programming 개발 방법론에 채택되었다.
개발자가 신규 기능을 개발, 버그를 수정했을때 이를 메인 Repository에 주기적으로 빌드,테스트 되어 머지됨을 의미한다.
CI에서 주의해야 할 점은
1. 코드 변경사항을 주기적으로 자주 병합(Merge)해야 한다.
다수의 개발자가 같은 Repository에서 동시에 개발할시 Repository에 수많은 commit들이 쌓이게 되는데 이를 나중에 메인 Repository에 병합(Merge)하려고 할때 충돌(Conflict)이 일어나는 경우가 많을 것이다.
개인적인 경험으로 졸업작품을 개발할때 Git을 사용하였었는데 같이 작업하던 친구와 작업이 곂쳐 Conflict이 일어났고 이를 수정하는데 굉장히 많은 시간을 보냈던 경험이 있다.
최근 IT 업계에서 떠오르고 있는 아키텍쳐 모델은 MSA(Micro Service Archietecture)인데
작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태를 의미한다.
ISTQB를 공부했다면 Agile 소프트웨어 개발 수명 주기를 알고 있을텐데 요약해서 소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론으로 요약할 수 있다.
MSA 환경에서는 대부분 Agile이 적용되어 기능 추가가 매우 빈번하게 발생하게 된다.
개발자들이 개발 산출물들을 작은 단위로 개발하고 이를 자주 통합,병합한다면 위에서 Conflict가 일어날 확률이 낮을 것이다.
2. 통합을 위한 단계(빌드,테스트,머지)의 자동화
성공적으로 메인 Repository에 병합이 되었다면 이를 자동으로 빌드를 수행하여 코드 변경 사항이외에도 빌드가 성공적으로 되는지 확인하여야 한다.
그리고 기능 추가로 인한 리그레션 테스트 또한 자동으로 이루어져야 한다.
개발자가 작업을 마치고 메인 Repository에 병합을 시도할때 팀에서 만든 CI Script를 통해 추가된 코드와 함께 빌드를 수행하고 성공적으로 빌드 된다면 Test(Unit Test,Integration Test) Script를 통해 테스트를 수행한다.
테스트 단계까지 무사히 통과된다면 이후 배포 단계로 넘어가게 된다.
여기서 알 수 있는 CI의 장점은
1. Conflict을 피함으로 인한 개발 생산성 향상
2. 병합되는 코드들을 자동으로 빌드하고 자동으로 테스트를해 문제점을 빠르게 발견하고 수정할 수 있다.
3. 자신의 코드를 테스트하기 위한 Unit Test를 반드시 포함함으로 코드의 퀄리티를 향상할 수 있다.
CD(Continuous Delivery) 지속적 제공, CD(Continuous Deployment) 지속적 배포
CD는 위의 지속적 제공, 지속적 배포 모두의 축약어이다.
이 둘 모두 마지막 배포 단계에서 차이가 있다.

Continuous Delivery
배포 직전 준비된 빌드가 정상적인지, 요구사항을 만족시켰는지, 결함이 발견되지 않았는지 개발자 또는 QA 팀이 수동으로 검증하여 최종 사용자에게 배포하는 과정이다.
Continuous Deployment
지속적 제공과 다르게 검증하는 과정을 자동화 하여 최종 사용자에게 배포하는 과정을 말한다.

위의 내용을 바탕으로 정리하자면
1. 개발자가 작은 단위로 기능을 나누어 주기적으로 메인 Repository에 병합을 수행한다.
2. 자동으로 빌드가 수행된다.
3. 코드 변경 사항과 함께 변경 사항으로 인한 리그레션 테스트 수행
4. 릴리즈 과정에서 수동 또는 자동으로 검증을 수행한후
5. 최종 사용자에게 배포를 한다.
'QA' 카테고리의 다른 글
| NTS SQA 지원 후기 (1) | 2025.02.21 |
|---|---|
| QA(Tester)로 일하며 (0) | 2025.02.19 |
| ISTQB-CTFL 취득 후기 (3) | 2024.12.20 |
| ISTQB CTFL 시험을 앞두며 (0) | 2024.11.25 |
| QA 입문 (0) | 2024.11.22 |