포스트

주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 7장 I/O 병목, 어떻게 해결하지

백엔드 서비스는 CPU보다 I/O 때문에 느려지는 경우가 많다.
DB, 파일, 네트워크, 외부 API 모두 I/O 자원이다.

I/O 병목이 보이는 신호

  • CPU는 남는데 응답 시간이 느리다
  • 스레드가 많이 쌓인다
  • connection pool 대기가 늘어난다
  • 외부 호출이나 DB 호출 시간이 길다

왜 중요한가

I/O 병목은 애플리케이션 코드 최적화만으로는 해결되지 않는 경우가 많다.

  • DB 쿼리 지연
  • 디스크 flush 지연
  • 네트워크 지연
  • 외부 API 응답 지연

같은 원인을 분리해야 한다.

해결 방향

1. 병렬화

독립적인 I/O는 병렬 실행으로 줄일 수 있다.
다만 무한정 병렬화하면 오히려 downstream 부하만 키운다.

2. 캐시

반복 조회는 캐시가 가장 강력할 수 있다.

3. 배치와 스트리밍 구분

대량 데이터를 한 번에 읽지 말고 청크/스트림으로 처리하는 것이 낫다.

4. 비동기/큐 분리

응답 경로에서 바로 처리할 필요 없는 I/O는 비동기로 넘길 수 있다.

정리

I/O 병목은 “느린 코드” 문제가 아니라,
대기 시간이 어디서 발생하는지와 자원 경계를 어떻게 나눌지의 문제다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

댓글

아직 댓글이 없습니다