NestJS Redis Pub/Sub과 socketIO로 채팅 앱 백엔드 만들기 -0
안녕하세요 알렉스 입니다. 이번에는 채팅앱 백엔드를 만들면서 백엔드를 구현하도록 하겠습니다.
백엔드를 NodeJS로 구현을 할때 문제점은 NodeJS가 싱글스레드라는 것입니다. 이는 아래 링크를 참고해 주시기바랍니다.
쉽게 말해서 CPU가 한번에 한가지 일만 한다는 것입니다. 물론 NodeJS가 빠르기는 하지만 한번에 많은 부하가 가해지면 서버가 다운될 위험이 있습니다.
![]() |
사진1) 서버 한개로 채팅앱 구현 |
만약 서버 하나로만 채팅앱을 구현할때 단일 서버 또는 SocketIO로 많은 부하가 가해질수 있고 이로 인해서 서버가 다운 될수가 있습니다.
![]() |
사진2) 채팅앱 백엔드 구조 |
이를 위해 Redis의 Pub/Sub기능을 이용하여 채팅앱을 분산(or MicroService)하여 개발할 것입니다. 사진2의 NestJS-1, NestJS-2, NestJS-3은 코드는 같지만 각각 다른 서버 또는 포트에서 동작하고 있는 프로그램 입니다.
각각의 서버는 SocketIO서버를 통해서 유저들과 통신을 하게 됩니다. 이때 user1이 작성한 내용은 Redis에 Publish되고 NestJS2, 3에 Subscribe되서 해당되는 유저들도 데이터를 전달 받습니다.
즉 각 서버는 분리되어있지만 Redis의 Pub/Sub기능으로 인해 데이터를 즉각적으로 공유할수 있습니다.
물론 NodeJS은 싱글 스레드이지만 여러개의 스레드를 동시에 사용할수 있습니다. 그러면 1개의 서버를 사용해도 부담이 적죠. 하지만 그것에 대한 내용은 나중에 작성하도록 하겠습니다.
이번 시리즈는 싱글스레드 NestJS을 이용해서 분산 채팅앱을 만드는것에 집중하도록 하겠습니다.
댓글
댓글 쓰기