세션이 유지되는 상태에서 암호화 키가 변경되는 이슈가 발생했다.
비슷한 사례로, was 재기동 시 암호화키가 랜덤으로 생성되어 was1번에서 암호화 키를 받아 value 값을 암호화하고, 서버에 요청할때는 was2번으로 붙어 복호화시 key가 달라 복호화를 할 수 없는 이슈가 있었다.
발생 배경
도메인으로 접속 시 이중화 클러스터링이 되어있고 sticky sesson 설정 하지 않음 -> 로그인 후 was1으로 접속하고, 다시 요청을 하면 was2번으로도 붙을 수 있는 환경
문제 상황
- 서버 재시작 시점에 암호화 키를 랜덤으로 생성함
- 서버 재시작 전 브라우저에서 가지고 있던 파라미터 암호화 값을 그 전에 키 값으로 복호화를 시도하며 에러 발생
해결 방법
1. 서버 재시작 시점 기존 세션 끊기
2. 고정 암호화 키 사용 : 서버 재시작 시점에도 같은 암호화 키를 사용하도록
-> 서버가 클러스터 환경일 경우, 고정 암호화 키를 사용할 수 있게하여 해결하였다.
위의 이슈를 해결하며, 분산 처리 환경에서 데이터 불일치를 해결하는 방법을 찾아보게 되었다.
Sticky Session

Sticky Session은 처음 요청을 보냈을 때, 응답을 준 서버로만 계속 요청을 보내 특정 서버에 붙어있는 방식이다.
= 특정 세션의 요청을 처음 처리한 서버로만 보내는 것
브라우저의 쿠키에 이용한 서버가 어딘지를 저장해 사용하는 방식이 대표적이다.
특정 서버로만 요청을 하기에 세션이 그대로 남아있어 데이터 불일치 문제를 해결할 수 있지만, 단점도 존재한다.
(-) 서버 하나로만 많은 요청이 몰릴 수 있음
(-) 자신의 세션이 없는 다른 서버는 사용할 수 없음
(-) 하나의 서버에 장애 발생 시, 해당 서버의 세션들을 모두 사용할 수 없음
Session Clustering

Session Clustering은 여러 서버가 하나처럼 작동하게 해주는 기술이다.
한 세션을 여러 서버에서 동일하게 관리하는 방식으로, 다른 서버에서도 동일하게 request 처리가 가능하다.
세션 클러스터 역시 단점이 존재한다.
(-) 세션 데이터가 저장될 때마다 모든 서버에 해당 데이터가 입력되어야 하므로 성능저하가 올 수 있음
(-) 개별 서버 안에서 동일 그룹의 모든 세션 정보를 저장해야 하므로 많은 메모리가 필요함
티스토리 오블완 챌린지 사전 이벤트 참여
https://www.tistory.com/event/write-challenge-2024?t_src=tistory_home_topbanner
작심삼주 오블완 챌린지
오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.
www.tistory.com
'개발' 카테고리의 다른 글
| 이벤트 기반 프로그래밍과 PRG 패턴 (1) | 2024.12.04 |
|---|---|
| 로컬호스트에 https 적용하기 : 톰캣에 ssl 인증서 적용 방법 (0) | 2024.11.05 |
| json 데이터 암호화 문제 해결, @RequestParam과 @RequestBody (1) | 2024.10.09 |
| 브라우저의 캐싱 : css, js 등 해결하기 (1) | 2024.04.03 |
| [IntelliJ] 인텔리제이 실행 시 에러 : java.io.IOException: 액세스가 거부되었습니다 (3) | 2024.03.22 |