문제
서로 다른 서브 도메인 사이에도 호스트 네임만 같으면 Local storage가 공유되는 줄 알고 프로젝트를 진행하다가 직접 구현을 해보니 공유가 안되는 걸 깨달았다.
일정에 차질이 생기지 않게 빠르게 적용할 수 있는 다른 방안을 생각해야했다.
문제 해결 과정
- 방법을 여러개 생각해보고 슬랙에 공유하여 여러 의견을 모아보았다.
- Cookie는 서브 도메인간 공유가 가능하기 때문에 LocalStorage에서 Cookie로 전환하는 방법
- 서브 도메인으로 서비스를 나누지 말고 아예 Same origin으로 갖고 가는 방법
- 예전에 다른 서비스에서 사용했던 방법 중 하나인 query string에 token을 달아서 redirect 시키는 방법
- 예전에 사용했던 방법인 Query string으로 진행하기로 판단했다. 그 이유는 아래와 같았다.
- 하루 밖에 안남은 상황에서 예전에 사용했었기에 검증된 방법이고, 셋 중 가장 빠르게 구현가능한 해결책이였다.
- Local storage에서 데이터를 관리하는 코드는 모듈화가 제대로 안되어있고 코드가 파편화 되어있어서 놓치는 부분이 있을 수도 있었다. (테스트 할 시간도 넉넉치 않음) 특히나 인증 관련된 코드는 신중해야한다고 생각했기에 Cookie로 전환하는 작업은 하루남은 시기에 적절하지 않다고 판단했다. (로그인 안되는 버그 한번 크게 났어서 롤백한 경험이 있었다.)
- Same origin을 갖고 가는 방법은 리버스 프록시를 한겹 쌓거나, micro frontend를 적용시키는 방법이 있었는데 리버스 프록시 한겹을 쌓기엔 인프라를 따로 구축해야 했기에 시간이 필요했고 micro frontend 또한 시간이 부족할 뿐더러 혼자 판단한 문제가 아니라고 생각했다.
- 링크에 토큰을 query string으로 달고, redirect 된 페이지에는 query string에 토큰이 달려있으면 토큰 기반으로 사용자 인증을 하는 로직을 추가하여 해결하였다.