Angular 시니어 시스템 설계 면접

Angular 시니어 (7년+) 시스템 설계 3문항 조회수 18 · 2026-08-30 (일) 02:10:51
1 프론트엔드 아키텍처
Hard

Q. 대규모 엔터프라이즈 Angular 애플리케이션에서 마이크로 프론트엔드 아키텍처를 도입하려고 합니다. Module Federation을 사용한 설계와 Monorepo 기반 멀티 애플리케이션 설계의 트레이드오프를 비교하고, 각각 어떤 상황에서 적합한지 설명해주세요. 또한 공통 컴포넌트와 상태 관리를 어떻게 처리할 것인지 포함해주세요.

런타임 통합과 빌드타임 통합의 차이, 팀 독립성, 배포 전략, 그리고 의존성 관리 측면에서 생각해보세요.

A. 모범답안

Module Federation은 런타임에 독립적으로 배포된 애플리케이션을 동적으로 로드하므로, 팀 간 완전한 독립 배포가 가능하고 버전 업데이트가 즉각 반영됩니다. 반면 Monorepo는 빌드타임 통합으로 타입 안정성과 코드 공유가 용이하지만, 전체 빌드가 필요할 수 있습니다. Module Federation은 여러 팀이 독립적으로 운영되고 배포 주기가 다른 경우 적합하며, Monorepo는 코드 일관성과 타입 안정성이 중요하고 팀 간 협업이 긴밀한 경우 유리합니다. 공통 컴포넌트는 Module Federation에서는 shared 설정으로 싱글톤 관리하고, Monorepo에서는 라이브러리로 분리하여 관리합니다. 상태 관리는 각 마이크로 앱이 독립적인 스토어를 가지되, 공유 상태는 Custom Event나 Observable 기반 이벤트 버스로 통신하는 방식을 권장합니다.

핵심 포인트
  • • Module Federation은 런타임 통합으로 독립 배포 가능, Monorepo는 빌드타임 통합으로 타입 안정성 확보
  • • 팀 독립성과 배포 주기가 중요하면 Module Federation, 코드 일관성과 협업이 중요하면 Monorepo 선택
  • • 공통 컴포넌트는 shared 설정 또는 라이브러리로 관리하고, 상태는 이벤트 기반 통신으로 분리
답변에 넣으면 좋은 키워드
Module Federation Monorepo 마이크로 프론트엔드 런타임 통합 빌드타임 통합 이벤트 버스 독립 배포
실무에서는

여러 팀이 독립적으로 개발하는 대규모 포털 서비스에서 각 영역을 독립 배포하면서도 일관된 UX를 유지할 때 사용됩니다.

Follow-up 질문

Module Federation 사용 시 버전 불일치로 인한 런타임 에러를 방지하기 위한 전략은 무엇인가요?

2 API 설계 및 캐싱 전략
Hard

Q. 실시간 대시보드를 제공하는 Angular 애플리케이션에서 수백 개의 컴포넌트가 다양한 API를 호출합니다. 네트워크 요청을 최소화하고 데이터 일관성을 유지하기 위한 캐싱 전략을 설계해주세요. HTTP 캐싱, 인메모리 캐싱, 그리고 상태 관리 라이브러리를 활용한 방법을 비교하고, TTL, 무효화 전략, 그리고 실시간 업데이트를 어떻게 처리할지 설명해주세요.

데이터의 변경 빈도, 공유 범위, 실시간성 요구사항에 따라 계층적 캐싱 전략을 고려해보세요.

A. 모범답안

계층적 캐싱 전략으로 HTTP 캐시 헤더(Cache-Control, ETag)를 활용해 브라우저 레벨 캐싱을 먼저 적용하고, 변경이 적은 정적 데이터는 max-age를 길게 설정합니다. Angular 서비스 레벨에서는 HttpInterceptor를 통해 인메모리 캐시를 구현하되, ReplaySubject나 BehaviorSubject로 동일 요청을 공유하여 중복 호출을 방지합니다. NgRx나 Akita 같은 상태 관리 라이브러리를 사용하면 엔티티 기반 정규화로 데이터 일관성을 보장하고, selector를 통해 효율적인 데이터 접근이 가능합니다. TTL은 데이터 특성에 따라 차등 적용하며, 실시간 업데이트가 필요한 데이터는 WebSocket이나 Server-Sent Events로 푸시 받아 캐시를 무효화합니다. 무효화 전략은 태그 기반 무효화나 의존성 그래프를 활용하여, 관련된 모든 캐시를 일괄 갱신하도록 설계합니다.

핵심 포인트
  • • HTTP 캐시, 인메모리 캐시, 상태 관리 라이브러리를 계층적으로 조합하여 사용
  • • HttpInterceptor와 Subject를 활용해 중복 요청 방지 및 데이터 공유
  • • 실시간 데이터는 WebSocket으로 푸시 받아 캐시 무효화, TTL과 태그 기반 무효화 전략 적용
답변에 넣으면 좋은 키워드
HttpInterceptor ReplaySubject NgRx ETag TTL 캐시 무효화 WebSocket 엔티티 정규화
실무에서는

실시간 주식 거래 플랫폼이나 모니터링 대시보드에서 수많은 API 호출을 효율적으로 관리하고 최신 데이터를 유지할 때 사용됩니다.

Follow-up 질문

여러 탭에서 동일한 애플리케이션을 열었을 때 캐시 일관성을 어떻게 유지하시겠습니까?

3 확장성 및 성능 아키텍처
Hard

Q. 초기 로딩 시간이 5초를 넘는 대규모 Angular 애플리케이션의 성능을 개선해야 합니다. 번들 크기 최적화, 지연 로딩 전략, 프리로딩 전략, 그리고 초기 렌더링 최적화를 포괄하는 전체적인 성능 개선 아키텍처를 설계해주세요. 각 전략의 우선순위와 측정 지표, 그리고 트레이드오프를 포함해서 설명해주세요.

Critical Rendering Path, 번들 분석, 로딩 우선순위, 그리고 사용자 경험 측면에서 단계적으로 접근해보세요.

A. 모범답안

우선 webpack-bundle-analyzer로 번들을 분석하여 불필요한 의존성을 제거하고, 라우트 기반 지연 로딩을 모든 feature 모듈에 적용하여 초기 번들 크기를 줄입니다. PreloadAllModules 대신 커스텀 프리로딩 전략을 구현하여, 사용자가 방문할 가능성이 높은 라우트를 우선적으로 백그라운드에서 로드합니다. 초기 렌더링 최적화를 위해 Angular Universal로 SSR을 적용하여 FCP와 LCP를 개선하고, Critical CSS를 인라인으로 포함시킵니다. OnPush 변경 감지 전략을 전역적으로 적용하고, trackBy 함수를 사용하여 불필요한 DOM 조작을 최소화합니다. 측정 지표는 Lighthouse의 FCP, LCP, TTI를 기준으로 하며, 초기 번들은 200KB 이하, TTI는 3초 이하를 목표로 설정합니다. SSR 도입 시 서버 비용과 복잡도가 증가하는 트레이드오프가 있으나, SEO와 초기 로딩 성능 개선 효과가 큽니다.

핵심 포인트
  • • 번들 분석 후 지연 로딩과 커스텀 프리로딩 전략으로 초기 로딩 최적화
  • • Angular Universal SSR로 FCP/LCP 개선, OnPush 전략으로 변경 감지 최적화
  • • Lighthouse 지표 기반 측정, SSR은 복잡도 증가하지만 성능과 SEO 개선 효과 큼
답변에 넣으면 좋은 키워드
지연 로딩 프리로딩 전략 Angular Universal SSR OnPush FCP LCP TTI 번들 최적화 Critical CSS
실무에서는

대규모 이커머스 플랫폼이나 엔터프라이즈 SaaS 애플리케이션에서 사용자 이탈률을 줄이고 Core Web Vitals를 개선할 때 적용됩니다.

Follow-up 질문

SSR 적용이 어려운 상황에서 초기 로딩 성능을 개선할 수 있는 대안은 무엇인가요?

댓글 0

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

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