배경

최근에 일을 하는데 세션과 쿠키 관련해서 개발환경에서 작업을 할 때 로그인쪽에서 이슈가 발생하였다.

결론적으로 여러 프로젝트를 교체하면서 작업을 하는데 브라우저의 세션id 쿠키값이 안지워져서 발생한 문제였는데 이슈를 찾다보니 세션에 관해서 개념이 잘 안잡혀있다는 것을 깨달았다.

그래서 한번 제대로 정리하고 이미지를 잡기 위하여 구글링을 한 결과를 정리하였다.

 

정의

 

session

a formal meeting or series of meetings of an organization such as a parliament or a law court

세션을 캠브릿지 영어사전으로 검색하면 공식적인 미팅 혹은 일련된 미팅들이라는 정의가 나온다.

 

IT에서 사용하는 세션도 처음에 세션이라는 단어를 사용한 이유는 세션의 역할이 서버와 클라이언트 양방향 통신이 컴퓨터들의 미팅이라고 생각해서 사용한게 아닐까 싶다.

 

세션으로 구글링을 하면 많이 나오는 설명들로는

  • HTTP의 Stateless의 단점을 극복하기 위한 서버저장소
  • 일련의 요구를 하나의 상태로 보고 상태를 일정하게 유지시키는 기술
  • 여러페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법

등이 있다. 모두 맞는 말들이지만, 조금씩 관점이 다르게 느껴져서 이해하는데 개념이 명확히 잡히지 않았다.

 

그러다 위키백과의 세션 설명을 찾아보게 되었는데, 추상적이지면 개념적으로 가장 이해가 잘 되는 것 같았다.

컴퓨터 과학 및 네트워킹에서 세션은 시간으로 구분된 양방향 링크이며 tcp/ip 프로토콜의 실용적인(상대적으로 높은) 계층으로, 둘 이상의 통신 장치 또는 종단 간에 대화식 표현 및 정보 교환을 가능하게 합니다. -위키백과-

세션은 클라이언트와 서버의 `양방향 링크'이며, 이를 시간을 제약으로 구분해놓은 것이다.

그 이유는 대화식 표현과 정보교환을 가능하게 하여 불필요한 중복된 정보전달을 피하고 더 많은 정보를 활용할 수 있게 하는 것이다.

 

구현

그리고 이를 구현하는 방법도 여러가지가 있는데

  • 소프트웨어 구현
    - 자식 프로세스, 멀티스레딩 등으로 구현할 수도 있으며
  • 서버사이드 웹 세션
    - 우리가 흔히 공부하는 HTTP 세션 방식으로 서버측에서 구현할 수도 있으며
  • 클라이언트 사이드 웹 세션
    - 쿠키도 사실 클라이언트 사이드의 웹 세션의 구현방식인 것이다.

지금까지 구글링을 하면서 쿠키와 세션을 대비하면서 바라보았는데, 위키백과의 쿠키와 세션에 대한 설명은 세션의 더 큰 개념인 `양방향 링크'의 각 사이드의 구현체로 보는 것이었다.

 

우리가 웹애플리케이션을 구현할 때 사용하는 세션은, WAS에서 구현하며 세션이 설정되면 어원과 연결하여 비유하자면

미팅(양방향 링크의 세션)이 진행되는 회의실(서버사이드 웹 세션)의 방번호(JSessionID)등을 쿠키로 사용자들에게 전달해주고, 사용자들은 미팅에 참여했다가 집에갔다가 다시 와도, 회의실에 책같은 것을 두고 다녀서 가볍게 다닐 수 있는 것이다. 

 

위에서 언급한 이슈는 A대학에서 미팅이 진행된 회의실의 방번호를 받아서 클라이언트에 저장해놓았는데

A대학이 없어지고 B대학을 세워놓고 A대학의 회의실을 찾고 있어서 발생한 문제였던 것 같다.

 

참고

https://en.wikipedia.org/wiki/Session_(computer_science)

 
 
 

'IT > WEB' 카테고리의 다른 글

[Nginx] Nginx Architecture  (0) 2023.04.11
[Nginx] Nginx 소개  (0) 2023.04.05
[Web] URL Encoding  (0) 2022.07.17

+ Recent posts