목적
일단 프로젝트의 목적을 정하고 개발의 수준?을 정하는게 좋겠다고 생각해서 목적을 적어 봅니다. 지금까지 제대로 마무리 해본게 없고 이력에 보여줄만한게 없어서 적어도 기능시연이 가능한 마무리가 된 프로젝트를 완성하보자는게 들어가기에 앞선 목표입니다. 그러면 프로젝트에 어떤게 들어가야 할까? 이전에도 목표를 크게 잡아서 실패는 아니였지만 새로운 시도나 일반적인 경우를 너무 적용하려고 해서 그런것 아닐까 해서 제가 알고 있는 기술을 최대한 사용하지만 기능과 규모를 최소한으로 해서 끝내보는걸 주목표로 삼았습니다.
사용 기술
- Golang
- Godot
- Docker
- RDB
MQTT
Golang : 여러 플랫폼 및 아키텍쳐에 빌드가 가능한 Golang에 상당히 가치가 있다고 생각해서 사용했습니다. http 서버에 사용했습니다.
Godot : 게임 개발을 접해보면서 알게된 엔진입니다. 이것도 무료에 다른 여러 형식에 빌드가 되는 장점이 있고 UI를 구성하는데 기존에 코드들이 도움이 되겠다 싶어서 사용해봤습니다.
Docker : 여러 배포환경에서도 쉽게 구성하기에 컨테이너 기반 툴이 정말 이점이 많아서 사용했습니다.
Database -> Postgresql : 전부 활용은 어렵겠지만 무료에 기본 기능들도 좋아서 학습겸 사용해봤습니다.
- MQTT : IOT등에 사용되는 아주 가벼운 통신 프로토콜로 구독, 배포 형식의 통신으로 빠르고 가볍게 구성에 이점이 있을것으로 보고 선택했습니다.
Flow Chart
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 흐름
Client <--> |1. 인증 / 방 목록 / 이전 메시지 조회| Server
Server <--> |2. 데이터 저장 & 읽기| DB
%% 실시간 Pub/Sub 흐름
Client <--> |3. 실시간 채팅 수신/발신 Sub/Pub| Broker
%% 메시지 영속화 (가장 중요한 백엔드 파이프라인)
Broker --> |4. 이벤트 트리거| Webhook
Webhook --> |5. 메시지 적재 요청| Server
마무리
개발중에는 모르는것도 많고 역시 LLM기반 AI를 많이 이용하고 있습니다. vscode에 탑제된 AI도 도움이 많이되고 있습니다. 실상 제가 작성하는 부분은 굉장히 적을정도로요. 그래서 코드 및 구조를 최대한 이해면서 진행라고 합니다. 필요 없을지도 모르지만요. 서론?은 여기까지입니다.