디벨롭
로그인
디벨롭
로그인
[대규모 시스템 설계] 1장. 단일 서버 시스템 설계(3)
박상준
·
2024년 6월 1일
팔로우
0
0
가상면접으로 배우는 대규모 시스템 설계
목록 보기
3/5
무상태(stateless) 웹 계층
웹 어플을 수평적으로 확장하려면, 상태 저보가 웹 계층에서 제거되어야 한다.
상태 정보 의존적인 아키텍처
상태 정보를 보관하는 서버는 클라이언트 정보, 즉 상태를 유지하여 요청들 사이에 공유가 되도록 한다.
반면 무상태 서버에는 해당 상태 정보가 없다.
상태 정보 의존적인 아키텍처의 문제점
그림 참고..
고정 세션 문제
같은 클라이언트로부터의 요청은 항상 같은 서버로 전송되어야함.
대부분의 로드 밸런서는 해당 문제를 지원하기 위해 고정 세션(sticky session) 기능을 제공한다.
하지만 해당 기능은 로드 밸런서에 부담을 준다고 한다.
유연성의 저하
로드 밸런서 뒤에 서버를 추가하거나 제거하기가 까다로워진다.
서버의 장애를 처리하기도 복잡해진다.
상태 정보 의존적인 아키텍처 예시
사용자 A 의 세션 정보와 프로파일 이미지의 경우 서버 1로 저장.
요청이 서버 2로 전송되면 인증이 실패해버림
서버 2에는 해당 세션 정보가 없음..
무상태(stateless) 아키텍처
상태 정보를 웹 서버로부터 분리하여 공유 저장소에 보관함으로써 단순하고 안정적이며, 확장이 용이한 구조를 제공함.
웹 서버 간의 상태 정보 의존성을 제거해서 트래픽에 따라 서버를 유연하게 추가하거나 제거가 가능하다.
무상태 아키텍처의 특징
공유 저장소의 사용
모든 웹 서버는 필요할 때 상태정보를 공유 저장소에서 가져온다
상태 정보는 웹 서버로부터 물리적으로 분리되어 있다(DB 서버)
단순해짐
상태 정보 의존성이 없음. ⇒ 웹서버가 단순해짐
웹 서버의 장애가 발생해도 다른 서버가 요청을 처리할 수 있음 ⇒ 안정성이 높다.
규모 확장에 용이하다.
상태 정보가 서버에 없기에 웹 서버를 추가하거나 제거하기 쉽다
자동 규모 확장 기능을 통해 트래픽에 따라 웹 서버를 동적으로 조절가능
기본 무상태 아키텍처
사용자 A B C 가 HTTP 요청을 웹 서버로 전송한다.
웹 서버는 필요한 경우
공유 저장소(shared storage)
로부터 상태 정보를 가져온다
상태 정보가 웹 서버로부터 분리되어 있어서, 사용자의 요청은 어떤 웹 서버로도 전달될 수 있다.
글로벌적인 확장을 위해
전 세계 사용자에게 쾌적한 서비스 제공을 위해, 여러 데이터 센터를 지원하는 것이 좋음.
가용성 증대와 UX 개선이 가능하다.
박상준
이전 블로그 : https://oth3410.tistory.com/
팔로우
이전 포스트
[대규모 시스템 설계] 1장. 단일 서버 시스템 설계(2)
다음 포스트
[대규모 시스템 설계] 1장. 단일 서버 시스템 설계(4)
0개의 댓글
댓글 작성