
싸피의 마지막 프로젝트로 구글 기업 연계 DB Deep을 진행했습니다. DB Deep은 LLM을 활용한 기업 데이터 분석 서비스입니다. 데이터 분석은 전문성을 요구하는 영역이었으나 생성형 AI의 등장으로 여러 기업에서 쉽게 접근할 수 있는 방법을 모색 중 입니다.
이번 프로젝트를 진행하며 새로운 기술을 활용하고 웹소켓 채팅을 구현하려다보니 석연치 않은 부분이 많아 정리를 해보겠습니다.
가장 먼저 찾아본 서비스는 Chat GPT입니다. 가장 처음 생성형 AI를 선보인 기업이고 지금도 압도적인 업계 1위를 지키고 있는 서비스인 Chat GPT는 SSE (Server-Sent Event)를 사용하고 있습니다.

서버에서 클라이언트로 단방향 실시간 데이터를 전송하는 HTML5 표준입니다. 브라우저에서 JavaScript를 수신하며, 실시간 알림이나 로그 스트리밍에 유리합니다.
[흐름]
EventSource를 통해 서버 연결text/event-stream Content-Type으로 응답[장점]
[단점]
ChatGPT가 SSE를 선택한 이유는 아마도? 다음과 같습니다.
API 통신이 아닌 SSE를 선택한 이유는 생성형 AI의 응답이 완성까지 굉장히 느리기 때문에 사용자를 붙잡아 두기 위한 전략이라 생각합니다. 실제로 GPT 쓰면서도 와다닥 답변 하는 느낌이라 가만 있는 것이지 그마저도 요즘엔 답변 생성하는 도중에 다른 짓 합니다.
저희는 많이.... 고민했지만 Websocket을 이용해 구현하기로 했습니다. 근거는 다음과 같습니다.
text/event-stream 기반 단일 메시지 타입만 지원하기 때문에 개발 단계에서 구조화된 메시지 포맷을 통한 쉬운 유지 보수를 의도함
클라이언트와 서버 간 양방향 통신 (Full-Duplex)을 가능하게 해주는 프로토콜, 한번 연결되면 양측 모두 자유롭게 데이터를 주고 받기 가능
[흐름]
ws:// or wss://[장점]
[단점]

6주라는 짧은 기간에 가장 중요한 핵심 기능을 어떻게 구현할까 고민이 너무 짧았던 것 같기도 하고 아쉬운 선택은 아니었나..싶기도 합니다.
사내 서비스라 인프라 요소를 좀 더 고려해서 SSE를 선택했어도 괜찮았을 것 같고... 피드백 기반 성능 개선을 위해선 WebSocket이 더 좋은 것 같기도하고...
아직 웹에서 실시간 통신은 장단점이 있는 것 같습니다. 좀 더 다양한 방법으로 프로젝트를 리팩토링 해보고 싶네요.