개요
- 채팅 프로그램을 한번 설계해 보려고 한다.
그냥 파이썬 공부 쫌 해볼라고 개인 프로젝트로 간단한 채팅프로그램 해보는 것임.
동기 & 비동기
- 채팅이라 함은 동기가 될 수도 있고 비동기가 될 수도 있다.
- 하나의 채팅서버가 존재하고 여러 클라이언트가 접속된 경우 메세지는 채팅서버를 통해 바로바로 전달된다. (동기적)
- 채팅서버가 없다? 채팅 서버가 없어도 비동기 방식으로 메세지를 전달(게시)하고 구독중인 클라이언트에게 전달된다. (비동기적)
- 채팅서버가 채팅을 관리할 경우 빠른 메세지 전달이 가능하다.
- 채팅서버 없이 채팅을 게시하면 구독해 가는 방식이므로 채팅서버가 바로 전달해주는 것에 비해 메세지 전달이 느리다.
각자의 장단이 있다고 생각한다. 사실 비동기는 채팅 시스템이라고 할 수 없을 것 같긴함. 어쨋든 내가 생각하는 방식은 publisher & Subscriber 방식. 채팅서버를 관리하는 것보다는 좀 더 간단한 구조로 만들 수 있을 것 같다.
Architecture
- 간단하게 설계해보면 아래와 같다.
생각해볼 문제
- 일단 채팅 서비스는 카프카를 이용하여 만들까 생각중이다.
- 파이썬을 이용하여 Producer, Consumer를 구현
- FastAPI를 통해 웹에서 테스트를 해볼건데…
- 메세지를 얼마나 보여줄 건지, 어떻게 각 producer, consumer를 구분할 것인지 이런 상세한 설계는 구현하면서.. 생각해보자.
시스템 구성
- 카프카, python fastAPI, 웹은 일단 그냥 html, js, websocket?
마무리
만들어보다가 중간중간 필요할 것 같은것들 추가해서 누더기 처럼 만들것임. 그래서 최종 Architecture는 변경될 수 있음