네트워크 주니어 성능 최적화 면접

네트워크 주니어 (1~3년) 성능 최적화 10문항 조회수 76 · 2026-09-08 (화) 07:41:44
1 네트워크 병목 진단
Easy

Q. 웹 애플리케이션에서 사용자가 페이지 로딩이 느리다고 불만을 제기했습니다. 네트워크 관점에서 병목 지점을 파악하기 위해 어떤 도구나 지표를 확인해야 하는지 3가지 이상 말씀해주세요.

브라우저 개발자 도구에서 확인할 수 있는 네트워크 탭의 지표들을 생각해보세요.

A. 모범답안

먼저 브라우저 개발자 도구의 Network 탭에서 각 리소스의 로딩 시간과 Waterfall 차트를 확인합니다. TTFB(Time To First Byte)를 통해 서버 응답 속도를 측정하고, 리소스의 크기와 개수를 파악하여 과도한 요청이 있는지 확인합니다. Latency와 Download 시간을 구분하여 네트워크 지연인지 대역폭 문제인지 판단합니다. 또한 Chrome의 Lighthouse나 WebPageTest 같은 도구로 전체적인 성능 점수와 개선 제안사항을 확인할 수 있습니다.

핵심 포인트
  • • Network 탭의 Waterfall 차트 분석
  • • TTFB로 서버 응답 속도 측정
  • • 리소스 크기와 요청 개수 확인
  • • Latency와 Download 시간 구분
답변에 넣으면 좋은 키워드
TTFB Waterfall Latency Network 탭 Lighthouse 병목지점
실무에서는

실제 서비스 배포 후 사용자 불만 접수 시 가장 먼저 수행하는 성능 진단 과정입니다.

Follow-up 질문

TTFB가 3초 이상 걸린다면 어떤 원인들을 의심해볼 수 있을까요?

2 HTTP 캐싱
Medium

Q. 정적 리소스(이미지, CSS, JS)의 로딩 성능을 개선하기 위해 HTTP 캐싱을 적용하려고 합니다. Cache-Control 헤더의 주요 디렉티브들과 각각의 용도를 설명하고, 어떤 리소스에 어떤 캐싱 전략을 적용하면 좋을지 말씀해주세요.

자주 변경되는 리소스와 거의 변경되지 않는 리소스를 구분하여 생각해보세요.

A. 모범답안

Cache-Control의 주요 디렉티브로는 max-age(캐시 유효 시간), no-cache(재검증 필수), no-store(캐시 금지), public/private(공유 캐시 허용 여부)가 있습니다. 버전 해시가 포함된 정적 파일(app.abc123.js)은 max-age=31536000, immutable로 장기 캐싱하고, HTML 파일은 no-cache로 설정하여 매번 재검증하도록 합니다. API 응답 중 자주 변하지 않는 데이터는 max-age=300 정도로 짧은 캐싱을 적용하고, 민감한 개인정보는 no-store, private로 설정합니다. ETag나 Last-Modified 헤더를 함께 사용하면 304 Not Modified 응답으로 대역폭을 절약할 수 있습니다.

핵심 포인트
  • • Cache-Control 디렉티브별 용도 이해
  • • 리소스 특성에 따른 캐싱 전략 차별화
  • • 버전 해시 파일은 장기 캐싱
  • • ETag/Last-Modified로 재검증 최적화
답변에 넣으면 좋은 키워드
Cache-Control max-age no-cache ETag immutable 304 Not Modified
실무에서는

프론트엔드 빌드 결과물을 배포할 때 웹서버나 CDN에 적절한 캐시 헤더를 설정하여 반복 방문 성능을 개선합니다.

Follow-up 질문

CDN을 함께 사용할 때 캐싱 전략은 어떻게 달라질까요?

3 연결 재사용
Medium

Q. HTTP/1.1의 Keep-Alive와 HTTP/2의 멀티플렉싱이 네트워크 성능을 어떻게 개선하는지 각각 설명하고, 두 방식의 차이점을 말씀해주세요.

TCP 연결 생성 비용과 동시 요청 처리 방식을 중심으로 생각해보세요.

A. 모범답안

HTTP/1.1의 Keep-Alive는 하나의 TCP 연결을 재사용하여 매 요청마다 3-way handshake를 수행하는 오버헤드를 줄입니다. 하지만 HOL(Head of Line) Blocking 문제로 인해 한 번에 하나의 요청만 처리되고 이전 응답이 완료되어야 다음 요청을 보낼 수 있습니다. HTTP/2의 멀티플렉싱은 하나의 TCP 연결에서 여러 스트림을 동시에 처리하여 HOL Blocking을 해결하고, 요청 우선순위 지정도 가능합니다. 이를 통해 리소스가 많은 웹페이지에서 로딩 시간을 크게 단축할 수 있습니다.

핵심 포인트
  • • Keep-Alive는 연결 재사용으로 handshake 비용 절감
  • • HTTP/1.1의 HOL Blocking 문제
  • • HTTP/2 멀티플렉싱은 동시 요청 처리
  • • 단일 TCP 연결에서 여러 스트림 활용
답변에 넣으면 좋은 키워드
Keep-Alive 멀티플렉싱 HOL Blocking HTTP/2 TCP 연결 재사용 스트림
실무에서는

웹서버에서 HTTP/2를 활성화하여 리소스가 많은 SPA 애플리케이션의 초기 로딩 성능을 개선합니다.

Follow-up 질문

HTTP/3(QUIC)은 어떤 방식으로 성능을 더 개선했을까요?

4 CDN 활용
Easy

Q. CDN(Content Delivery Network)이 무엇인지 설명하고, CDN을 사용하면 네트워크 성능이 개선되는 원리와 어떤 종류의 콘텐츠를 CDN에 배포하면 좋은지 말씀해주세요.

사용자와 서버 간의 물리적 거리와 콘텐츠 캐싱을 생각해보세요.

A. 모범답안

CDN은 전 세계에 분산된 서버 네트워크로, 원본 서버의 콘텐츠를 엣지 서버에 캐싱하여 사용자와 가까운 위치에서 제공하는 서비스입니다. 물리적 거리가 가까워지면 네트워크 지연(Latency)이 줄어들고, 원본 서버의 부하가 분산되어 가용성이 향상됩니다. 이미지, CSS, JavaScript 같은 정적 리소스나 동영상 스트리밍 콘텐츠를 CDN에 배포하면 효과적입니다. 또한 CDN은 DDoS 공격 방어와 HTTPS 적용에도 유리하며, 글로벌 서비스에서는 필수적인 인프라입니다.

핵심 포인트
  • • 엣지 서버를 통한 지리적 분산
  • • Latency 감소와 원본 서버 부하 분산
  • • 정적 리소스와 미디어 콘텐츠에 적합
  • • DDoS 방어와 가용성 향상
답변에 넣으면 좋은 키워드
CDN 엣지 서버 Latency 캐싱 정적 리소스 분산
실무에서는

이미지가 많은 이커머스 사이트나 동영상 스트리밍 서비스에서 사용자 경험 개선을 위해 필수적으로 사용됩니다.

Follow-up 질문

CDN 캐시 무효화(Cache Invalidation)는 언제 필요하고 어떻게 수행하나요?

5 압축 최적화
Easy

Q. 웹 서버에서 gzip이나 brotli 같은 압축을 적용하면 네트워크 성능이 어떻게 개선되는지 설명하고, 어떤 종류의 파일에 압축을 적용하면 효과적인지 말씀해주세요.

전송 데이터 크기와 압축률, 그리고 파일 특성을 고려해보세요.

A. 모범답안

gzip이나 brotli 압축은 텍스트 기반 파일의 크기를 60~80% 줄여서 네트워크 전송 시간을 단축하고 대역폭 비용을 절감합니다. HTML, CSS, JavaScript, JSON, XML 같은 텍스트 파일에 압축을 적용하면 효과적이며, 특히 반복되는 패턴이 많은 파일일수록 압축률이 높습니다. 반면 이미 압축된 이미지(JPEG, PNG)나 동영상 파일은 추가 압축 효과가 거의 없고 CPU 낭비만 발생합니다. 웹서버에서 Accept-Encoding 헤더를 확인하고 Content-Encoding 헤더로 압축 방식을 알려줍니다.

핵심 포인트
  • • 텍스트 파일 크기를 60~80% 감소
  • • HTML, CSS, JS, JSON에 효과적
  • • 이미 압축된 바이너리 파일은 제외
  • • Accept-Encoding과 Content-Encoding 헤더 활용
답변에 넣으면 좋은 키워드
gzip brotli 압축 Content-Encoding 대역폭 텍스트 파일
실무에서는

Nginx나 Apache 웹서버 설정에서 압축을 활성화하여 모바일 사용자나 느린 네트워크 환경에서 로딩 속도를 개선합니다.

Follow-up 질문

brotli가 gzip보다 압축률이 높은데 왜 아직 gzip도 많이 사용될까요?

6 DNS 최적화
Medium

Q. 웹페이지에서 여러 외부 도메인의 리소스를 로드할 때 DNS 조회가 성능에 미치는 영향과, DNS Prefetch와 Preconnect를 사용한 최적화 방법을 설명해주세요.

DNS 조회 시간과 브라우저의 리소스 힌트 기능을 생각해보세요.

A. 모범답안

각 도메인마다 처음 접근 시 DNS 조회가 필요하며 이는 보통 20~120ms의 지연을 발생시킵니다. 외부 CDN, 폰트, 분석 도구 등 여러 도메인을 사용하면 DNS 조회가 누적되어 초기 로딩이 느려집니다. dns-prefetch 링크 태그를 사용하면 브라우저가 미리 DNS 조회를 수행하여 실제 리소스 요청 시 지연을 줄일 수 있습니다. preconnect는 DNS 조회뿐 아니라 TCP 연결과 TLS 핸드셰이크까지 미리 수행하여 더 큰 성능 개선을 제공하지만, 리소스를 더 많이 사용하므로 중요한 도메인에만 적용해야 합니다.

핵심 포인트
  • • DNS 조회는 도메인당 20~120ms 지연 발생
  • • dns-prefetch로 미리 DNS 조회
  • • preconnect는 연결까지 미리 수행
  • • 중요한 외부 도메인에만 선택적 적용
답변에 넣으면 좋은 키워드
DNS Prefetch Preconnect DNS 조회 리소스 힌트 외부 도메인 지연시간
실무에서는

Google Fonts나 외부 CDN을 사용하는 웹사이트에서 HTML head에 리소스 힌트를 추가하여 초기 로딩 성능을 개선합니다.

Follow-up 질문

dns-prefetch와 preconnect를 너무 많이 사용하면 오히려 성능이 나빠질 수 있는 이유는 무엇일까요?

7 로드밸런싱
Medium

Q. 갑자기 트래픽이 급증하여 단일 서버로 처리할 수 없는 상황입니다. 로드밸런서를 도입할 때 사용할 수 있는 주요 부하 분산 알고리즘 3가지를 설명하고, 각각 어떤 상황에 적합한지 말씀해주세요.

요청을 여러 서버에 분배하는 다양한 방식과 각 방식의 장단점을 생각해보세요.

A. 모범답안

Round Robin은 요청을 순차적으로 각 서버에 균등하게 분배하는 방식으로 구현이 간단하고 서버 성능이 동일할 때 적합합니다. Least Connection은 현재 연결 수가 가장 적은 서버에 요청을 보내는 방식으로, 요청 처리 시간이 다양할 때 효과적입니다. IP Hash는 클라이언트 IP를 해싱하여 항상 같은 서버로 라우팅하므로 세션 유지가 필요한 경우에 적합합니다. Weighted 방식을 추가하면 서버 성능에 따라 가중치를 부여하여 더 정교한 분산이 가능합니다. Health Check를 통해 장애 서버를 자동으로 제외하는 것도 중요합니다.

핵심 포인트
  • • Round Robin은 순차적 균등 분배
  • • Least Connection은 연결 수 기반 분배
  • • IP Hash는 세션 유지에 적합
  • • Health Check로 장애 서버 제외
답변에 넣으면 좋은 키워드
로드밸런서 Round Robin Least Connection IP Hash 부하 분산 Health Check
실무에서는

AWS ELB나 Nginx를 사용하여 트래픽 급증 시 여러 서버로 부하를 분산하고 가용성을 확보합니다.

Follow-up 질문

Sticky Session이 필요한 경우와 없어도 되는 경우를 구분하는 기준은 무엇일까요?

8 API 응답 최적화
Medium

Q. 모바일 앱에서 API 응답이 느려서 사용자 경험이 나쁩니다. API 응답 크기를 줄이고 속도를 개선하기 위한 방법들을 네트워크 관점에서 4가지 이상 제시해주세요.

데이터 포맷, 필요한 필드만 전송, 압축, 페이지네이션 등을 고려해보세요.

A. 모범답안

먼저 JSON 응답에 불필요한 필드를 제거하고 필요한 필드만 선택적으로 반환하는 Field Filtering을 적용합니다. 응답 데이터에 gzip 압축을 적용하여 전송 크기를 줄이고, 대량 데이터는 페이지네이션이나 커서 기반 페이징으로 분할 전송합니다. GraphQL을 도입하면 클라이언트가 필요한 데이터만 요청할 수 있어 Over-fetching을 방지할 수 있습니다. HTTP/2를 사용하여 여러 API 요청을 동시에 처리하고, 자주 조회되는 데이터는 Redis 같은 캐시를 적용하여 DB 조회를 줄입니다. 응답 시간 모니터링을 통해 느린 API 엔드포인트를 지속적으로 개선합니다.

핵심 포인트
  • • Field Filtering으로 필요한 데이터만 전송
  • • gzip 압축과 페이지네이션 적용
  • • GraphQL로 Over-fetching 방지
  • • 캐싱으로 반복 조회 최적화
답변에 넣으면 좋은 키워드
Field Filtering 페이지네이션 GraphQL 압축 캐싱 Over-fetching
실무에서는

모바일 앱 API에서 데이터 사용량을 줄이고 응답 속도를 개선하여 사용자 이탈을 방지합니다.

Follow-up 질문

API 버전 관리를 하면서 하위 호환성을 유지하려면 어떤 전략을 사용할 수 있을까요?

9 WebSocket 최적화
Hard

Q. 실시간 채팅 서비스에서 동시 접속자가 증가하면서 WebSocket 연결이 많아져 서버 부하가 높아졌습니다. WebSocket 연결 수를 관리하고 성능을 개선하기 위한 방법들을 설명해주세요.

연결 풀링, 메시지 배칭, Pub/Sub 패턴, 연결 제한 등을 생각해보세요.

A. 모범답안

먼저 하나의 WebSocket 연결로 여러 채널을 구독하는 멀티플렉싱 방식을 적용하여 연결 수를 줄입니다. 메시지를 개별 전송하지 않고 짧은 시간 동안 배칭하여 한 번에 전송하면 네트워크 오버헤드가 감소합니다. Redis Pub/Sub이나 메시지 큐를 사용하여 여러 서버 간 메시지를 효율적으로 분산하고, 불필요한 연결은 Idle Timeout으로 정리합니다. Heartbeat 간격을 적절히 조정하여 네트워크 트래픽을 줄이고, 서버 확장 시 WebSocket 세션을 Sticky Session으로 관리하거나 Redis에 세션 정보를 저장합니다. 클라이언트 수가 매우 많다면 Socket.io 클러스터링이나 전용 메시징 서비스 도입을 고려합니다.

핵심 포인트
  • • 연결 멀티플렉싱으로 연결 수 감소
  • • 메시지 배칭으로 오버헤드 감소
  • • Redis Pub/Sub으로 서버 간 메시지 분산
  • • Idle Timeout과 적절한 Heartbeat 설정
답변에 넣으면 좋은 키워드
WebSocket 멀티플렉싱 배칭 Pub/Sub Heartbeat Idle Timeout
실무에서는

대규모 실시간 채팅이나 협업 도구에서 서버 리소스를 효율적으로 사용하고 동시 접속자 수를 확장합니다.

Follow-up 질문

WebSocket 대신 Server-Sent Events(SSE)를 사용하는 것이 더 나은 경우는 언제일까요?

10 이미지 최적화
Easy

Q. 웹페이지에서 이미지 로딩이 전체 성능의 병목이 되고 있습니다. 네트워크 전송 관점에서 이미지 최적화를 위한 방법들을 4가지 이상 제시하고, 각각을 간단히 설명해주세요.

이미지 포맷, 크기 조정, 지연 로딩, 반응형 이미지 등을 생각해보세요.

A. 모범답안

먼저 WebP나 AVIF 같은 최신 이미지 포맷을 사용하여 파일 크기를 30~50% 줄이고, 실제 표시 크기에 맞게 이미지를 리사이징하여 불필요하게 큰 원본을 전송하지 않습니다. Lazy Loading을 적용하여 뷰포트에 보이지 않는 이미지는 나중에 로드하고, srcset과 sizes 속성으로 반응형 이미지를 제공하여 디바이스에 최적화된 크기를 전달합니다. 이미지 스프라이트나 SVG를 활용하여 HTTP 요청 수를 줄이고, CDN에 이미지를 배포하여 지리적으로 가까운 곳에서 제공합니다. 중요한 히어로 이미지는 preload로 우선 로딩하고, 나머지는 우선순위를 낮춥니다.

핵심 포인트
  • • WebP/AVIF로 파일 크기 감소
  • • 실제 표시 크기로 리사이징
  • • Lazy Loading으로 초기 로딩 개선
  • • srcset으로 반응형 이미지 제공
답변에 넣으면 좋은 키워드
WebP Lazy Loading srcset 리사이징 CDN 이미지 최적화
실무에서는

이미지 중심의 쇼핑몰이나 포트폴리오 사이트에서 사용자 경험과 전환율을 개선하기 위해 필수적으로 적용합니다.

Follow-up 질문

Progressive JPEG와 Baseline JPEG의 차이는 무엇이고, 언제 Progressive를 사용하면 좋을까요?

댓글 0

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

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