피드로 돌아가기
Dev.toBackend
원문 읽기
API 성능 저하의 실제 원인이 데이터베이스만이 아닌 요청 배칭, 커넥션 재사용, 동기 로깅, 캐싱, 페이로드 압축, 커넥션 풀링, 직렬화 포맷 선택에 있음을 파악
Lately, I’ve been digging into what actually slows down APIs. Here are a few bottlenecks that changed how I think about performance
AI 요약
Context
API 성능 문제를 분석할 때 흔히 데이터베이스 쿼리 성능에만 집중하게 되지만, 실제로는 네트워크 호출 방식, 커넥션 관리, 로깅 방식, 데이터 포맷 등 여러 계층에서 병목이 발생한다.
Technical Solution
- 데이터 요청 방식을 작은 요청 다중 전송에서 배치 요청으로 변경: 네트워크 오버헤드 감소
- 요청별 커넥션 재생성 대신 커넥션 재사용: TCP 핸드셰이크 반복 제거
- 동기 로깅을 비동기로 변경: 쓰기 작업 후 시스템 대기 시간 제거
- 동일 응답에 대한 반복 요청 제거: 적절한 계층에서의 캐싱 도입
- JSON 압축 또는 Protobuf로 직렬화 포맷 변경: 페이로드 크기 감소
- 요청별 데이터베이스 커넥션 생성 대신 풀링 도입: 커넥션 설정 비용 제거
Key Takeaway
API 성능 최적화는 단일 계층이 아닌 요청 배칭, 커넥션 재사용, 비동기 처리, 캐싱, 데이터 압축, 풀링 등 다층적 전략을 동시에 검토해야 한다.
실천 포인트
API 개발 시 데이터베이스 쿼리 최적화를 진행하기 전에 먼저 다중 소규모 요청을 배치 요청으로 통합하고, 커넥션 풀링을 활성화하며, 동기 로깅을 비동기로 전환하고, 자주 요청되는 데이터에 캐싱을 적용하고, JSON 응답을 압축하거나 Protobuf 같은 효율적 포맷으로 변경하면 데이터베이스 성능 개선 못지않은 지연시간 단축을 달성할 수 있다.