React 리드·아키텍트 배포·운영 기술면접

React 리드 · 아키텍트 (10년+) 배포 · 운영 5문항 조회수 42 · 2026-08-04 (화) 15:30:05
1 CI/CD 파이프라인 설계
Hard

Q. 마이크로프론트엔드 아키텍처로 구성된 React 애플리케이션의 CI/CD 파이프라인을 설계한다면, 각 프론트엔드 모듈의 독립적인 배포를 보장하면서도 통합 테스트와 버전 호환성을 관리하기 위한 전략을 제시해주세요. 특히 Module Federation을 사용하는 경우 호스트와 리모트 간의 배포 순서와 롤백 전략을 포함해 설명해주세요.

각 마이크로프론트엔드의 독립성과 전체 시스템의 안정성 사이의 균형을 고려해보세요.

A. 모범답안

먼저 각 마이크로프론트엔드를 독립적인 저장소와 파이프라인으로 분리하고, semantic versioning을 통해 명확한 버전 관리를 수행합니다. 호스트 애플리케이션은 리모트 모듈의 특정 버전 범위를 참조하도록 설정하며, 리모트 모듈이 먼저 배포된 후 호스트가 배포되는 순서를 유지합니다. 통합 테스트는 별도의 E2E 파이프라인에서 최신 버전 조합을 테스트하고, 호환성 매트릭스를 관리합니다. 롤백 시에는 호스트의 manifest 파일을 이전 버전으로 되돌려 리모트 모듈의 참조를 변경하며, 각 리모트 모듈은 최소 2개 이상의 이전 버전을 유지합니다. Canary 배포를 통해 일부 사용자에게만 새 버전을 노출하고, 메트릭 기반으로 자동 롤백을 수행하는 것이 안전합니다.

핵심 포인트
  • • 독립적인 저장소와 파이프라인 구성
  • • 리모트 우선 배포 순서 전략
  • • 버전 호환성 매트릭스 관리
  • • manifest 기반 롤백 메커니즘
답변에 넣으면 좋은 키워드
Module Federation semantic versioning manifest Canary 배포 호환성 매트릭스 E2E 테스트
실무에서는

대규모 조직에서 여러 팀이 독립적으로 프론트엔드를 개발하고 배포할 때 필수적인 전략입니다.

Follow-up 질문

리모트 모듈 중 하나에서 치명적인 버그가 발견되었을 때, 해당 모듈만 즉시 롤백하면서 다른 모듈들은 계속 운영하기 위한 기술적 구현 방법은 무엇인가요?

2 컨테이너 최적화
Hard

Q. React 애플리케이션을 Docker 컨테이너로 배포할 때, 빌드 시간과 이미지 크기를 최소화하면서도 보안과 캐싱 효율을 극대화하는 Dockerfile 전략을 설계해주세요. Multi-stage build, layer caching, 보안 스캔, 그리고 CDN 통합을 고려한 아키텍처를 포함해 설명해주세요.

빌드 단계 분리와 캐시 레이어 최적화가 핵심입니다.

A. 모범답안

Multi-stage build를 활용하여 빌드 단계와 런타임 단계를 분리합니다. 첫 번째 스테이지에서는 node 이미지로 의존성 설치와 빌드를 수행하되, package.json과 package-lock.json을 먼저 복사하여 의존성 레이어를 캐싱합니다. 두 번째 스테이지에서는 nginx alpine 같은 경량 이미지를 사용하여 빌드된 정적 파일만 복사합니다. 보안을 위해 비root 사용자로 실행하고, Trivy나 Snyk를 CI 파이프라인에 통합하여 취약점 스캔을 자동화합니다. 정적 자산은 컨테이너에 포함시키지 않고 빌드 시 S3나 CDN에 직접 업로드하며, 컨테이너는 HTML 쉘과 라우팅만 담당하도록 분리합니다. 이를 통해 이미지 크기를 50MB 이하로 유지하고 배포 속도를 크게 개선할 수 있습니다.

핵심 포인트
  • • Multi-stage build로 빌드/런타임 분리
  • • 의존성 레이어 캐싱 전략
  • • 경량 베이스 이미지 사용
  • • 정적 자산 CDN 분리
답변에 넣으면 좋은 키워드
Multi-stage build layer caching nginx alpine Trivy CDN 보안 스캔
실무에서는

Kubernetes 환경에서 빠른 배포와 효율적인 리소스 사용을 위해 필수적인 최적화입니다.

Follow-up 질문

컨테이너 이미지의 레이어 캐싱이 무효화되는 상황을 최소화하기 위해 Dockerfile 명령어의 순서를 어떻게 최적화하시겠습니까?

3 무중단 배포 전략
Hard

Q. React SPA를 운영 중인 서비스에서 새 버전 배포 시 이미 열려있는 사용자 세션이 깨지지 않도록 하면서도, 최신 버전으로 점진적으로 전환하는 무중단 배포 전략을 설계해주세요. chunk 파일의 버전 관리, 404 에러 처리, 사용자 알림, 그리고 Blue-Green과 Rolling 배포의 트레이드오프를 포함해 설명해주세요.

기존 사용자는 이전 버전의 chunk를 계속 사용할 수 있어야 합니다.

A. 모범답안

먼저 webpack이나 vite의 output filename에 contenthash를 포함시켜 각 배포마다 고유한 chunk 파일명을 생성합니다. CDN이나 스토리지에 최소 2-3개 버전의 chunk 파일을 유지하는 정책을 설정하여, 이전 버전 사용자가 lazy loading 시 chunk를 찾을 수 있도록 합니다. ChunkLoadError를 전역으로 감지하여 새 버전이 배포되었음을 인지하고, 사용자에게 새로고침을 권유하는 UI를 표시합니다. Blue-Green 배포는 즉시 전환이 가능하지만 리소스가 2배 필요하고, Rolling 배포는 리소스 효율적이지만 두 버전이 공존하는 시간이 깁니다. 대규모 트래픽 서비스에서는 Canary 배포로 5-10-50-100% 식으로 점진적 전환하며, 에러율과 성능 메트릭을 실시간 모니터링하여 자동 롤백 조건을 설정합니다.

핵심 포인트
  • • contenthash 기반 chunk 버전 관리
  • • 다중 버전 chunk 파일 유지 정책
  • • ChunkLoadError 처리 및 사용자 알림
  • • Canary 배포를 통한 점진적 전환
답변에 넣으면 좋은 키워드
contenthash ChunkLoadError Blue-Green Canary Rolling 배포 lazy loading
실무에서는

24시간 운영되는 서비스에서 사용자 경험을 해치지 않고 배포하기 위한 필수 전략입니다.

Follow-up 질문

사용자가 오래된 탭을 열어둔 채로 며칠이 지나 이전 버전의 chunk가 완전히 삭제된 상황에서는 어떻게 대응하시겠습니까?

4 프론트엔드 모니터링
Hard

Q. 대규모 React 애플리케이션의 프로덕션 환경에서 발생하는 성능 저하와 에러를 사전에 감지하고 대응하기 위한 종합 모니터링 전략을 수립해주세요. Core Web Vitals, 에러 추적, 사용자 세션 재현, 그리고 알림 임계값 설정을 포함하여, 기술적 구현 방법과 조직 내 대응 프로세스를 함께 설명해주세요.

실시간 메트릭 수집과 의미 있는 알림 기준 설정이 핵심입니다.

A. 모범답안

먼저 Sentry나 Datadog RUM을 통합하여 JavaScript 에러, 네트워크 실패, 그리고 unhandled rejection을 자동으로 수집하고, 소스맵을 업로드하여 minified 코드를 원본으로 추적합니다. Core Web Vitals(LCP, FID, CLS)를 PerformanceObserver API로 측정하고, 각 페이지별 P95 값이 기준치를 초과하면 알림을 발송합니다. LogRocket이나 FullStory로 에러 발생 시 사용자 세션을 재현할 수 있도록 설정하되, 민감 정보는 마스킹 처리합니다. 알림 임계값은 에러율 1% 초과, LCP 2.5초 초과, 또는 특정 critical path에서 연속 실패 시 즉시 온콜 엔지니어에게 전달되도록 설정합니다. 대시보드는 비즈니스 메트릭과 기술 메트릭을 함께 표시하여 영향도를 파악하고, 주간 리뷰에서 trend 분석을 통해 점진적 성능 저하를 조기에 발견합니다.

핵심 포인트
  • • 에러 추적 및 소스맵 통합
  • • Core Web Vitals 실시간 측정
  • • 세션 재현 도구 활용
  • • 비즈니스 영향도 기반 알림 설정
답변에 넣으면 좋은 키워드
Sentry Core Web Vitals PerformanceObserver 소스맵 LogRocket P95
실무에서는

프로덕션 장애를 빠르게 감지하고 사용자 영향을 최소화하기 위한 필수 인프라입니다.

Follow-up 질문

특정 사용자 그룹에서만 발생하는 간헐적 에러를 추적하기 위해 어떤 컨텍스트 정보를 함께 수집하시겠습니까?

5 배포 전략 및 리스크 관리
Hard

Q. 레거시 React 애플리케이션을 새로운 아키텍처로 전환하는 과정에서, 기존 시스템을 운영하면서 동시에 새 시스템을 점진적으로 배포하는 Strangler Fig 패턴을 적용한다면 어떻게 설계하시겠습니까? 라우팅 전략, feature flag 활용, 데이터 동기화, 롤백 시나리오, 그리고 전환 완료 판단 기준을 포함해 설명해주세요.

프록시 레이어에서의 라우팅 제어와 점진적 전환이 핵심입니다.

A. 모범답안

먼저 nginx나 CloudFront 같은 프록시 레이어에서 URL 패턴 기반으로 트래픽을 레거시와 신규 시스템으로 분기합니다. 초기에는 비critical한 페이지부터 신규 시스템으로 전환하고, LaunchDarkly나 자체 feature flag 시스템으로 사용자 세그먼트별로 점진적 노출을 제어합니다. 양쪽 시스템이 공유하는 API는 버전 관리를 통해 호환성을 유지하고, 신규 시스템에서 발생하는 에러율과 성능을 실시간 모니터링하여 임계값 초과 시 자동으로 레거시로 폴백합니다. 롤백은 프록시 설정 변경만으로 즉시 가능하도록 설계하며, 각 페이지의 전환 완료는 신규 시스템 트래픽 100% 유지 2주 동안 에러율 0.1% 이하 기준을 충족할 때 판단합니다. 전체 전환 완료 후 최소 1개월은 레거시 시스템을 standby 상태로 유지하여 예상치 못한 문제에 대비합니다.

핵심 포인트
  • • 프록시 레이어 기반 트래픽 라우팅
  • • feature flag를 통한 점진적 전환
  • • 자동 폴백 메커니즘
  • • 명확한 전환 완료 기준 설정
답변에 넣으면 좋은 키워드
Strangler Fig feature flag 프록시 라우팅 자동 폴백 점진적 전환 트래픽 분기
실무에서는

대규모 시스템 재구축 시 비즈니스 연속성을 보장하면서 리스크를 최소화하는 실전 전략입니다.

Follow-up 질문

레거시와 신규 시스템 간에 공유 상태나 세션 정보를 동기화해야 하는 경우 어떤 전략을 사용하시겠습니까?

댓글 0

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

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