기초 개념, 기술 면접 대비

성능 최적화 면접 퀴즈

빠르고 효율적인 시스템

프로파일링, 병목 분석, 로드 테스트 등 백엔드 성능 최적화 기법을 마스터하세요.

로그인 없이 풀어보기
20개 문제, 무료

학습할 핵심 개념

성능 지표 (Latency, Throughput, P99)
프로파일링 도구 활용
데이터베이스 최적화
캐싱 전략
Connection 관리
비동기 처리

핵심 개념 미리보기

성능 최적화 면접에서 꼭 나오는 개념을 미리 확인하세요

성능 측정과 병목 분석

핵심

성능 측정과 병목 분석

핵심 지표

지표의미기준
Latency요청-응답 시간API < 200ms
Throughput초당 처리량서비스에 따라 다름
p99상위 1% 응답 시간평균보다 중요!
Error Rate에러 비율< 0.1%

병목 찾기 순서

전체 시간에서 작은 비중을 차지하는 구간을 최적화해도 전체는 그 비중만큼만 줄어든다 한 요청의 시간 300ms DB 대기 270ms 코드 30ms 코드를 열 배 빠르게 하면 270ms 그대로 300ms 가 273ms 가 된다. 9퍼센트 개선이다 가장 큰 구간을 먼저 재고 그것부터 고친다 코드를 무한히 빠르게 해도 전체는 10퍼센트를 넘어 줄지 않는다
  1. 모니터링: 어떤 API가 느린지 확인
  2. DB 쿼리 분석: slow query log, EXPLAIN
  3. 애플리케이션 프로파일링: CPU, 메모리, 스레드
  4. 인프라: 네트워크, 디스크 I/O

재기 전에 고치면 대개 틀린다

성능 문제는 짐작이 잘 안 맞습니다. 코드를 읽고 느릴 것 같은 곳을 고치면, 그 구간이 전체의 몇 퍼센트였는지 모르고 고친 것이 됩니다.

짐작실제로 흔한 것
반복문이 느리다DB 를 기다리는 시간이 대부분이다
직렬화가 느리다같은 질의를 여러 번 부르고 있다
서버가 부족하다연결 풀 자리를 기다리고 있다

기다리는 시간과 일하는 시간을 나눠 재는 것이 첫 걸음입니다. CPU 사용률이 낮은데 느리면 어딘가를 기다리는 것이고, 그것은 서버를 늘려도 줄지 않습니다.

무엇을 재나

지표무엇을 알려 주나
구간별 시간어디가 긴지
호출 횟수한 번이 아니라 여러 번인지
상위 백분위평균에 숨은 느린 요청

호출 횟수가 특히 값싼 발견을 줍니다. 한 번에 20ms 인 질의가 화면 하나에서 50번 돌면 1초입니다. 그 질의를 빠르게 하는 것보다 횟수를 줄이는 것이 훨씬 크게 듣습니다.

실무 포인트

  • 평균보다 p99가 더 중요 (사용자 경험에 직접 영향)
  • 대부분의 병목은 DB 쿼리 → EXPLAIN 먼저 확인
  • 추측하지 말고 측정부터 시작
면접에서 이렇게 나옵니다
  • Q.서비스 성능 병목을 어떤 순서로 찾나요?
  • Q.프로파일러 결과에서 self time과 total time을 어떻게 구분해 읽나요?
  • Q.APM 도구로는 무엇을 보고 병목을 판단하나요?

지연 시간과 처리량 (p50/p95/p99)

핵심

지연 시간과 처리량

백분위의 의미

지표의미
p50요청 절반이 이보다 빠름 (중앙값)
p9520건 중 1건은 이보다 느림
p99100건 중 1건은 이보다 느림
max최악 1건. 노이즈가 크다

평균이 위험한 이유

평균은 느린 소수를 숨기므로 상위 백분위를 함께 본다 요청 100건을 늘어놓으면 99건은 20ms 1건은 3,000ms 평균은 50ms 다. 아무 문제 없어 보인다 상위 1퍼센트는 3,000ms 다. 100명 중 한 명이 떠난다 한 화면이 요청 열 개를 부르면 그중 하나가 걸릴 확률이 커진다 그래서 평균이 아니라 상위 백분위를 목표로 둔다
응답시간(ms) 10건
50 50 50 50 50 50 50 50 50 4000

평균 445  <- 아무도 겪지 않은 값
p50   50
p90 4000  <- 실제 불만이 나오는 값

둘은 같이 좋아지지 않는다

처리량을 올리려고 한 번에 많이 묶으면 각 요청의 지연이 늘어납니다. 지연을 줄이려고 바로바로 보내면 묶는 이득이 사라집니다.

무엇을 하면처리량지연
여러 개를 모아 한 번에 처리오른다길어진다
오는 대로 바로 처리낮다짧다
일꾼을 늘린다오른다대기가 줄어 짧아진다

셋째만 둘을 함께 좋게 합니다. 그런데 한계까지만 그렇습니다. 그 뒤로는 일꾼을 늘려도 처리량이 안 오르고 대기만 늘어납니다.

목표를 어떻게 적나

"빠르게" 는 목표가 아닙니다. 세 가지가 함께 있어야 확인할 수 있는 목표가 됩니다.

어느 지점에서 재나: 사용자 화면인가 서버 안인가
어느 백분위인가: 상위 1퍼센트인가 절반인가
어느 부하에서인가: 초당 100인가 1만인가

부하가 빠진 목표가 가장 흔합니다. 한가할 때 50ms 인 것은 아무 약속이 아닙니다.

실무 포인트

  • 한 화면이 내부 API 10개를 부르면 그중 하나가 꼬리 지연에 걸릴 확률이 커진다. 팬아웃이 클수록 p99가 체감을 지배한다
  • 처리량과 지연은 독립이 아니다. 동시성은 대략 처리량 곱하기 평균 지연이므로, 지연이 2배면 같은 처리량에 커넥션과 스레드가 2배 필요하다
  • 자원이 포화에 가까워지면 지연은 선형이 아니라 급격히 튄다. 여유를 남긴다
  • 백분위는 평균할 수 없다. 서버별 p99를 평균 내지 말고 원본 분포에서 계산한다
면접에서 이렇게 나옵니다
  • Q.평균 응답시간 대신 p99를 보는 이유는 무엇인가요?
  • Q.p99가 나쁜데 p50은 정상일 때 어떻게 원인을 찾나요?
  • Q.처리량을 높였는데 지연이 나빠지는 이유는?

관측성 3요소 (메트릭, 로그, 트레이스)

핵심

관측성 3요소

신호별 역할

지표로 알아채고 추적으로 어디인지 좁히고 로그로 무슨 일인지 본다 지표 뭔가 나빠졌다는 것을 안다 값싸고 넓다 추적 어느 구간인지 좁힌다 일부만 남긴다 로그 그 자리에서 무슨 일이었는지 본다 비싸고 깊다 순서를 뒤집으면 로그를 뒤지며 어디를 볼지 찾게 된다 넓은 것에서 좁은 것으로 내려가는 것이 조사 순서다 셋을 잇는 것은 요청 번호다. 그것이 없으면 따로따로 본다
신호답하는 질문성격
메트릭지금 문제가 있나?집계 수치, 저비용과 장기 보관
트레이스이 요청의 어디가 느렸나?요청 단위 경로, 표본 수집
로그그때 정확히 무슨 일이 있었나?단건 이벤트, 고비용과 상세

조사 순서

메트릭 이상 감지 -> 트레이스로 느린 구간 특정 -> 로그로 원인 확인

골든 시그널

  • 지연(Latency), 트래픽(Traffic), 오류(Errors), 포화도(Saturation)
  • 넷 중 둘만 본다면 지연과 오류. 사용자가 가장 먼저 느끼는 신호다

무엇을 남기지 않을지도 정한다

셋을 다 남기면 비용이 서비스 비용을 넘길 수 있습니다. 그래서 무엇을 버릴지를 함께 정합니다.

신호줄이는 방법
지표이름표 조합을 줄인다. 사용자 번호를 이름표로 쓰지 않는다
추적일부만 남긴다. 느린 것과 실패한 것은 다 남긴다
로그수준을 나누고 같은 줄이 반복되면 묶는다

첫째가 가장 잘 터집니다. 이름표에 값의 종류가 많은 것을 넣으면 조합이 곱해져 지표 수가 폭발합니다. 사용자 번호나 주소를 이름표로 쓰면 그렇게 됩니다.

사고 때 실제로 보는 순서

평소에 만들어 두지 않으면 사고 때 쓸 수 없습니다.

지금 나쁜지: 요청 수, 실패율, 지연 상위 백분위
어디가 나쁜지: 구간별 시간
그 자리에서 무슨 일인지: 그 요청 번호의 로그

셋을 잇는 것이 요청 번호입니다. 그것이 로그에 없으면 로그를 뒤지며 짐작하게 됩니다.

실무 포인트

  • 로그에 요청 식별자(trace id)를 넣는다. 없으면 트레이스와 로그를 이을 수 없어 조사 시간이 몇 배가 된다
  • 성공 로그는 표본만, 실패 로그는 전량. 로그 비용은 트래픽에 비례해 커진다
  • 메트릭 라벨에 사용자 ID처럼 값의 종류가 많은 항목을 넣지 않는다. 시계열 수가 폭발한다
  • 알림은 원인이 아니라 사용자 영향(증상)에 건다. 원인 기반 알림은 오탐이 많다
면접에서 이렇게 나옵니다
  • Q.메트릭, 로그, 트레이스를 각각 언제 사용하나요?
  • Q.장애가 발생했을 때 어떤 순서로 조사하나요?
  • Q.로그 비용을 줄이면서 조사 가능성을 유지하는 방법은?

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

성능 최적화 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

서비스 성능 병목을 어떤 순서로 찾나요?

성능 측정과 병목 분석 개념 정리 보기
Q.

프로파일러 결과에서 self time과 total time을 어떻게 구분해 읽나요?

성능 측정과 병목 분석 개념 정리 보기
Q.

APM 도구로는 무엇을 보고 병목을 판단하나요?

성능 측정과 병목 분석 개념 정리 보기
Q.

평균 응답시간 대신 p99를 보는 이유는 무엇인가요?

지연 시간과 처리량 (p50/p95/p99) 개념 정리 보기
Q.

p99가 나쁜데 p50은 정상일 때 어떻게 원인을 찾나요?

지연 시간과 처리량 (p50/p95/p99) 개념 정리 보기
Q.

처리량을 높였는데 지연이 나빠지는 이유는?

지연 시간과 처리량 (p50/p95/p99) 개념 정리 보기
Q.

서버 여러 대의 p99를 하나의 값으로 어떻게 집계하나요?

지연 시간과 처리량 (p50/p95/p99) 개념 정리 보기
Q.

메트릭, 로그, 트레이스를 각각 언제 사용하나요?

관측성 3요소 (메트릭, 로그, 트레이스) 개념 정리 보기

이런 점이 좋아요

실무 성능 개선

시스템 안정성

비용 효율화

지금 바로 시작하세요

무료로 성능 최적화 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.