카카오클라우드 Memstore를 이용한 채팅 웹 서비스 배포
이 문서에서는 3-tier 아키텍처를 기반으로 클라우드에서 채팅 애플리케이션을 배포하는 방법을 소개합니다.
기본 정보
- 예상 소요 시간: 60분
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항 - 다중 가용 영역에서 NAT 인스턴스를 이용한 네트워크 구축
시나리오 소개
채팅이나 온라인 게임처럼 여러 사용자가 동시에 메시지를 주고받아야 하는 경우, 서버와 클라이언트 간의 지속적인 연결과 실시간 통신이 필요합니다. 기본적으로 브라우저와 서버 간 통신에 사용되는 HTTP 프로토콜은 비연결지향적이며, 서버는 클라이언트의 요청이 있어야만 정보를 전송할 수 있습니다. 이를 해결하기 위해 개발자는 Server-Sent Events(SSE)나 WebSocket을 사용하여 서버에서 클라이언트로 직접 정보를 전송할 수 있습니다. SSE는 주로 서버에서 클라이언트로의 단방향 메시지 전송에 사용되고, WebSocket은 양방향 통신을 지원합니다. 그러나 클라이언트의 연결이 서로 다른 서버에 분산되는 경우, 두 클라이언트는 실시간으로 정보를 주고받기 어렵습니다.
이 문제를 해결하기 위해 Pub/Sub 방식을 사용할 수 있습니다. Pub/Sub(Publish/Subscribe)는 메시지를 발행(publish)하는 주체와 이를 구독(subscribe)하는 주체를 분리하여, 서로 독립적으로 메시지를 주고받을 수 있게 하는 패턴입니다. 카카오클라우드 Memstore의 Pub/Sub 기능을 사용하면, 하나의 채널을 통해 여러 서버와 클라이언트가 메시지를 주고받을 수 있어 실시간 통신이 가능합니다.
시나리오 아키텍처