Sticky Session
가장 먼저 sticky session입니다.
Sticky Session은 말그대로 껌딱지 세션입니다.
로드 밸러싱이 되면서 로그인 세션 등 세션들이 기존과 다른 서버에 가는 것을 막고자 첫 Request에 대한 응답을 준 서버에 껌딱지 처럼 붙어있는 것을 Sticky Session이라고 합니다.
하지만 단점으로 특정 서버에만 과부화가 올 수 있다는 점, 특정 서버가 Fail 될 시 해당 서버 세션들이 소실 될 수 있습니다.
이러한 단점은 보완한 것이 Session Clustering입니다.
Session Clustering
여러 서버의 세션을 동일한 세션으로 관리하는 것을 Session Clustering이라고 합니다.
해당 방법은 특정 서버에서만 발생할 수 있는 문제점을 해결해주지만 이 역시 여러 단점들이 존재합니다.
여러 서버에 동일한 세션을 사용하면 오버헤드가 발생할 수 있으며, 서버 수에 비해 네트워크 트래픽이 증가하는 등 성능 저하가 발생합니다. 또한 새로운 서버를 띄울 때마다 기존에 존재하던 WAS에 새로운 서버 IP/포트를 입력하여 클러스터링 해주어야 해서 에러 발생이 생길 수도 있습니다.
그러므로 Session Clustering은 대규모보다는 소규모의 클러스터에 사용하는 것이 좋습니다.
In-Memory DB
인메모리 DB에도 여러 종류가 있습니다. 그중에서도 Redis에 대해서 알아보려고 합니다.
레디스는 메모리 기반의 키-값 구조의 데이터 관리 시스템입니다.
In-Memory DB로 읽기 성능 증대를 위한 서버 복제를 지원합니다.
레디스의 장점은 value 값으로 다양한 데이터 형식을 지원하기 때문에 리스트 배열과 같은 데이터를 처리 유용하며, 리스트형 데이터 입력과 삭제가 MySql에 비해 10배 정도 빠르다는 것입니다.
물론 단점도 존재합니다.
In-Memory 방식은 매체가 휘발성이기 때문에 갑자기 장애가 발생할 시 데이터를 유실할 수 있습니다.
'WEB-DEV > SPRING' 카테고리의 다른 글
AOP와 interceptor (0) | 2022.12.05 |
---|---|
log4j2 vs logback (0) | 2022.11.22 |