이 문장도 현업 기준으로 정확합니다.
그리고 앞 문장보다 한 단계 더 깊습니다.
스케일은 트래픽이 아니라 상태 관리에서 갈린다
이걸 실무 언어로 풀면 이겁니다.
왜 트래픽은 문제가 아닌가
트래픽 자체는 요즘 거의 문제 아닙니다.
- 로드밸런서 → 수평 확장
- CDN → 정적 리소스 분산
- 오토스케일링 → 인스턴스 늘리면 끝
요청 수(QPS)는 돈 문제지, 구조 문제는 아닙니다.
진짜 갈리는 지점: 상태(State)
1. 세션
- 서버 세션?
- 스케일 아웃 순간 깨짐
- Sticky Session?
- 확장성 포기
- Redis 세션?
- 이제부터 락·TTL·장애 전파가 시작됨
👉 “로그인 유지” 하나로 아키텍처 레벨 결정됨
2. 트랜잭션
- 단일 DB일 땐 멀쩡
- 샤딩 / 분산 들어가는 순간:
- 2PC? 성능 박살
- 보상 트랜잭션? 로직 지옥
👉 비즈니스 일관성 vs 확장성의 전쟁
3. 캐시 일관성
- 캐시 없으면 성능 안 나옴
- 캐시 넣으면:
- 최신성 보장?
- 장애 시 fallback?
- 캐시 스탬피드?
👉 캐시는 성능 장치가 아니라 상태 복제 장치
4. 비동기 처리
- 큐 넣는 순간:
- exactly-once는 환상
- 중복 처리 설계 필수
- idempotency 없으면 재앙
👉 상태를 “나중에 반영”하기 시작한 순간 난이도 급상승
그래서 스케일 잘 되는 시스템의 공통점
업무적으로 정리하면 딱 3줄입니다.
- 상태를 최대한 없앤다
- 있다면 한 곳에 모은다
- 언젠간 틀려도 괜찮게 만든다
기술 스택보다 이 철학이 먼저입니다.
LIST
'Spring & Backend' 카테고리의 다른 글
| 빈 라이프사이클을 모르면 버그는 ‘느낌’으로만 잡는다 (0) | 2026.02.02 |
|---|---|
| 스프링은 확장에 강하다. 대신 초기 설계를 대충하면 고통도 같이 확장된다 (0) | 2026.02.02 |
| 백엔드는 보이지 않지만, 모든 장애는 거기서 시작한다 (0) | 2026.02.02 |
| 설정이 적은 코드가 아니라 의도가 분명한 코드가 좋은 스프링 코드다 (0) | 2026.02.02 |
| AOP는 문제 해결이 아니라 문제 은닉 도구가 될 수 있다 (0) | 2026.02.02 |
