세션 관리
HTTP 요청에 응답하는 노드에 해당 세션을 로컬로 저장하거나 확장 가능하고 강력한 방식으로 해당 세션을 저장할 수 있는 계층을 아키텍처에 지정하는 등 사용자 세션을 관리하는 다양한 방법이 있습니다. 사용되는 일반적인 접근 방식에는 고정 세션 활용 또는 세션 관리를 위한 분산 캐시 사용이 포함됩니다. 이러한 접근 방식은 아래에 설명되어 있습니다.
로컬 세션 캐싱이 있는 고정 세션
세션 선호도라고도 하는 고정 세션을 사용하면 사이트 사용자를 개별 사용자의 세션을 관리하는 특정 웹 서버로 라우팅할 수 있습니다. 세션의 유효성은 클라이언트 측 쿠키를 포함한 다양한 방법이나 웹 서버로 요청을 라우팅하는 로드 밸런서에서 설정할 수 있는 구성 가능한 기간 매개변수를 통해 결정할 수 있습니다.
고정 세션을 사용할 때의 몇 가지 장점은 애플리케이션을 실행하는 동일한 웹 서버에 세션을 저장하고 네트워크 대기 시간을 제거하기 때문에 일반적으로 해당 세션의 검색이 빠르다는 사실로 인해 비용 효율적이라는 것입니다. 개별 노드에 세션 저장을 사용할 때의 단점은 장애가 발생할 경우 장애가 발생한 노드에 있던 세션이 손실될 가능성이 있다는 것입니다. 또한 웹 서버 수가 변경되는 경우(예: 확장 시나리오) 활성 세션이 특정 서버에 존재할 수 있으므로 트래픽이 웹 서버 전체에 불균등하게 분산될 수 있습니다. 적절히 완화하지 않으면 애플리케이션의 확장성을 저해할 수 있습니다.
분산 세션 관리
확장성을 해결하고 개별 웹 서버에서 액세스할 수 있는 세션에 대한 공유 데이터 저장소를 제공하기 위해 웹 서버 자체에서 HTTP 세션을 추상화할 수 있습니다. 이에 대한 일반적인 솔루션은 Redis 및 Memcached와 같은 메모리 내 키/값 저장소를 활용하는 것입니다.
키/값 데이터 저장소는 매우 빠르고 밀리초 미만의 대기 시간을 제공하는 것으로 알려져 있지만 추가된 네트워크 대기 시간과 추가 비용이 단점입니다. 키/값 저장소를 활용하는 추가 이점은 HTTP 세션뿐만 아니라 모든 데이터를 캐시하는 데도 사용할 수 있다는 점입니다.
세션 관리를 위해 분산 캐시를 선택할 때 고려해야 할 사항은 사용자 세션을 관리하기 위해 필요한 노드 수를 결정하는 것입니다. 일반적으로 이 결정은 예상되는 트래픽 양 및/또는 허용 가능한 위험도에 따라 결정될 수 있습니다. 분산 세션 캐시에서 세션은 캐시 클러스터의 노드 수로 나뉩니다. 장애가 발생하면 장애가 발생한 노드에 저장된 세션만 영향을 받습니다. 비용보다 위험을 줄이는 것이 더 중요한 경우 노드를 추가하여 각 노드에 저장된 세션의 비율을 더 줄이는 것이 더 적은 수의 노드로 충분하더라도 이상적일 수 있습니다.
또 다른 고려 사항은 세션을 복제해야 하는지 여부입니다. 일부 키/값 저장소는 읽기 전용 복제본을 통한 복제를 제공합니다. 노드 오류가 발생하더라도 세션이 완전히 손실되지는 않습니다. 개별 아키텍처에서 복제본 노드가 중요한지 여부는 어떤 키/값 저장소를 사용해야 하는지 알려줄 수 있습니다. 메모리 내 키/값 저장소용 ElastiCache 제품에는 복제를 지원할 수 있는 Redis용 ElastiCache와 복제를 지원하지 않는 Memcached용 ElastiCache가 있습니다.
키/값 저장소에 세션을 저장하는 방법에는 여러 가지가 있습니다. 많은 애플리케이션 프레임워크는 메모리에서 해당 세션을 GET/SET하는 데 필요한 통합 배관의 일부를 추상화할 수 있는 라이브러리를 제공합니다. 다른 경우에는 세션을 직접 지속하기 위해 고유한 세션 핸들러를 작성할 수 있습니다.
https://aws.amazon.com/ko/caching/session-management/?nc1=h_ls
'NETWORK' 카테고리의 다른 글
OSI 7 계층 (0) | 2021.08.17 |
---|---|
DHCP, Gateway (0) | 2021.08.17 |
HTTP (0) | 2021.08.06 |
proxy server(프록시) (0) | 2021.08.05 |
CORS(cross-origin resource sharing) (0) | 2021.08.02 |
댓글