-
[SW 정글 120일차] 나만의 무기 28일차 (@socket.io/redis-adapter)기타/SW 사관학교 정글 2021. 12. 1. 02:51
오늘은 여러 대의 소켓서버를 두었을 때 각가의 소켓서버끼리 어떻게 통신할까?를 해결하는 방법을 모색하면서 redis의 pub/sub 기능을 사용하여 socket.io에서 제공하는 module을 사용하면 된다는 것을 알았다.
여러 대의 소켓서버를 두면 DB를 매개체로 사용하면 되지 않을까?라는 생각은 은연 중에 떠올랐지만 실제로 배달의 민족에서 사용하는 방식이었다.
https://techblog.woowahan.com/2547/
물론, 지금 우리의 서비스 규모를 생각했을 때에는 유저 수가 많지도 않고 소켓서버 한 대만 있어도 충분한 트랙픽을 받아낸다.
(Artilley를 통한 스트레스 테스트 결과로 소켓서버에 부하를 주는 서비스이 채팅을 5개의 방에 200번 즉, 1000번의 채팅을 20초동안 치게 했는데 서버 CPU는 50%정도 사용되었고 latency도 높지 않았다.)
하지만 우리의 서비스 규모가 커지고 알림기능, 인터렉션을 위한 실시간 감정표현 기능 등이 추가되면 소켓서버에 부하가 늘어날 것이고 로드밸런서를 사용하여 소켓서버를 2대이상으로 분리하여 scale-out해야할 수도 있다.
우리는 이러한 가정 하에 로드밸런싱도 하고 그에 따라 소켓서버끼리 통신하기 위한 매개체로 redis를 사용하고자 했다.
일단은 socket.io doc사이트와 github을 참고하여 어떻게 사용되는지 알아보고 AWS에서 제공하는 elastiCache를 사용하여 redis를 하나 만들어주었다.
https://github.com/socketio/socket.io-redis-adapter
https://socket.io/docs/v4/redis-adapter/
간단하게 모듈을 가져와서 코드만 추가하면 되는 줄 알았는데 역시나 간단한 작업을 아니였다.
npm start는 됐지만 채팅을 치자마자(소켓서버에 부하가 도착하자마자) app crashed가 발생했다.
오늘 내로 꼭 성공시키고 싶다....
일단은 계속해서 여러 블로그와 stackoverflow를 보며 방법을 찾고 있다.
제발 되라...
<11월 30일(화), 12월 1일(수) 해야할 일>
- 12월 2일(목)은 운영진님들에게 최종 발표라는 생각으로 발표를 해야한다.
- 즉, 수요일까지는 최종 마무리단계라고 생각해야한다.
- 남은 일주일(최종 발표일은 다음주 토요일)정도는 발표 준비, 포스터 준비를 해야하기에 개발할 시간이 많지 않다.
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 122일차] 나만의 무기 30일차 (마무리의 시작) (0) 2021.12.03 [SW 정글 121일차] 나만의 무기 29일차 (완성도를 높이자) (0) 2021.12.02 [SW 정글 119일차] 나만의 무기 27일차 (소켓서버 구조 변경) (0) 2021.11.30 [SW 정글 117일차] 나만의 무기 25일차 (Artillery) (0) 2021.11.28 [SW 정글 116일차] 나만의 무기 24일차 (끝까지 달려야 한다) (0) 2021.11.27