728x90
반응형
Twitter의 Diffy는 서비스 인스턴스 간의 응답을 비교하여 회귀 테스트를 자동화하는 오픈 소스 도구입니다. Diffy는 새 코드와 기존 코드의 응답을 비교하여 차이를 식별하고, 이를 통해 새로운 변경 사항이 기존 기능에 미치는 영향을 확인할 수 있습니다. 이 도구는 특히 대규모 마이크로서비스 아키텍처에서 효과적으로 사용될 수 있습니다.
Diffy의 주요 기능 및 작동 원리
- 트래픽 미러링: 실제 프로덕션 트래픽을 새로운(Candidate), 기존(Primary), 중복(Secondary) 서비스 인스턴스로 미러링합니다. 이렇게 하면 동일한 입력에 대해 세 인스턴스의 응답을 얻을 수 있습니다.
- 응답 비교: Diffy는 각 인스턴스의 응답을 비교하여 Primary와 Secondary 간의 차이를 노이즈로 간주하고, Candidate와 Primary 간의 차이를 회귀로 감지합니다.
- 회귀 식별: 응답의 차이를 분석하여 잠재적인 버그나 예상치 못한 변경 사항을 식별합니다. 이를 통해 배포 전 코드의 품질을 보장할 수 있습니다.
Diffy의 구성 요소
- Candidate: 새로운 코드가 배포된 인스턴스.
- Primary: 마지막으로 안정성이 확인된 기존 코드가 배포된 인스턴스.
- Secondary: Primary 인스턴스와 동일한 코드가 배포된 중복 인스턴스.
Diffy 사용 예시
Diffy를 설정하여 사용하기 위해서는 다음과 같은 과정을 따릅니다:
- 환경 설정: 새로운 코드와 기존 코드를 각각의 인스턴스에 배포합니다.
- Diffy 서버 설정: Diffy 서버를 설정하고, 각 인스턴스의 주소를 지정합니다.
- 트래픽 미러링 설정: 실제 트래픽을 Diffy 서버로 미러링하여 응답을 비교합니다.
java -jar diffy-server.jar \
-candidate=localhost:9992 \
-master.primary=localhost:9990 \
-master.secondary=localhost:9991 \
-service.protocol=http \
-serviceName=My-Service \
-proxy.port=:31900 \
-admin.port=:31159 \
-http.port=:31149 \
-rootUrl='localhost:31149'
Docker를 이용한 Diffy 실행
Docker를 통해 Diffy를 쉽게 실행할 수 있습니다:
docker run -ti \
-p 8880:8880 -p 8881:8881 -p 8888:8888 \
diffy/diffy \
-candidate=stg-service1:8080 \
-master.primary=service1:8080 \
-master.secondary=service1:8080 \
-service.protocol=http \
-serviceName="Service1" \
-proxy.port=:8880 \
-admin.port=:8881 \
-http.port=:8888 \
-rootUrl=diffy-service1:8888
Diffy의 장점
구분 | 내용 |
자동화된 회귀 테스트 | 수동으로 테스트 케이스를 작성할 필요 없이 자동으로 회귀 문제를 감지합니다. |
실제 트래픽 기반 테스트 | 프로덕션 트래픽을 사용하여 보다 현실적인 테스트 결과를 얻을 수 있습니다. |
빠른 피드백 | 코드 변경 사항이 기존 기능에 미치는 영향을 신속하게 확인할 수 있습니다. |
Diffy는 주로 트위터에서 사용되었으며, 오픈 소스로 공개되어 다양한 기업에서 활용하고 있습니다.
728x90
반응형
'DevOps' 카테고리의 다른 글
[IaC] IaC(Infrastructure as Code) 란 무엇인가? (0) | 2024.06.03 |
---|---|
[OpenTelemetry] OpenTelemetry이란 무엇인가? (0) | 2024.05.31 |
[FinOps] FinOps란 무엇인가? 개념 설명 및 주요 요소 정리! (0) | 2024.05.29 |
애자일(Agile)이란 무엇인가? (0) | 2024.05.27 |
[DevOps] DevOps란 무엇인가? (0) | 2024.05.27 |