대규모 시스템 테스트 전략 및 코드품질 관리 아키텍트 면접

대규모 시스템 설계 리드 · 아키텍트 (10년+) 테스트 · 코드품질 5문항 조회수 14 · 2026-09-06 (일) 12:11:31
1 분산 시스템 테스트 전략
Hard

Q. 마이크로서비스 아키텍처로 구성된 결제 시스템에서 30개 서비스가 상호 의존하고 있습니다. 각 서비스 팀이 독립적으로 배포하면서도 전체 시스템의 안정성을 보장해야 합니다. Contract Testing, Consumer-Driven Contract, End-to-End Testing의 역할을 구분하고, 테스트 피라미드를 어떻게 재구성하시겠습니까? 또한 배포 파이프라인에서 각 테스트 단계의 실패 시 롤백 전략을 설명하세요.

각 테스트 레벨이 검증하는 범위와 실행 비용, 그리고 서비스 간 계약의 버전 관리를 고려해보세요.

A. 모범답안

Contract Testing은 Pact나 Spring Cloud Contract로 API 스펙 준수를 검증하며, Consumer 팀이 기대하는 계약을 Producer가 충족하는지 확인합니다. Consumer-Driven Contract는 하위 호환성을 보장하면서 독립 배포를 가능하게 하며, 계약 브로커를 통해 버전별 호환성 매트릭스를 관리합니다. E2E 테스트는 critical path만 선별하여 smoke test 수준으로 최소화하고, 주요 비즈니스 시나리오만 검증합니다. 테스트 피라미드는 Unit(70%) - Integration(20%) - Contract(7%) - E2E(3%) 비율로 재구성하며, Contract 테스트 실패 시에는 배포를 즉시 차단하고, E2E 실패 시에는 canary 배포를 중단하고 자동 롤백합니다. 각 서비스는 backward compatibility를 3버전까지 유지하며, deprecation 정책을 통해 점진적으로 전환합니다.

핵심 포인트
  • • Contract Testing으로 API 스펙 준수 검증 및 독립 배포 보장
  • • Consumer-Driven Contract로 하위 호환성 관리 및 계약 브로커 활용
  • • E2E 테스트는 critical path만 선별하여 최소화
  • • 테스트 피라미드 재구성 및 단계별 롤백 전략 수립
답변에 넣으면 좋은 키워드
Contract Testing Consumer-Driven Contract Pact 테스트 피라미드 Backward Compatibility Canary 배포
실무에서는

MSA 환경에서 서비스 간 의존성 때문에 한 팀의 배포가 다른 팀의 장애를 유발하는 것을 방지합니다.

Follow-up 질문

Contract 테스트에서 발견된 breaking change를 프로덕션 배포 전에 어떻게 안전하게 전파하고 관련 팀에게 통지하시겠습니까?

2 카오스 엔지니어링 및 테스트 자동화
Hard

Q. 월 1억 건의 트랜잭션을 처리하는 시스템에서 장애 복원력을 검증하기 위해 카오스 엔지니어링을 도입하려고 합니다. 네트워크 지연, 서버 다운, 데이터베이스 응답 지연, 메모리 부족 등 다양한 장애 시나리오를 프로덕션 환경에서 안전하게 테스트하는 전략을 설계하세요. Chaos Monkey, Latency Injection, Fault Injection의 적용 범위와 blast radius 제어 방법, 그리고 steady state 검증 메트릭을 어떻게 정의하시겠습니까?

프로덕션 환경에서의 실험이므로 영향 범위 제한과 자동 중단 조건이 핵심입니다.

A. 모범답안

카오스 실험은 canary 서버 그룹에서 시작하여 전체 트래픽의 1%만 영향받도록 blast radius를 제한하고, 실험 전 steady state를 정의합니다(예: 에러율 < 0.1%, p99 latency < 500ms, throughput > 1000 TPS). Chaos Monkey는 특정 AZ의 인스턴스를 무작위로 종료하여 auto-scaling과 health check를 검증하고, Latency Injection은 downstream 서비스 호출에 100-500ms 지연을 주입하여 circuit breaker와 timeout 설정을 확인합니다. Fault Injection은 특정 API에 5xx 에러를 10% 비율로 반환하여 retry 로직과 fallback을 검증합니다. 실시간 모니터링으로 SLO 위반 시 자동으로 실험을 중단하며, 실험 결과는 runbook에 반영하여 on-call 엔지니어의 대응 절차를 개선합니다. 주간 단위로 정기적인 게임데이를 운영하여 팀의 장애 대응 역량을 지속적으로 향상시킵니다.

핵심 포인트
  • • Blast radius 제한 및 canary 그룹에서 점진적 실험
  • • Steady state 메트릭 정의 및 SLO 기반 자동 중단
  • • 다양한 장애 시나리오별 검증 대상 명확화
  • • 실험 결과의 runbook 반영 및 정기적 게임데이 운영
답변에 넣으면 좋은 키워드
Chaos Engineering Blast Radius Steady State Fault Injection Circuit Breaker SLO
실무에서는

Netflix나 Amazon처럼 대규모 시스템에서 장애 시나리오를 사전에 검증하여 실제 장애 시 복원 시간을 단축합니다.

Follow-up 질문

카오스 실험 중 예상치 못한 cascading failure가 발생했을 때 자동으로 감지하고 롤백하는 메커니즘을 어떻게 구현하시겠습니까?

3 레거시 시스템 리팩토링 전략
Hard

Q. 10년 된 모놀리식 시스템을 마이크로서비스로 전환하는 프로젝트에서 테스트 커버리지가 20%에 불과하고 문서도 부족합니다. Strangler Fig 패턴을 적용하여 점진적으로 전환하면서 비즈니스 연속성을 보장해야 합니다. 리팩토링 전 Characterization Test를 작성하는 전략, Golden Master Testing 기법, 그리고 신규 서비스와 레거시 시스템 간 동작 일치를 검증하는 Shadow Testing 파이프라인을 어떻게 설계하시겠습니까?

현재 동작을 보존하면서 안전하게 변경하려면 기존 시스템의 행위를 먼저 테스트로 포착해야 합니다.

A. 모범답안

Characterization Test는 레거시 코드의 현재 동작을 있는 그대로 테스트로 기록하며, 입력값과 실제 출력값을 snapshot으로 저장합니다. Golden Master Testing은 프로덕션 트래픽의 10%를 샘플링하여 레거시 시스템의 응답을 baseline으로 저장하고, 리팩토링 후 동일 입력에 대한 출력을 비교합니다. Shadow Testing 파이프라인은 API Gateway에서 트래픽을 복제하여 레거시와 신규 서비스에 동시 전송하고, 응답 차이를 diff 분석하여 불일치율이 1% 미만일 때만 전환합니다. Strangler Fig 패턴은 기능 단위로 점진적으로 이관하며, feature flag로 트래픽 비율을 조절하고, 각 단계마다 비즈니스 메트릭(매출, 전환율)을 모니터링합니다. 테스트 커버리지는 critical path부터 우선 확보하여 60% 이상 달성 후 전환을 시작하며, 각 이관 단계는 2주 스프린트로 제한하여 리스크를 분산합니다.

핵심 포인트
  • • Characterization Test로 현재 동작 포착 및 snapshot 저장
  • • Golden Master Testing으로 프로덕션 기반 baseline 검증
  • • Shadow Testing으로 레거시-신규 시스템 동작 일치 확인
  • • Strangler Fig 패턴과 feature flag로 점진적 전환 및 리스크 분산
답변에 넣으면 좋은 키워드
Characterization Test Golden Master Testing Shadow Testing Strangler Fig Pattern Feature Flag Snapshot Testing
실무에서는

대규모 레거시 시스템을 무중단으로 전환하면서 비즈니스 리스크를 최소화하는 데 필수적입니다.

Follow-up 질문

Shadow Testing에서 신규 시스템의 응답 시간이 레거시보다 느리게 나올 때, 성능 저하를 허용할 수 있는 기준을 어떻게 설정하시겠습니까?

4 코드 리뷰 문화 및 품질 게이트
Medium

Q. 100명 규모의 개발 조직에서 코드 리뷰가 형식적으로 이루어져 실질적인 품질 개선 효과가 없고, 리뷰 대기 시간이 평균 2일이 걸려 배포 속도가 저하되고 있습니다. 효과적인 코드 리뷰 문화를 정착시키기 위한 가이드라인을 제시하고, 자동화된 품질 게이트(정적 분석, 복잡도 측정, 테스트 커버리지)를 CI/CD 파이프라인에 통합하는 전략을 설계하세요. 또한 리뷰어의 책임 범위와 승인 기준을 어떻게 명확히 하시겠습니까?

자동화로 검증할 수 있는 것과 사람이 판단해야 하는 것을 분리하고, 리뷰 프로세스의 병목을 제거해야 합니다.

A. 모범답안

자동화된 품질 게이트는 SonarQube로 코드 스멜과 보안 취약점을 검사하고, cyclomatic complexity 15 이상, 테스트 커버리지 80% 미만 시 PR을 자동 차단합니다. 정적 분석 통과 후에만 사람의 리뷰를 요청하여 리뷰어는 비즈니스 로직, 아키텍처 적합성, 가독성에 집중하도록 합니다. 코드 리뷰 가이드라인은 PR 크기를 400줄 이하로 제한하고, 리뷰 요청 후 4시간 내 1차 피드백을 원칙으로 하며, 2명의 승인을 받아야 머지 가능하도록 설정합니다. 리뷰어는 해당 도메인 전문가 1명과 다른 팀 개발자 1명으로 구성하여 지식 공유와 cross-team 협업을 촉진합니다. 리뷰 코멘트는 nit(사소한 의견), suggestion(개선 제안), must-fix(필수 수정)로 분류하여 우선순위를 명확히 하고, 아키텍처 변경은 별도 ADR(Architecture Decision Record) 문서로 사전 논의합니다.

핵심 포인트
  • • 자동화된 품질 게이트로 기계적 검증 사항 사전 차단
  • • PR 크기 제한 및 리뷰 응답 시간 정책 수립
  • • 리뷰어 역할 명확화 및 코멘트 우선순위 분류
  • • 도메인 전문가와 cross-team 리뷰어 조합으로 지식 공유
답변에 넣으면 좋은 키워드
코드 리뷰 품질 게이트 정적 분석 Cyclomatic Complexity 테스트 커버리지 ADR
실무에서는

대규모 조직에서 코드 품질을 일관되게 유지하면서도 배포 속도를 저해하지 않는 균형을 찾는 데 필요합니다.

Follow-up 질문

코드 리뷰에서 의견 충돌이 발생했을 때 최종 결정을 내리는 escalation 프로세스를 어떻게 설계하시겠습니까?

5 성능 테스트 및 용량 계획
Hard

Q. 블랙프라이데이 같은 트래픽 급증 이벤트를 앞두고 시스템 용량을 검증해야 합니다. 평소 TPS 10,000인 시스템이 예상 최대 TPS 100,000을 처리할 수 있는지 확인하고, 병목 지점을 사전에 식별해야 합니다. Load Testing, Stress Testing, Spike Testing, Soak Testing의 차이를 설명하고, 각 테스트 시나리오별 목적과 실행 전략을 제시하세요. 또한 프로덕션과 유사한 테스트 환경 구성이 어려울 때 어떻게 신뢰성 있는 결과를 얻을 수 있습니까?

각 테스트 유형이 검증하는 시스템 특성과 실행 패턴이 다르며, 환경 제약은 스케일링 법칙으로 보완할 수 있습니다.

A. 모범답안

Load Testing은 예상 최대 부하(TPS 100,000)를 30분간 유지하여 목표 응답시간(p95 < 1초) 충족 여부를 확인하고, Stress Testing은 한계점을 찾기 위해 부하를 점진적으로 증가시켜 시스템이 실패하는 지점과 복구 능력을 검증합니다. Spike Testing은 순간적으로 10배 트래픽을 발생시켜 auto-scaling과 circuit breaker 동작을 확인하고, Soak Testing은 목표 부하를 24시간 유지하여 메모리 누수나 connection pool 고갈 같은 장기 실행 문제를 탐지합니다. 프로덕션 환경 구성이 어려울 때는 scaled-down 환경(1/10 규모)에서 테스트하되, Little's Law와 USL(Universal Scalability Law)로 결과를 외삽하여 예측하며, critical path의 주요 서비스만 full-scale로 구성합니다. APM 도구로 각 계층별 응답시간을 분해하여 병목(DB connection pool, CPU, network bandwidth)을 식별하고, 부하 테스트 중 실시간 메트릭을 모니터링하여 임계값 도달 시 자동으로 알림을 발송합니다. 테스트 시나리오는 실제 사용자 행동 패턴을 반영하여 read:write 비율, 캐시 hit rate, 동시 사용자 수를 현실적으로 설정합니다.

핵심 포인트
  • • Load/Stress/Spike/Soak Testing의 목적과 실행 패턴 차별화
  • • Scaled-down 환경에서 스케일링 법칙으로 결과 외삽
  • • APM 기반 병목 지점 식별 및 계층별 분석
  • • 실제 사용자 패턴 반영 및 실시간 메트릭 모니터링
답변에 넣으면 좋은 키워드
Load Testing Stress Testing Spike Testing Soak Testing Little's Law Universal Scalability Law APM
실무에서는

대규모 이벤트 전에 시스템 용량을 검증하고 장애를 사전에 방지하여 비즈니스 기회 손실을 막습니다.

Follow-up 질문

성능 테스트에서 데이터베이스가 병목으로 확인되었을 때, 쿼리 최적화와 인프라 스케일업 중 어느 것을 우선 시도하시겠으며 그 판단 기준은 무엇입니까?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!