728x90
사용자 세션의 흐름
- 사용자가 최초로 서버에 접속하면, 서버는 사용자를 식별하기 위해 세션 ID를 생성하고 이를 사용자에게 전달합니다. 이 세션 ID는 쿠키를 통해 사용자의 브라우저에 저장됩니다.
- 사용자가 로그인을 시도하면, 서버는 사용자의 아이디와 비밀번호를 확인하고, 이 정보가 정확하다면 해당 사용자의 세션 데이터에 로그인 정보를 저장합니다.
- 서버는 필요에 따라 세션 데이터에 추가적인 속성값을 저장할 수 있습니다. 예를 들어, 사용자의 아이디나 권한 등의 정보를 저장할 수 있습니다.
- 사용자가 서버에 요청을 보낼 때마다 서버는 세션 ID를 통해 사용자의 세션 데이터를 확인하고, 이를 통해 사용자를 식별하고 인증합니다.
로드 밸런싱(Load Balancing)
로드 밸런싱은 사용자의 요청을 여러 서버로 분산시켜 처리하는 기술입니다. 로드 밸런서는 여러 대의 서버가 작업을 공유하도록 분산시키는 역할을 합니다. 이를 통해 시스템의 가용성을 높이고, 단일 서버에 대한 부하를 줄입니다.
세션 어피니티(Session Affinity), 스티키 세션(Sticky Session)
세션 어피니티는 로드 밸런서가 클라이언트의 요청을 처음 처리한 서버에 그 클라이언트의 후속 요청을 계속해서 전달하는 방식을 말합니다. 이렇게 함으로써, 각 사용자의 세션이 그 사용자를 처음 처리한 서버에 '고정'되고, 그 서버의 세션 상태가 유지되는 것을 보장할 수 있습니다.
세션 클러스터링(Session Clustering)
세션 클러스터링은 여러 서버 간에 세션 정보를 공유하는 방식입니다. 이 방식은 한 서버가 실패하더라도 세션 정보가 손실되지 않습니다. 하지만 이 방식은 세션 정보를 동기화하는 데 추가적인 네트워크 트래픽을 발생시키는 단점이 있습니다.
Redis를 이용한 세션 관리
- Redis는 인 메모리 데이터 구조 저장소로, 캐시, 메시지 브로커, 세션 스토어 등 다양한 용도로 사용될 수 있습니다. Redis를 세션 스토어로 사용하면, 여러 서버가 동일한 세션 정보에 접근할 수 있습니다.
- Redis를 사용하면 세션 정보를 모든 서버가 공유하므로, 세션 어피니티가 필요 없게 됩니다. 따라서 로드 밸런서는 요청을 자유롭게 분산시킬 수 있습니다.
- 하지만 Redis를 사용하면서 주의해야 할 점은, Redis 서버가 다운되면 세션 정보가 모두 손실될 수 있다는 점입니다. 이를 방지하기 위해 Redis의 지속성 기능을 활성화하거나, Redis 클러스터를 사용하여 데이터를 복제하는 등의 대책이 필요합니다.
Reference
- https://velog.io/@hoyun7443/%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%8B%B1Load-Balancing
- https://smjeon.dev/web/sticky-session/
- https://velog.io/@iameunyu/%EC%84%B8%EC%85%98-%EC%BF%A0%ED%82%A4
728x90
'Web Security' 카테고리의 다른 글
Session, Cookie의 특징과 차이점 (0) | 2023.12.07 |
---|---|
인증(Authentication)과 인가(Authorization) (0) | 2023.11.26 |
JWT(JSON Web Token) (0) | 2023.11.26 |