세션(Session)이란?

🔥Log·2023년 7월 6일
0

WEB/Network

목록 보기
2/4

💡 세션의 개념적 정의


상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나, 컴퓨터와 사용자 간의 송수신 연결상태를 의미한다.
둘 이상의 개체가 정보 교환을 할 때, 이 개체들이 '연결'되어 있다는 것에 대한 정보를 '세션'이라고 한다.

💻 로그인

우리가 일상에서 사용하는 거의 모든 서비스들은 '로그인'이라는 과정을 거친다.
이럴 때 무조건적으로 사용되는 기술이 바로 세션이다.

예를 들어서, 구글에 로그인을 한다고 가정하면 우리는 이메일과 비밀번호를 구글 서버 측에 전송하게 된다.
이렇게 전송된 이메일과 비밀번호를 통해서 로그인에 성공한다면, 우리는 로그인한 계정으로 다양한 서비스들을 이용할 수 있게 된다.

페이지를 새로 고침하거나 브라우저를 닫았다가 다시 열어도 일정 시간동안은 로그인이 유지되어 있는데, 이렇게 '연결'상태를 유지할 수 있게 해주는 것이 세션이다.


💡 세션이 저장되는 곳


결론적으로 얘기한다면, 세션은 서버 측에서 관리하는 정보이다.
그렇다면, 서버의 어느 곳에 저장될까?

🖥️ 메모리

세션은 기본적으로는 톰캣, NodeJs와 같은 웹서버의 메모리에 저장이 된다. 각 기술마다 디테일한 저장 방식은 다를 수 있지만 특별히 설정해 주지 않는다면, 메모리에 저장이 된다.

세션은 영구적이지 않은 정보이므로, 약속된 시간만큼 들고 있다가 버리면 되므로 메모리에서 세션을 관리하는 게 합리적이라고 생각이 된다.

B.U.T

메모리에만 세션을 저장했을 때는 한계가 몇 가지 존재한다.
서버가 다운됐을 때 메모리에 저장되어 있던 세션정보도 물론 날라가므로 서비스 이용자가 불편을 겪을 수 있다는 점과, 단일 서버가 아니라 오케스트레이션이 적용된 N개의 서버로 하나의 서비스를 운영하는 것이라면, 서버 간의 세션 공유도 할 수 없다는 단점이 있다.

💾 파일 & DB

위와 같은 이슈를 해결하기 위해서 파일이나 데이터베이스에 세션을 저장하기도 한다.

저장하는 방식만 달라졌을 뿐이지 역할과 저장되는 정보는 동일하다.

🔥 결론

결론적으로 세션은 무조건 여기에 저장이 된다! 라는 것은 없다.
필요에 따라서 메모리에 저장할 수도 있고, 파일이나 DB에 저장할 수도 있고, 메모리 + 파일 조합으로 저장할 수도 있는 것이다.

개발자가 여러 상황을 고려해서 어떻게 구축하느냐에 달렸다고 할 수 있다.


🙏 참고


0개의 댓글

관련 채용 정보