진행 사항
첫 포스팅후 한달 완성하고 남았을 시간이지만 많이 느려졌는데 아무튼 지금가지 된 부분과 바뀐 부분을 얘기해보겠습니다.
API Server
인증 사용 시나리오에서는 도입부여서 완성이 되어야 하지만 지금은 간단히 닉네임만 입력해서 진행하는 형태로 채팅 기능을 우선적으로 개발하기 위해 데모? 형식으로 만들었습니다.
서비스 API
- 채팅방 생성, 목록
- 메시지 목록, 저장
위 API들은 GORM을 이용하여 Router <- Handler <- Repository 구조로 구현했습니다.
Webhook
- 중간에 메세지를 저장하기 위한 간단한 프로세스.
- 발신과 수신을 하기위함 토픽을 분리하여 구성.
- Webhook에서 메세지 ID를 발급하고 DB에 저장, Client 수신 토픽으로 Pub.
Webhook Flow
flowchart TD
%% 스타일 정의 (포스팅용 예쁜 색상)
classDef server fill:#f9f,stroke:#333,stroke-width:2px;
classDef client fill:#bbf,stroke:#333,stroke-width:2px;
classDef broker fill:#f96,stroke:#333,stroke-width:2px;
classDef db fill:#9f9,stroke:#333,stroke-width:2px;
%% 노드 정의
Client[Godot Client]:::client
Server[Golang HTTP Server]:::server
Broker[MQTT Broker]:::broker
Webhook[Go Webhook Worker]:::server
DB[(Database)]:::db
%% HTTP / REST API 흐름
Server <--> |데이터 저장 & 읽기| DB
%% 실시간 Pub/Sub 흐름
Client <--> |1. 실시간 채팅 발신 Pub| Broker
%% 메시지 영속화 (가장 중요한 백엔드 파이프라인)
Broker --> |2. 발신 토픽으로 수신| Webhook
Webhook --> |3. 메시지 적재 요청| Server
Webhook --> |3. Client 수신 토픽으로 Pub| Broker
Client
- Godot으로 구성된 Client입니다.
- 구조나 코드상? 개발 툴이 상대적으로 생소해서 새롭게 접한 부분은 따로 포스팅을 해보겠습니다.
마무리
- 최대한 간단히 각 기능을 구현하는데 우선으로 기술들을 적용해보자라고 시작해서 빠르게 될줄 알았는데 조금씩만 사용하는것인데도 어렵네용.
아직 배포환경이나 DB의 대한 정보는 적지 않아서 다음 포스팅에 적어봐야겠습니다.


