정의
- HTTP프로토콜의 비연결성과 무상태성을 보완하기 위하여 사용하는 기록정보 파일을 말한다.
쿠키
- 클라이언트가 어떤 웹사이트를 방문할 경우 그 사이트의 서버를 통해 클라이언트 브라우저에 저장되는 기록정보 파일을 말한다.
세션
- 클라이언트가 어떤 웹사이트를 방문할 경우 그 사이트의 서버에 저장되고 관리하는 기록정보파일을 말한다.
구조/특징
쿠키
HttpServletResponse:
Status = 200
Headers = [Set-Cookie:"userName=ssg", "password=ssg123"]
- 서버에서 클라이언트로 Response객체를 보낼때 응답헤더의 Set-Cookie에 담아 전송한다.
HttpServletRequest:
HTTP Method = GET
Request URI = /user
Headers = [Cookie:"userName=ssg"; "password=ssg123"]
- 클라이언트에서 서버로 요청을 보낼때 항상 저장되어있는 쿠키를 요청헤더의 Cookie에 담아 전송한다.
세션
- 동작방식 : 클라이언트가 서버로 요청전송시 첫 요청이라면 서버에서는 session을 생성하고 session id값을 쿠키에 담아 반환한다.
- 세션아이디는 브라우저 단위로 저장되고 브라우저 종료시 소멸된다.
- 기본적으로 서버에 저장한다는 점에서 쿠키보다는 보안이 우수하다.
주의해야할 점
쿠키
- 요청시 쿠키의 값을 그대로 보내기에 유출 및 조작의 위험이 있어 보안에 취약하다.
- 4kb의 용량제한이 있어 많은 정보를 담을 수 없다.
- 브라우저마다 쿠키에 대한 지원스펙이 다르기 때문에 브라우저간 쿠키가 공유되지 않아 사용자를 다르게 인식할 수있다.
- 쿠키의 사이즈가 커지면 커질수록 네트워크부하가 심해진다.
세션
- 사용자정보를 서버에 두기 때문에 사용자가 많아질수록 서버 메모리를 많이 차지하게 되어 서버 성능저하의 요인이 될 수 있다.
용도
쿠키
- ID저장,로그인 상태유지 / 7일간 다시보지 않기 / 검색내역기반의 광고추천
- 세션관리/개인화/트래킹
세션
Stick Session
Session Clustering
- 로드밸런싱하는 환경에서 서버서간 세션상태를 동기화 시키기 위하여 사용하는 기술이다.
- 여러 서버들의 세션을 묶어 관리하는 기술을 말한다.
- 장점
- 사용자가 어느 서버에 접속해도 동일한 세션데이터를 받을수 있도록 보장한다.
- 사용자가 특정 서버에 고정되지 않기 떄문에 트래픽쏠림 문제를 해결할 수 있다.
- 단점
- 세션 데이터가 저장될 떄마다 모든 서버에 해당 데이터가 입력되어야 함에 따라 성능저하가 올 수 있다.
- 개별서버에서 모든 서버의 세션정보를 저장해야하므로 많은 메모리를 요구하게 된다.
- 이런 단점들을 보완하기 위하여 하나의 서버에서만 session을 동기화하고 나머지 서버에는 session키만 들고 있게 하는 primary-secondary session복제방식과 여러 서버에서 하나의 별도의 세션저장소를 사용하는 세션스토리지 방식이 있다.