- 스테이트리스성의 정의
- 스테이트풀 서버의 결점 및 스테이트리스 서버의 장점
- 스테이트리스 서버의 결점
- 서버에서의 상태관리
- 예시
- 자기기술적 메세지
스테이트리스란, 아키텍처 스타일의 제약조건 중 하나로 서버에서 상태를 관리하지 않는 것을 뜻한다. 여기서 상태란, 사용자가 로그인할때부터 로그아웃할때까지 행하는 일련의 조작을 저장하는 세션 상태를 의미한다. 반대 개념으로는 스테이트풀이 있는데, 이는 서버에서 상태를 저장하는 것을 의미한다.
<웹을 지탱하는 기술> 에서는 패스트푸드점에서 햄버거를 주문하는 예시를 들고 있다. 여기서 점원에게 주문을 시작하는 것을 로그인으로, 주문이 끝나는 것을 로그아웃으로 대응시킬 수 있다. 이 사이에서 고객은 햄버거를 주문하거나, 콜라를 주문하거나 하게 되는데, 이를 기록하는 것이 세션 상태이다.
서버에 상태를 저장하지 않으므로, 세션관리를 위해서는 서버가 세션 상태를 알게 하기 위한 다른 방법이 필요하다. 클라이언트가 세션 상태를 매번 전달해주는 방식을 취할 수 있는데, 이때 상태를 포함하고 있는 메세지를 자기 기술적 메세지라고 부른다.
- 특정불가
- 상태 동기화
- 확장성
더욱 더 많은 클라이언트의 요청을 처리하기 위해서는, 서버의 대수를 늘려야 한다. 스테이트풀 서버에서 불특정 다수의 클라이언트로 부터의 요청을 받고 있는 상황을 생각해보자. 불특정 요청을 모든 서버에서 처리할 수 있으려면, 서버간의 세션 상태에 대한 동기화가 이루어져야 할 것이다.
일반적으로, 상태를 동기화 시키는 로직은 만들기 어렵고, 그만큼 큰 오류가능성을 내포하고 있다. 따라서, 서버를 단순하게 유지할 수 없게 되고, 확장성이 떨어지게 된다.
- 퍼포먼스
스테이트리스는 자기 기술적 메세지를 사용하므로, 메세지의 데이터가 커지고, 따라서 네트워크의 대역폭을 많이 사용하게 된다. 이는 어플리케이션의 퍼포먼스 저하로 이어진다. 또한, 인증과정을 반복적으로 진행하도록 설계할 경우에는 추가적으로 부하가 걸리게 된다.