NginX - 면접

ChoRong0824·2025년 9월 15일

🌐 Nginx 면접 대비 Q&A

1. Nginx와 Apache의 가장 큰 차이점은 무엇인가요?

  • Nginx는 이벤트 기반 아키텍처를 사용해, 하나의 프로세스가 비동기적으로 수천 개의 연결을 처리할 수 있다.
  • Apache는 프로세스/스레드 기반 모델(MPM)로 동작하며, 연결마다 별도의 프로세스/스레드를 할당하기 때문에 동시 연결이 많아질수록 메모리와 CPU 사용량이 증가한다.
  • 따라서 고성능/대규모 트래픽 환경에서는 Nginx가, 세밀한 설정과 다양한 모듈이 필요한 환경에서는 Apache가 유리하다.

2. Nginx에서 리버스 프록시 역할은 어떤 이점을 주나요?

  • 보안 강화 : 내부 서버 IP와 구조를 외부에 노출하지 않는다.
  • 로드 밸런싱 : 다수의 백엔드 서버에 트래픽을 분산시킨다.
  • 캐싱 : 정적/동적 콘텐츠 캐싱으로 백엔드 부하를 줄인다.
  • SSL 종료(Offloading) : HTTPS 암호화/복호화를 Nginx에서 처리하여 백엔드 부담 완화.

3. 로드 밸런싱 전략(Round Robin, Least Connections, IP Hash)의 차이점은?

  • Round Robin : 순차적으로 서버에 분배 (기본값). 단순하고 공평하지만 서버 성능 차이를 고려하지 않음.
  • Least Connections : 현재 연결 수가 가장 적은 서버에 배분. 요청 처리 시간이 불균일한 환경에서 효율적.
  • IP Hash : 클라이언트 IP를 해시하여 특정 서버로 고정. 세션 지속성이 필요한 경우 적합.

4. 정적 리소스를 Nginx로 서빙하면 WAS보다 좋은 이유는?

  • Nginx는 정적 파일 처리에 특화되어 있어 I/O 효율이 뛰어나다.
  • WAS(Spring, Node 등)는 동적 로직 실행에 집중하도록 하고, 정적 리소스는 Nginx가 처리하면 전체 시스템 성능과 안정성이 향상된다.

5. location 블록에서 prefix match와 regex match 차이는?

  • Prefix match (/images/) : 단순 경로 접두사 매칭. 속도가 빠르고 자주 사용됨.
  • Regex match (~ \.php$) : 정규표현식 기반 매칭. 복잡한 조건 처리 가능하지만 성능 오버헤드가 있음.
  • 따라서 일반적으로 prefix match를 우선 사용하고, 필요할 때만 regex를 활용한다.

6. Nginx로 무중단 배포를 구현하려면 어떤 방식이 있나요?

  • Blue-Green Deployment : 두 개의 서버 그룹을 운영하며, 새 버전을 한쪽에 배포 후 트래픽을 전환.
  • Canary Release : 일부 사용자 트래픽만 새 버전으로 라우팅 후 점진적으로 확대.
  • Nginx는 upstream 블록과 proxy_pass 설정을 통해 손쉽게 트래픽을 분산/전환할 수 있다.

7. Kubernetes 환경에서 Ingress Controller로 Nginx를 사용하는 이유는?

  • Ingress Controller 표준 구현체로 가장 널리 사용됨.
  • TLS 종료, 리버스 프록시, 로드 밸런싱 기능을 기본 제공.
  • 커뮤니티/문서 지원이 풍부하여 운영 편의성이 높음.
  • Envoy, HAProxy 기반 Ingress도 있지만, 학습 곡선과 운영 난이도 측면에서 Nginx가 적합한 경우가 많다.

8. Nginx는 멀티 프로세스 기반인데, 동시성을 어떻게 확보하나요?

  • Nginx는 Master-Worker 구조로 동작한다.
  • 각 Worker는 이벤트 루프 기반으로 동작하며, epoll(Linux), kqueue(BSD) 같은 OS 레벨 이벤트 모델을 활용한다.
  • 따라서 스레드나 프로세스를 많이 생성하지 않고도 수만 개의 연결을 동시에 처리할 수 있다.

9. 이벤트 루프 방식(epoll)이 성능에 어떤 이점을 주나요?

  • 기존 블로킹 I/O는 연결마다 스레드를 필요로 하지만, epoll은 다수의 연결 이벤트를 감시하고 준비된 소켓만 처리한다.
  • 불필요한 Context Switching이 줄어들고, CPU/메모리 효율성이 높아진다.
  • 이로 인해 Nginx는 C10K 문제(만 개 이상의 동시 연결 처리)를 해결할 수 있었다.

10. Nginx에서 캐싱을 설정하면 어떤 장점과 단점이 있나요?

  • 장점 : 응답 속도 향상, 백엔드 부하 감소, 네트워크 비용 절감.
  • 단점 : 캐시 갱신 정책이 필요(만료, 무효화). 동적 콘텐츠 변경 시 최신성이 보장되지 않을 수 있음.
  • 따라서 캐시는 정적 리소스나 자주 변하지 않는 API 응답에 적합하다.

11. Nginx와 HAProxy의 차이는 무엇인가요?

  • Nginx : 웹 서버 + 리버스 프록시 + L7 로드밸런싱 기능 제공. 정적 리소스 처리 강점.
  • HAProxy : L4/L7 로드밸런서에 특화. 세션 지속성, Health Check, 고급 로드밸런싱 알고리즘에 강점.
  • 요약 : Nginx는 범용 프록시/웹서버, HAProxy는 로드밸런싱 전문 도구.

12. Envoy가 Kubernetes/마이크로서비스 환경에서 각광받는 이유는?

  • 서비스 메시(Service Mesh) 구현에 최적화됨.
  • gRPC, HTTP/2, HTTP/3 지원으로 최신 프로토콜 친화적.
  • Observability : 트래픽 모니터링, 메트릭, 트레이싱에 강력한 기능.
  • Istio 같은 서비스 메시의 기본 데이터 플레인으로 사용되며, MSA 환경에서 표준처럼 자리잡았다.

13. CDN 환경에서는 Nginx와 HAProxy 중 어떤 선택이 더 적합할까요?

  • Nginx는 정적 리소스 캐싱과 콘텐츠 서빙에 강점이 있어 CDN 엣지 서버로 적합하다.
  • HAProxy는 로드밸런싱에는 탁월하지만 캐싱 기능은 제한적이다.
  • 따라서 CDN 환경에서는 일반적으로 Nginx + 캐싱 레이어 조합이 많이 사용된다.

정리

  • Apache : 전통적, 프로세스/스레드 기반, 유연한 모듈.
  • Nginx : 이벤트 기반, 정적 리소스·프록시·Ingress 최강자.
  • HAProxy : 로드밸런싱 전문, 금융/통신 등 초고성능 트래픽 환경.
  • Envoy : 서비스 메시 표준, gRPC/HTTP3, 클라우드 네이티브 환경.
profile
정진, "어제보다 더 나은 오늘이 되자"

0개의 댓글