NestJS ch9-3 / state and signals

로컬 상태는 밖으로 빼고, 확장 지표는 병목 위치별로 봅니다

수평 확장이 안정적이려면 모든 인스턴스가 교체 가능해야 합니다. 동시에 어떤 자원이 먼저 막히는지 측정해야 합니다.

Instance

NestJS 인스턴스

요청 처리 코드는 같지만 세션과 파일을 오래 붙들면 교체 가능성이 깨집니다.

->
Redis

세션 / 캐시 / rate limit

짧고 빠르게 바뀌는 공유 상태는 Redis 같은 중앙 저장소로 보냅니다.

->
Storage

업로드 파일

로컬 디스크 대신 object storage나 공유 볼륨을 사용합니다.

->
Queue

비동기 작업

작업 대기열과 consumer lag를 지표로 보고 처리량을 조절합니다.

확장 후 봐야 할 신호

병목 위치별 측정
APIRPS / p95 latency요청량과 응답 시간이 같이 오르는지 봅니다.
Error5xx / timeout특정 인스턴스 또는 의존성 실패인지 나눕니다.
DBpool wait / slow query인스턴스 증가가 DB 대기열을 만들 수 있습니다.
Queuelag / retryconsumer 수와 처리 실패가 균형인지 확인합니다.