seong
02 Stateful, Stateless 본문
세션 상태
- Host P 와 Host Q가 서로 통신 인증이 된 상태.
- 클라이언트와 서버 간 통신이 인증이 된 상태이다.
- 세션이 된 상태에서는 데이터 송수신이 가능하다.
세션 정보
- 하나의 세션에서 Client → Server 전송할 데이터의 정보이다.
- Server는 Client가 전송하는 데이터를 모두 수신할 때까지 세션 상태를 유지한다.
Stateful
- 세션이 종료될 때까지 Client의 세션 정보를 저장하는 네트워크 프로토콜이다.
- Ex) TCP 3 -way Hand Shake, 온라인 뱅킹 등등..
- 장점
- 서버가 클라이언트의 세션 정보를 저장하고 있으므로, 연결이 끊긴다 하더라도, 다시 그 지점부터 시작할 수 있다.
- 단점
- 속도가 느리다는 단점이 있다.
- 통신이 끊기면, 클라이언트의 세션 정보를 새로운 서버로 옮겨 주어야 하기 때문에 속도, 확장성 면에서 좋지 못하다.
Stateless(무상태)
- Server가 Client의 세션 상태 및 정보를 저장하지 않는 네트워크 프로토콜이다.
- Ex) UDP 프로토콜, 온라인 검색
- Client가 요청한 것에만 Server가 응답해 주는 방식이다.
- Client가 송신하려 했던 정보를 Server가 모두 수신했는지 확인해 주지 않는다.
- 어떠한 이전의 통신과도 연관이 없으며 각각의 요청에 대해서 독립적이다.
- 장점
- Stateful에 비해 속도가 빠르며, 확장성이 좋다.
- 각각의 통신, 요청에 대한 응답은 모두 독립적이기 때문에 세션 상태 및 정보를 저장하지 않기 때문이다.
- 대량의 트래픽 발생 시에도 대처를 수월하게 가능하다.
- 단점
- 송수신 할 때마다 서버가 세션 상태 및 정보를 저장하지 않기 때문에 송신할 때마다 전송해야 할 데이터가 많다.
- Stateful 예시
- 만약 쇼핑몰이 있다고 가정을 하자.
- 구매자 A, 판매자 B가 있다.
- 구매자 A : 이 책의 가격은 얼마인가요?
- 판매자 B : 이 책은 1만 원입니다.
- 구매자 A : 5개 구매하겠습니다.
- 판매자 B : 5개 총 5만 원입니다.
- 구매자 A : 카드 결제하겠습니다.
- 판매자 B : 5만 원 결제 완료되었습니다.
⇒ 여기선 판매자가 모두 B가 진행하므로 거래가 정상적으로 완료된다.
하지만 판매자가 중간에 C로 바뀌게 된다면
- 구매자 A, 판매자 B, 판매자 C
- 구매자 A : 이 책의 가격은 얼마인가요?
- 판매자 B : 이 책은 1만 원입니다.
-
- 구매자 A : 5개 구매하겠습니다.
- 판매자 C : ?
-
- 구매자 A : 카드 결제하겠습니다.
- 판매자 C : ?
⇒ 판매자가 바뀌면 거래가 정상적으로 이루어지지 못하게 된다.
- Stateless 예시
- 구매자 A, 판매자 B가 있다.
- 구매자 A : 이 책의 가격은 얼마인가요?
- 판매자 B : 이 책은 1만 원입니다.
-
- 구매자 A : 책을 5개 구매하겠습니다.
- 판매자 B : 책 5개는 총 5만 원입니다.
-
- 구매자 A : 책 5개 카드 결제하겠습니다.
- 판매자 B : 5만 원 결제 완료되었습니다.
⇒ 여기서도 판매자가 바뀐다는 가정을 해보자.
- 구매자 A, 판매자 B, 판매자 C, 판매자 D
- 구매자 A : 이 책의 가격은 얼마인가요?
- 판매자 B : 이 책은 1만 원입니다.
-
- 구매자 A : 책을 5개 구매하겠습니다.
- 판매자 C : 책 5개는 총 5만 원입니다.
-
- 구매자 A : 책 5개 5만 원 카드 결제하겠습니다.
- 판매자 D : 5만 원 결제 완료되었습니다.
⇒ 판매자가 바뀐다 하더라도 소통마다 정확한 의사 전달을 하기 때문에 혼란이 없다.
이러한 상태를 물 상태 Stateless라고 한다.
하지만 한번 소통을 할 때마다 계속 모든 정보를 말해주어야 하는 것이 단점이다.
Statelsee의 인증 문제.
- 은행을 가정하자.
- A가 은행을 첫 방문을 하게 된다.
- A는 자신임을 인증하는 데이터를 → 종업원에게 전달한다.
- 종업원은 A의 ID 카드를 서랍에서 꺼내어 A에게 전달, 은행이 가지고 있을 ID 카드를 발행한다.
- 이후 A가 은행을 두 번째 방문을 한다.
- A는 자신이 첫 방문 때 받은 ID 카드를 은행에 제출한다.
- 종업원은 받은 ID 카드를 은행이 가지고 있는 ID 카드와 비교한다.
- 고객 ID 카드와 은행 ID 카드를 비교해 일치한다면 거래를 진행한다.
⇒ 여기서 고객이 가지고 있는 ID 카드는 쿠키, 은행이 가지고 있는 ID 카드를 세션이라고 한다.
📌 쿠키란? 웹 브라우저가 컴퓨터에 저장하는 텍스트 파일. 즉 웹 사이트를 방문할 때 사용자의 다음 재방문을 대비해 기본적인 정보를 저장한다.
📌 세션이란? 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보는 것.
또 다른 예로 “로그인” 이 있다.
회원 가입 → ID, Pwd 입력 → 로그인
위의 과정에서 입력하고 사용자가 입력한 값을 서버에 있는 값과 비교하는 과정이 생략되었다.
이러한 이유는 이 모든 과정이 프로토콜이며, 프로토콜은 자동적으로 이루어지기 때문이다.
'자바 > 자바 실습' 카테고리의 다른 글
06 자바 기본 규칙 (0) | 2022.07.28 |
---|---|
05 Static, Stack, Heap (0) | 2022.07.28 |
04 JVM (0) | 2022.07.28 |
03 컴파일, 인터프리터 (0) | 2022.07.27 |
01 신뢰성 있는 통신 (0) | 2022.07.27 |