세션(Session)과 쿠키(Cookie) 이해하기

키요·2025년 8월 15일

공부

목록 보기
1/33

세션(Session)과 쿠키(Cookie) 이해하기: 호텔 투숙객 비유 🏨✨

웹 개발 공부하다 보면 세션이랑 쿠키, 헷갈리기 쉽잖아요? 🤔 이 둘의 관계를 제일 쉽고 재밌게 이해하는 방법이 바로 '호텔 투숙객' 비유예요. 이야기처럼 술술 읽히게 한번 정리해 봤어요!

1. 세션(Session)과 쿠키(Cookie)란?

  • 세션 (Session)

    • 클라이언트에 대한 중요한 정보서버에 저장하는 기술이에요.
    • 로그인 정보, 장바구니 목록처럼 보안이 중요한 데이터들을 안전하게 보관해주는 '비밀 금고' 같은 역할을 하죠.
  • 쿠키 (Cookie)

    • 클라이언트에 대한 작은 정보클라이언트(브라우저)에 저장하는 파일이에요.
    • 여기엔 세션에 접근할 수 있는 '열쇠' 역할을 하는 세션 ID만 쏙 담겨 있답니다.

핵심은 바로 '정보가 어디에 저장되는가'예요! 🗝️

  • 세션 = 서버 (안전한 보물 상자 💰)
  • 쿠키 = 클라이언트 (작은 열쇠 카드 🔑)

2. 호텔 비유로 이해하는 세션 & 쿠키 동작 과정

우리 한번 상상해 봐요, 우리가 호텔 지배인이라고요! 👩‍💼🧑‍💼

1) 손님 도착 (최초 접속)

  • 클라이언트(손님)서버(호텔)에 똑똑! 하고 찾아왔어요.
  • 서버는 이 소중한 클라이언트를 위해 예약 기록(세션)을 하나 만들어줘요. 이 기록엔 손님 이름, 결제 정보 같은 아주 중요한 내용이 담겨있죠.
  • 이 예약 기록은 호텔 프런트 데스크(서버)에 안전하게 보관된답니다.

2) 방 열쇠 발급 (세션 ID 생성 및 쿠키에 담기)

  • 호텔 직원이 손님에게 방 열쇠 카드(쿠키)를 건네줘요.
  • 이 카드엔 502호 같은 '방 번호(세션 ID)'만 쓰여 있고, 다른 손님 정보는 전혀 없어요.
  • 하지만 호텔(서버)은 502호라는 방 번호가 어떤 손님의 예약 기록을 가리키는지 정확히 알고 있답니다!

3) 손님 활동 (다음 요청)

  • 손님은 이 방 열쇠 카드를 늘 가지고 다니겠죠?
  • 손님이 헬스장이나 식당(다른 웹 페이지)에 가려고 할 때마다, 방 열쇠 카드(쿠키)를 보여줘요.
  • 브라우저도 서버에 뭘 요청할 때마다, 쿠키에 담긴 세션 ID를 자동으로 같이 보내준답니다. (정말 편하죠? 😉)

4) 정보 확인 및 서비스 제공 (세션 데이터 활용)

  • 호텔 직원은 손님이 보여준 카드의 방 번호(세션 ID)를 확인해요.
  • 이 방 번호로 프런트 데스크에 보관된 손님의 예약 기록(세션)을 바로 찾아내죠.
  • 그리고 이 기록에 있는 정보(로그인 여부, 등급 등)를 보고 손님에게 딱 맞는 서비스를 제공해준답니다!

3. 세션과 쿠키, 이렇게 기억하자!

가장 중요한 관계는 바로 "세션 ID는 키(Key), 세션 데이터는 값(Value)"이라는 점이에요. 마치 열쇠랑 보물 상자 속 보물처럼요! 🗝️💰

서버는 세션 정보를 이렇게 관리해요.

Map<세션ID, 세션데이터>
  • Key = 세션 ID (방 번호 🔑)
  • Value = 세션 데이터 (중요 정보, 손님 예약 기록 📝)

그리고 서버는 이 Key인 세션 ID를 쿠키에 담아 클라이언트에게 보내줘요. 그럼 클라이언트는 이 쿠키를 보관했다가 서버에 다시 접속할 때 "제가 그 손님입니다!" 하고 자기 상태를 알려주는 역할을 하는 거죠.

4. 왜 이런 방식을 사용할까요?

웹의 기본 통신 방식인 HTTP는 원래 '상태가 없는(Stateless)' 프로토콜이기 때문이에요. 즉, 서버는 누가 이전에 접속했는지 기억하지 못하는 아쉬움이 있었죠.

하지만 세션과 쿠키는 이런 HTTP의 한계를 극복하고, 사용자의 상태를 계속 유지하기 위해 꼭 필요한 기술이에요! 덕분에 우리가 웹사이트에서 로그인 상태가 유지되거나 장바구니에 담은 물건이 사라지지 않는 거랍니다. 🥰

  • 쿠키: 클라이언트에 저장돼서 가볍고 빠르지만, 민감한 정보는 보관하기 어렵다는 특징이 있어요. (조금 열린 공간)
  • 세션: 서버에 저장되니 보안엔 훨씬 강하지만, 서버 자원을 쓴다는 점을 알아둬야 해요. (안전한 금고)
profile
운도 실력

0개의 댓글