- 백엔드 아키텍처 기초 1
- 백엔드 아키텍처 기초 2 - 응답시간 개선
- 백엔드 아키텍처 기초 4 - 데이터 센터
- 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화
- 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장
백엔드 아키텍처 기초 1에서는 규모에 따른 웹 계층을 수평적 확장하는 방법을 알아봤다.
웹 서버를 Scale Out 하더라도 로드 밸런서를 통해 트래픽 분산을 시키는 방법이다.
하지만 사용자 상태 정보와 같은 점은 생각하지 않았다.
이번에는 그에 관해 고민하고 정리한다.
웹 서버끼리 상태 정보는 어떻게 하나요?
🚀 무상태(stateless) 웹 계층
- 상태 정보를 웹 계층에서 제거하고, DB 같은 지속성 저장소에 보관하고 필요할 때 가져오는 것
📚 상태 정보 의존적인 아키텍처
- 서버는 클라이언트(사용자)의 상태 정보를 유지하여 요청들 사이에 공유되도록 함
- 같은 클라이언트(사용자)로부터의 요청은 항상 같은 서버로 전송되어야 하는 단점 존재
- 즉, 사용자 A가 서버 2에 요청하면 새로 로그인을 해야 함
- 이를 위해 로드밸런서가 고정 세션(sticky session) 기능 제공
- 하지만 고정 세션도 하나의 서버에만 트래픽이 몰릴 수 있는 문제점 존재
- 또한, 고정 세션을 사용하면 서버 추가 및 제거도 까다로울 수 있음
📚 무상태 아키텍처
- 클라이언트 요청은 어떤 웹 서버로도 전달될 수 있음
- 웹 서버는 상태 정보가 필요할 경우 공유 저장소에서 데이터 가져옴
- 즉, 상태 정보는 웹 서버로부터 물리적으로 분리되어 있음
- 이 구조는 단순하고 안정적이며 규모 확장 쉬움
- 공유 저장소는 RDBMS, Memcached/Redis, NoSQL 일 수 있음
- 자동 규모 확장(autoscaling)이 지원되는 저장소 사용을 추천
🚀 무상태 웹 계층이 추가된 아키텍처 설계
- 상태 정보가 웹 서버들로부터 제거
- 트래픽 양에 따라 웹 서버 추가 및 제거만 해도 자동으로 규모 확장 가능
'개발 etc' 카테고리의 다른 글
백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 (0) | 2023.07.17 |
---|---|
백엔드 아키텍처 기초 4 - 데이터 센터 (0) | 2023.07.07 |
백엔드 아키텍처 기초 2 - 응답시간 개선 (0) | 2023.06.26 |
AWSome Day 온라인 컨퍼런스 후기 (2) | 2023.06.21 |
백엔드 아키텍처 설계 기초 (6) | 2023.06.19 |