우선 필자는 실시간 채팅을 구현할때 왜 Redis를 사람들이 많이 사용하는지 궁금했다.
내가 실시간 채팅을 만들때는 WebSocket, Stomp, Sockjs 뭐 이런걸로 충분히 구현이 가능했기 때문이다.
그런데 생각을 해보니 만약 서버가 여러대로 돌아가고 있는 환경이라면 서로 다른 서버에서의 WebSocket이 작동을 하고 있을텐데 메세지를 주고 받을 수 있을까? 라는 의문이 들었다.
의문점을 풀기 위해 하나는 로컬 서버로 하나는 배포한 서버로 테스트를 해보았다.
역시나 예상대로 로컬은 로컬쪽 WebSocket 메세지 밖에 받지 못한다.
문제점이 뭔지 알아보자.
클라이언트1이 서버1과 연결되어 있을 경우 서버2의 요청을 받을 수가 없다.
클라이언트2도 같은 이유로 마찬가지이다.
하지만 서버같은 경우에는 하나로 할 경우 여러가지 문제가 생길 수 있기 때문에 여러개로 나누는게 일반적일 것이다.
그래서 이거를 해결하기 위해 Redis를 사용해봤다.
이제 서버 여러개가 동작하고 있어도 Redis를 중간다리(?) 역할로 사용해서 잘 작동할 수 있게 구현했다.
배포 서버에서 보내도 로컬 서버에서 데이터를 잘 받는 모습을 확인할 수 있었다.