서론
이번 글에서는 쿠키와 세션의 차이점에 대해 알아보려고한다.
각 개념은 이전 글에 작성해놓았으니 참고 바란다.
쿠키(Cookie) VS 세션(Session)
분류 | 쿠키(Cookie) | 세션(HttpSession) |
저장 위치 | 브라우저에 저장한다. | 서버에 저장한다. |
서버 부담 | 브라우저에 저장하여 서버에 부담이 없다. |
서버에 저장하여 서버에 부담이 있다. |
보안성 | 불리하다. (필요하면 암호화 사용) | 유리하다. |
서버 다중화 | 유리하다. | 불리하다. |
속도 | 빠르다. | 느리다. |
저장 형식 | Text형식으로 저장된다. | Object형식으로 저장된다. |
만료 시점 | 쿠키 저장시 설정할 수 있다. (만료 시점 설정 가능) |
브라우저 종료시 삭제한다. (기간 지정 가능) |
용량 제한 | 총 300개 하나의 도메인 당 20개 하나의 쿠키당 4KB (4096byte) |
서버가 허용되는 한 용량제한이 없다. |
위와 같은 도표로 정리를 할 수 있다. 가장 중요한 차이점은 어디서(위치) 관리를 하냐이다.
쿠키같은 경우는 브라우저에 저장을 하기때문에 서버에 부담이 없는 것이고 서버가 몇개가 있던 브라우저에서 관리하기 때문에 서버 다중화가 세션보다 유리한 것이다.
반면 세션은 서버에 저장하기때문에 세션이 많아질 수록 서버에 대한 부담(하중)이 생길 수 밖에 없다. 그리고 서버 다중화에 불리한 이유는 아래의 그림으로 이해해보자.
서버 다중화
위는 이해를 위해 그려본 서버를 다중화 했을 때의 그림이다. (악필 죄송합니다)
보통 서버에 대한 부하를 나누기 위해 서버 다중화를 진행한다.
먼저 간략히 설명하면 해당 클라이언트에서는 "asdf"라는 session id를 갖고있고, 서버가 여러대인 상태에서 해당 "asdf"의 정보는 [server2]에서 관리를 하고 있는 상태이다.
그런데 클라이언트(브라우저)에서 session id인 "asdf"의 정보로 [server1]에게 요청이 됐다면 요청 실패가 발생할 것이다.
이유는 [server2]에만 "asdf" 정보가 있기 때문이다.
그러하여 서버가 여러대(다중화)인 상태에서는 모든 서버에게 동기화 작업을 진행해야한다. 이러한 동기화 하는 작업때문에 세션은 서버가 여러대일 경우 쿠키에 비해 불리할 수 밖에 없다.
'Programming > Spring' 카테고리의 다른 글
STS(Eclipse)에서 IntelliJ로 프로젝트 옮기는 방법 (Import / Export) (0) | 2022.03.20 |
---|---|
[Spring] 전역 예외 처리 방법 (@ControllerAdvice, @ExceptionHandler) (0) | 2022.03.13 |
[Spring] 세션(Session)이란? (개념 / 특징 / 사용법) (0) | 2022.03.13 |
[Spring] 쿠키(Cookie)란? (개념 / 특징 / 사용법) (0) | 2022.03.12 |
[Servlet] 서블릿 실행 시간 측정 필터 만들기 (Servlet Performance Time Check Filter) (0) | 2022.02.01 |
댓글