spring/session
-
Spring Session과 SameSitespring/session 2021. 3. 24. 17:15
배경 프로젝트를 진행하다보면 여러가지 문제를 만난다. 그 중 비교적 쉽게 해결하는 문제가 있는 반면 상당히 오랜 시간을 들여 해결하는 문제가 있다. 재밌는 건 아무리 어려운 문제여도 문제를 정확하게 정의하고 원인을 파악한다면 해결하는 건 쉽다는 점이다. 중요한 건 지금 일어난 문제가 어떤 문제이고 원인을 파악하는 것이다. SameSite이슈를 해결하기 위해 걸린 시간은 1시간 정도로 매우 짧았지만 지금 발생하는 버그의 원인이SameSite때문이란 걸 확인하는 데에는 3~4시간 정도 걸린 매우 힘겨운 문제였다. 진행하는 프로젝트는 프런트와 백 서버를 분리한 프로젝트다. 프런트에서 유저정보와 함께 백서버로 로그인 인증 요청을 하면 백서버에서 검증과정 결과를 프론트로 다시 전달한다. 이때 stateless한 ..
-
spring session 아키텍처spring/session 2021. 2. 22. 12:35
현재 프로젝트는 session을 was의 메모리에서 관리하고 있다. 이 방법은 내가 지정한 방법이 아니라, tomcat이 기본으로 실행하고 있는 방법이다. 요청에 대한 getSession()이 호출되는 시점에 쿠키 설정부터 쿠키와 세션을 저장하기까지 was가 다 해준 것이다. 구현은 편리하지만, 서버 확장 시 큰 문제가 생긴다. 논리적으로 동일한 서버지만 물리적으로 다른 서버라면 세션의 동기화가 필요하다. 또한, was의 메모리를 직접 할당해 세션을 관리하므로 공간적 제약도 고려해야 한다. 결국 세션 저장소를 분리하기로 했고, Filter로 spring session을, 저장소로 redis를 사용하기로 했다. boot를 이용한 프로젝트에서 의존성을 추가하고, application.yml에 필요한 정보를 ..