채팅 서비스 구조
포스트
취소

채팅 서비스 구조

개요

  • 채팅 프로그램을 한번 설계해 보려고 한다.

그냥 파이썬 공부 쫌 해볼라고 개인 프로젝트로 간단한 채팅프로그램 해보는 것임.

동기 & 비동기

  • 채팅이라 함은 동기가 될 수도 있고 비동기가 될 수도 있다.
    • 하나의 채팅서버가 존재하고 여러 클라이언트가 접속된 경우 메세지는 채팅서버를 통해 바로바로 전달된다. (동기적)
    • 채팅서버가 없다? 채팅 서버가 없어도 비동기 방식으로 메세지를 전달(게시)하고 구독중인 클라이언트에게 전달된다. (비동기적)
  • 채팅서버가 채팅을 관리할 경우 빠른 메세지 전달이 가능하다.
  • 채팅서버 없이 채팅을 게시하면 구독해 가는 방식이므로 채팅서버가 바로 전달해주는 것에 비해 메세지 전달이 느리다.

각자의 장단이 있다고 생각한다. 사실 비동기는 채팅 시스템이라고 할 수 없을 것 같긴함. 어쨋든 내가 생각하는 방식은 publisher & Subscriber 방식. 채팅서버를 관리하는 것보다는 좀 더 간단한 구조로 만들 수 있을 것 같다.

Architecture

  • 간단하게 설계해보면 아래와 같다. Chat Architecture

생각해볼 문제

  • 일단 채팅 서비스는 카프카를 이용하여 만들까 생각중이다.
  • 파이썬을 이용하여 Producer, Consumer를 구현
  • FastAPI를 통해 웹에서 테스트를 해볼건데…
  • 메세지를 얼마나 보여줄 건지, 어떻게 각 producer, consumer를 구분할 것인지 이런 상세한 설계는 구현하면서.. 생각해보자.

시스템 구성

  • 카프카, python fastAPI, 웹은 일단 그냥 html, js, websocket?

마무리

만들어보다가 중간중간 필요할 것 같은것들 추가해서 누더기 처럼 만들것임. 그래서 최종 Architecture는 변경될 수 있음

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

블로그 진행 방향

Kafka with K8s