1. 세션(Session)의 기본 개념

세션(Session)은 웹 또는 모바일 서비스에서
“사용자가 접속해 있는 동안의 상태 정보(연속된 상호작용)”를 관리하는 단위이다.
HTTP는 비연결성(Stateless) 프로토콜이기 때문에,
서버는 사용자가 이전에 어떤 페이지를 봤는지, 로그인했는지, 장바구니에 무엇을 담았는지 기억하지 못한다.
따라서 서버는 사용자가 방문할 때마다 ‘세션 ID(Session ID)’라는 고유 식별자를 발급해 그 사용자의 일련의 행동을 하나의 흐름으로 인식한다.
세션은 브라우저나 앱이 종료되면 사라지는 임시 상태 정보로,
일반적으로 쿠키(Cookie) 또는 토큰(Token) 형태로 클라이언트 단에 저장된다.
2. 세션의 기술적 동작 흐름
- 사용자가 웹사이트 또는 앱에 접속
- 서버가 새로운 세션 ID를 생성하여 클라이언트(브라우저 또는 앱)에 전달
- 클라이언트는 이 세션 ID를 쿠키 형태로 보관
- 사용자가 다른 페이지를 이동하더라도,
- 클라이언트는 세션 ID를 함께 전송함으로써 서버는 동일 사용자의 행동으로 인식
- 사용자가 로그아웃하거나 세션이 만료되면,
- 해당 세션 ID는 삭제되며 연결이 종료됨
3. 세션과 로그인(Login Session)의 관계
일반 세션과 로그인 세션은 다르다.
- 일반 세션은 페이지 방문 상태를 유지하기 위한 단기 연결이다.
- 로그인 세션은 사용자가 인증된 상태를 유지하기 위한 연결이다.
즉,
- 일반 세션은 단순히 “이 사용자가 지금 접속 중인가?”를 관리하고,
- 로그인 세션은 “이 사용자가 누구인지 인증되었는가?”를 관리한다.
이 두 개념은 때로 함께 작동하지만,
기획적으로는 별도로 만료 기준을 설정해야 한다.
4. 로그인 세션의 구조 (Session-Based Authentication)
로그인 세션은 사용자가 로그인할 때 서버가 발급하는 인증 세션이다.
이 세션은 사용자의 인증 정보를 저장하고, 일정 시간 동안 로그인 상태를 유지하게 한다.
* 기본 흐름
- 사용자가 로그인 정보를 입력
- 서버가 인증 성공 시 세션을 생성
- 세션 저장소(Session Store: DB, Redis 등)에 사용자 정보(유저ID, 권한 등)와 세션 ID를 매핑 저장
- 클라이언트는 세션 ID를 쿠키에 저장
- 이후 요청 시 쿠키에 포함된 세션 ID로 인증을 대신함
* 세션 만료
- 일반적으로 로그인 세션은 일정 시간(예: 30분) 활동이 없으면 만료된다.
- 기획적으로는 서비스 성격에 따라 다르게 설정한다.
- 금융/보안 서비스 → 5~10분
- 커머스/게임 포털 → 30분~24시간
- 커뮤니티/포털 → 자동 로그인 기능 병행
5. 자동 로그인(Persistent Login)
자동 로그인은 로그인 세션의 확장 개념이다.
기존 세션은 브라우저를 닫으면 종료되지만,
자동 로그인은 브라우저를 닫거나 일정 시간이 지나도 로그인 상태를 유지한다.
* 동작 방식
- 사용자가 “자동 로그인 유지” 체크 후 로그인
- 서버가 일반 세션과는 별도로 Persistent Token(지속 쿠키)을 발급
- 브라우저 종료 후 다시 접속할 때, 해당 쿠키를 이용해 자동 인증
- 서버는 토큰을 검증하여 새로운 세션을 자동 생성
* 저장 방식
- 일반 쿠키: 브라우저 종료 시 삭제
- 지속 쿠키(Persistent Cookie): 유효 기간(예: 30일)이 명시되어, 브라우저 종료 후에도 유지
* 기획 시 고려사항
1) 보안성
- 자동 로그인은 편리하지만, 기기 분실 시 계정 노출 위험이 큼
- 따라서 보안 토큰 암호화 필수
2) 유효 기간
- 7일, 30일 등 서비스 특성에 따라 설정
- 장기적으로 유지하면 리스크 증가
3) 기기 구분
- 토큰을 기기별로 관리하여, 다른 기기에서는 자동 로그인 불가하도록 해야 함
4) 수동 해제 기능
- 사용자 계정 설정에서 “모든 기기 로그아웃” 기능 제공이 이상적
6. 세션 만료 정책(Session Timeout Policy)
기획자는 반드시 서비스별로 세션 만료 정책을 명시해야 한다.
이는 UX와 보안의 균형을 맞추는 핵심 설계 포인트이다.
* 예시 정책
1) 게임 웹샵 / 결제
- 15~30분
- 보안 중요, 결제 중 세션 만료 시 재로그인 필요
2) 커뮤니티 / 포털
- 1~7일
- 접근 편의성 우선, 자동 로그인 유지 옵션 제공
3) 금융 / 인증 서비스
- 5~10분 강력한 보안 요구
- 세션 만료 후 자동 로그아웃
또한,
- 세션 만료 시 경고 팝업 표시
- “다시 로그인하기” 버튼 제공
- 만료 후 페이지 리디렉션 처리(예: 로그인 페이지로 이동)
같은 플로우를 UX적으로 설계해야 한다.
7. UX 및 서비스 기획 측면에서의 세션 설계 포인트
1) UX 연속성
- 세션이 갑자기 만료되면 사용자가 작성 중인 데이터(예: 게시글, 장바구니)가 사라질 수 있음
- 자동 저장 기능이나 세션 연장(keep-alive) 기능을 설계해야 함
2) 보안성
- 세션 탈취(Session Hijacking)을 방지하기 위해 HTTPS 및 보안 토큰 사용
- 로그인 시점마다 IP 또는 User-Agent 검사 추가 가능
3) 데이터 트래킹
- 세션 기반으로 DAU, 세션 길이, 전환율 등 주요 지표 분석
- 세션 단위의 행동 로그(Event Log)를 통해 UX 개선 가능
4) 멀티 디바이스 환경
- 모바일앱, 웹, 태블릿 등 각 플랫폼 간 세션 유지 정책을 통일해야 함
- 예: 모바일에서 자동 로그인했더라도, PC에서는 별도 인증 요구
7. 요약
세션은 단순한 기술 개념이 아니라,
보안·UX·데이터 분석의 중심이 있는 서비스 기획 핵심 단위이다.
- 일반 세션은 서비스의 연결 상태를,
- 로그인 세션은 인증 상태를,
- 자동 로그인은 사용자 편의성을 유지하는 도구로 작동한다.
따라서 기획자는 서비스의 목적과 보안 수준에 따라
세션 만료 시간, 유지 정책, 자동 로그인 조건 등을 명확히 정의해야 한다.
'CS' 카테고리의 다른 글
| API Gateway (API 게이트웨이) (0) | 2025.11.12 |
|---|---|
| 클라이언트-사이드 렌더링(CSR) vs 서버-사이드 렌더링(SSR) (0) | 2025.10.31 |
| 익스터널 링크(External Link) (0) | 2025.10.03 |
| Protobuf (0) | 2024.12.25 |
| 코틀린(Kotlin) 개념 및 알아야 할 내용 (3) | 2024.12.11 |