View

chatGPT API 에 대한 고민을 하다 쿠키, 세션 방식에 대해 생각해 볼 수 있는 계기가 생겨 이를 정리해 보고자 한다.


또한, 학원에서 배운 개념에서는 컨트롤러에 비즈니스 로직을 전부 넣고 서비스를 따로 분리한 적이 없었는데,

동기가 알려 주어 컨트롤러에서의 비즈니스 로직 분리에 대한 개념을 알게 되었다. (난 스프링의 스만 알고 있었다는 것을 다시금 알게 되었다)

 

갑자기 이 이야기를 왜 꺼냈냐면, 나는 기존에서는 컨트롤러에서 모든 비즈니스 로직을 전부 처리했었어야 했기에 당연히 컨트롤러에서 비즈니스 로직을 통으로 처리해서 당연히 컨트롤러에서 세션을 받고 자연스레 처리했는데,

비즈니스 로직을 서비스로 분리하며 세션을 어떻게 처리해야 할지에 대한 고민을 하게 되었다. 이에 대한 이야기는 쿠키와 세션을 다루고 나서 말하고자 함!

 

Cookie, Session 은 왜 등장하게 된 것일까?

HTTP 통신의 특징으로는 비연결지향(Connectionless)과 상태 정보를 유지하지 않음(Stateless)이 있다. 각각 설명해 보자면,

 

(1) 비연결지향(은 클라이언트가 서버에서 요청했을 때 그에 맞는 응답을 보내고 서버와의 연결을 끊는 방식이다.

    ㆍHTTP 1.1 버전에서는 연결을 유지하고, 재활용을 하는 방식이 디폴트가 되었다. 

(2) 상태 정보를 유지하지 않음, 즉, 클라이언트와 정보를 주고받더라도 클라이언트의 정보를 저장하지 않는다.

 

웹은 HTTP 통신의 특성으로 인해 항상 연결이 끊어지고 클라이언트의 상태 정보를 유지하지 않는다.

 

그러나 항상 상태 정보를 유지하고 싶은 때가 있다. 예를 들어 로그인 같은 경우이다. 회원 정보를 들어갔는데 로그인을 해야 하고, 다른 페이지를 다시 로그인을 해야 하고, 같은 상황이 발생할 수 있는 것이다.

 

이때, 쿠키와 세션은 클라이언트의 상태를 유지할 수 있게끔 도와줄 수 있는 매개체이다.

쿠키와 세션은 Cookie 를 HTTP header 에 Cookie 를 등록하여 사용한다.

 

그러면 쿠키만 사용하면 되는 것 아닌가 싶은 의문점이 들 수 있는데, 쿠키와 세션의 가장 큰 차이는 정보가 저장되는 위치이다. 이를 중심으로 설명해 보겠다.

 

Cookie Session
키와 밸류 형태로 저장된다
사용자의 로컬 피시에 저장된다 서버에 저장된다
브라우저가 종료되어도 유지된다 브라우저 종료 즉시 사라진다

 

저장되는 위치가 다른 것이 큰 의미를 차지하나? 싶을 수 있나 싶지만,

 

만약 저장되는 위치가 사용자 로컬 피시라면, 만약 어떤 사람이 나쁜 마음을 먹을 경우 쉽게 정보를 가로챌 수 있다는 단점이 있다. 

또한 세션으로 전부 저장하게 될 경우 서버의 메모리가 과부화될 수 있다는 단점 또한 있다.

 

그러므로 중요한 개인 정보 같은 목록은 세션으로, 정보의 보안이 중요하지 않지만 유지되어야 하는 정보(예시: 비회원 장바구니) 같은 것들은 쿠키로 저장하는 방식으로 관리하는 것이 좋겠다.

Share Link
reply
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31