Project

세션 불일치를 해결하려면 어떤 방법들이 있을까? [3]

수여닝 2021. 9. 13. 23:12

이전 포스트에서 서버 확장하고나서 생기는 문제인 데이터 불일치를 해결하는 방법들인 sticky session, session clusetering에 대해 알아보았습니다.

하지만 두가지 방법에서 성능상에서 좋지 않는 문제들이 발생할 수 있었습니다.

그래서 또 다른 방법을 알아보도록 하겠습니다.


Session Storage

Session Storage는 무슨 뜻일까요?

storage는 저장이라는 뜻을 가지고 있습니다.

 

그러면 세션 스토리지 방법은 세션 저장소를 사용하는 방법입니다.

https://thenewstack.io/how-to-build-intelligence-into-your-session-stores/

 

그림을 보면 여러 서버가 있더라도 세션 스토리지에 세션 데이터를 저장하고 여러 서버들이 세션 저장소에서 세션 데이터를 읽어오는 방법입니다.

독립된 세션 저장소가 있으면 서버의 개수가 늘어나더라도 세션 데이터 정보들을 세션 저장소에 저장해두고 각각 서버에 데이터를 입력해주면 같은 데이터를 공유할 수 있습니다.

 

이 방법은,

  • 데이터 불일치 문제를 해결할 수 있습니다.
  • 서버 하나가 다운되는 일이 발생하더라도 세션 저장소가 따로 존재하기 때문에 다른 서버에 세션 데이터를 제공해줄 수 있어서 사용자가 불편함없이 서비스를 이용할 수 있습니다.
  • sticky session의 문제점이였던 트래픽이 불균형하게 배분된다는 점도 해결할 수 있습니다.
  • 세션 데이터 정보가 변경되더라도 세션 저장소에 저장되어있는 데이터를 수정하면 되기때문에 session clustering의 문제점이였던 성능저하 부분에서도 해결할 수 있습니다.

 

하지만 이 방법에도 단점은 존재합니다

 

- 세션 저장소가 다운되면 모든 세션 정보가 사라질 수 있습니다

 

독립된 세션 저장소에 세션 정보를 저장하고 있기 때문에 그 저장소에 문제가 생긴다면 모든 서버에 문제가 생길 수 있습니다.

그래서 세션 저장소에서 문제가 생기더라도 서비스에 문제가 생기지 않게 하기위해서 세션 저장소를 하나 더 만들어서 복제해두는 방법을 통해 단점을 해결할 수 있습니다.

 

그렇다면 세션 저장소로 사용할 수 있는 데이터베이스는 어떤게 있을까요?

데이터베이스는 디스크에 저장하는 디스크 기반의 DB와 메모리에 저장하는 메모리 DB가 있는데, 어떤 것이 더 적합할 수 있는지 다음 포스팅에서 알아보도록하겠습니다.

 

참고자료:

https://thenewstack.io/how-to-build-intelligence-into-your-session-stores/