본문 바로가기

IT 서비스 바라보기/Programming

쿠키와 세션의 비교



사용자의 특정 정보를 서버에서 알아내기 위해 연속된 브라우저 세션에 대한 정보를 저장하는 방법으로 쿠키나 세션을 사용할 수 있으며, 이것은 서로 유사한 기능을 가집니다. 그러나 기능상에는 엄연한 차이가 있으므로 상황에 맞게 효율적인 것을 선택하여 사용하기 바랍니다. 기본적인 차이점은 다음과 같습니다.

쿠키는 웹브라우저마다 지원 형태가 다르고 사용자가 보안상이 이유로 거부할 수도 있으므로, 사용자의 정보를 제대로 파악하기가 쉽지만은 않습니다. 이런 경우 막연히 쿠키만 믿고 있는 것보다는 세션을 URL Rewriting  에 연동하여 사용하는 것이 바람직합니다.

쿠키는 클라이언트 영역(메모리 또는 파일)에 저장 되므로 정보 저장 능력에 한계가 있습니다. 보통 쿠키는 클라이언트 당 20개까지 사용 가능하며, 한 개의 쿠키 정보는 최대 4K까지 사용 가능합니다. 그러나 세션의 경우 이러한 데이터 저장 개수나 사용 공간에 대한 제한이 없습니다.

쿠키는 한 번에 하나의 정보만을 저장 할 수 있습니다. 그러나 세션 객체의 경우에는 응용 데이터를 Hash Table에 저장하게 되므로 많은 정보를 하나의 세션 객체에 저장하는 것이 가능합니다. 쿠키를 사용하여 여러가지 정보를 저장하려면 여러 개의 쿠키를 생성하여 브라우저에 저장해야 하는데, 이럴 경우 브라우저 설정에서 쿠키 저장시 경고를 보내는 옵션을 지정하였다면 사용자는 여러 번에 걸친 경고를 받도록 되어 있습니다. 또한 용량이 큰 쿠키를 내려 보내게 되면 네트워크 부하를 증가 시키게 되지만 세션은 서블릿이 수행되는 서버의 메모리 공간에 데이터가 저장되므로 네트워크 부하는 단지 Session ID 정도만 사용하게 되는 것입니다.

이와 같이 차이점을 대조해보면 쿠키보다 세션이 더 우수하고 안정적이며 보다 나은 기능을 수행하는 것을 알 수 있습니다. 그렇다면 굳이 쿠키를 사용할 필요가 있을까하는 의문이 들 것입니다. 그러나 쿠키가 매우 유용하게 사용될 때가 있습니다. 쿠키나 세션은 모두 서블릿 API 에서 지원되므로 일반적으로 세션을 사용하는 것이 좋지만, 다른 프로그래밍과 연동을 한다든지 플랫폼이 다른 쪽과 정보를 주고 받는 경우에는 쿠키를 사용하는 것이 바람직 합니다.

예를 들어 하나의 DB 서버를 운용하고 웹서버의 NT와 유닉스 체계를 둘 다 사용하여 인증을 거칠 경우에는 플랫폼과 웹서버가 다르기 때문에 사용상 문제가 생길 수 있지만, 쿠키를 사용하면 그런 문제점은 쉽게 해결 됩니다.

결론적으로 HTTP 트랜잭션을 관리하는 정보는 HttpSession 을 이용하는 것이 보안이나 데이터 처리의 유용성 그리고 성능 등을 위해 좋은 방법이며, 해당 HttpSession 을 찾아가기 위해서는 기본으로 사용하는 쿠키를 사용자가 받아들여 주는 것이 제일 좋은방법 중 하나입니다.



참고자료 : JSP 웹 쇼핑몰 구축