| 구분 | 상태 의존적 아키텍처 (Stateful Web Architecture) | 무상태 아키텍처 (Stateless) |
|---|---|---|
| 개념 | 웹 서버 인스턴스가 사용자 세션/상태 정보를 자체 메모리나 로컬 스토리지에 보관하는 방식 | 웹 서버는 상태를 저장하지 않고, 세션/상태는 외부 저장소(세션 스토어, 캐시, DB, JWT 등)에 위임 |
| 요청 처리 | 같은 사용자가 항상 같은 서버에 연결되어야 함 → 흔히 스티키 세션(Sticky Session) 로드밸런싱과 함께 사용됨 | 모든 요청이 독립적 → 어떤 서버가 처리해도 동일 결과 반환 |
| 특징 | 각 서버가 사용자 세션을 직접 관리 → 사용자별 상태 의존성 존재 특정 서버 장애 시, 해당 서버의 세션 정보는 유실될 수 있음 서버 수평 확장 시 세션 불균형 또는 마이그레이션 문제 발생 | Share-nothing 원칙: 서버 인스턴스 간 상태 공유 필요 없음 로드밸런서가 자유롭게 요청을 분산 가능 서버 확장/축소 용이 |
| 장점 | 구현 단순, 빠른 개발 추가 인프라 불필요 | 확장성 우수: 인스턴스를 자유롭게 증감 가능 가용성 높음: 특정 서버 장애에도 서비스 지속 배포 용이: 롤링/블루-그린/카나리 배포 유리 |
| 단점 | 확장성 제한: 특정 서버에 세션 집중 시 부하 불균형 가용성 낮음: 서버 장애 시 세션 유실 배포 어려움: 롤링 업데이트 시 세션 마이그레이션 필요 | 초기 구현 시 외부 세션 스토어/토큰 관리 등 아키텍처 복잡성 증가 네트워크 I/O 부하 (매 요청마다 외부 스토어 접근 시) |
| 항목 | 카나리 | 롤링 | 블루-그린 |
|---|---|---|---|
| 전환 방식 | 일부 트래픽(예: 1~10%)만 새 버전으로 보내서 위험을 낮추는 점진 배포 | 같은 풀의 인스턴스를 조금씩 교체해 전체를 새 버전으로 전환 | 두 개의 완전한 환경(Blue=현재, Green=새 버전)을 준비해 두고 스위치(트래픽 전환)로 교체 |
| 장점 | 실사용자 트래픽으로 조기 검증 문제 시 빠른 롤백 | 무중단에 가깝고 인프라 비용 추가 적음 | 즉시 전환과 즉시 롤백 용이 배포 위험 최소화 |
| 단점 | 트래픽 라우팅 모니터링 복잡도 증가 | 상태 의존 구조에선 드레이닝/세션 처리 필요 전체 전환 시간 길 수 있음 | 두 환경 동시 유지 비용↑ 데이터/상태 동기화 고려 필요 |
사용자를 어떤 데이터센터(리전)으로 라우팅할 것인가?
장애 발생 시, 다른 센터로 신속하게 우회(Failover) 가능한가?
정상 복구(Failback) 시 데이터 일관성을 어떻게 맞출 것인가?
DNS 기반 라우팅: TTL 캐싱으로 인해 우회 반영 지연
GeoDNS: 단순히 지리적 위치만 고려 → 실제 부하/장애 반영 한계
Anycast: 가장 가까운 경로 선택은 가능하나, 세밀한 트래픽 제어 불가
실시간 헬스체크 + 글로벌 로드밸런서 필요 → 구현 복잡
여러 데이터센터에 걸친 DB·캐시·세션을 어떻게 동기화할 것인가?
강한 일관성을 보장할지, 최종 일관성을 허용할지?
충돌(conflict) 발생 시 해결 방법은 무엇으로 할지?
Asynchronous Communication)을 지원하는 소프트웨어 컴포넌트| 역할 | 설명 |
|---|---|
| 비동기 처리 지원 | 요청을 즉시 처리하지 않고 큐에 적재 → 나중에 처리 가능 생산자/소비자 간 실행 속도 차이를 완화 |
| 시스템 간 결합도 감소 (Decoupling) | Producer와 Consumer가 직접 연결되지 않고 큐를 매개로 통신 → 서비스 간 의존성 완화, 독립성 향상 |
| 버퍼링 (Buffering) | 갑작스러운 요청 폭주 시 큐가 완충 역할 → 소비자는 처리 가능한 속도에 맞춰 꺼내 처리 |
| 확장성 (Scalability) | 소비자 인스턴스를 수평 확장하면 큐의 메시지를 병렬 처리 가능 |
| 내결함성 (Fault Tolerance) | 소비자가 일시적으로 죽어도 메시지는 큐에 남아 손실되지 않음 → 장애 복구 후 다시 처리 가능 |
| 구분 | 사업 규모가 커질 때 | 이유 |
|---|---|---|
| 로그 (사건 기록) | 서버 수십·수백 대 → 개별 확인 불가 중앙화·구조화 필요 (JSON 로그, ELK, Loki) 운영자/개발자가 공통 포맷으로 조회 | 단일 관찰점(Single Pane of Glass) 확보 필수 오류 분석, 보안 감사, SLA 추적 근거 |
| 메트릭 (상태 지표) | 호스트 단위 메트릭: 리소스 사용률(여전히 필요) 종합 메트릭: 응답 지연(p95/p99), 오류율, 트래픽, 포화도(Saturation) 핵심 비즈니스 메트릭: 주문 성공률, 결제 실패율, DAU/MAU, 전환율 등 SLO 기반 알림 체계 도입 | 로그는 “사후 분석”, 메트릭은 “사전 감지/예방”에 유리 대규모 환경에서는 서비스 지표+비즈니스 지표가 시스템 신뢰성과 직접 연결 |
| 자동화 (운영 지속가능성) | 자동화된 배포 전략 필요 (카나리, 롤링, 블루-그린) 메트릭 기반 알람 → 런북 자동 실행 (스케일아웃, 재시도, 롤백) IaC(Infrastructure as Code) 도입으로 환경 일관성 확보 | 운영자가 병목이 되지 않도록 시스템이 스스로 회복(Self-Healing)·확장(Auto-Scaling)해야 지속가능 |