Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Kotlin in action 6장
- Kotlin in action 5장
- 스프링 컨테이너와 스프링 빈
- 컨베이어 벨트 위의 로봇 Python
- 코틸린인액션
- 고급매핑
- 백준 13460 Python
- Kotlin in action 3장
- 코틀린인액션
- 20055 컨베이어 벨트 위의 로봇
- 객체 지향 설계와 스프링
- 싱글톤 컨테이너
- 스프링 핵심 원리
- 백준 20055 컨베이어 벨트 위의 로봇
- kotlin in action 정리
- KotlinInAction
- 코틀린
- Kotlin
- 7장 고급매핑
- 자바 ORM 표준 JPA 프로그래밍 7장
- 20055
- 스프링 핵심 원리 이해
- 13460 구슬탈출 2
- 기능개발 python
- Kotlin In Action
- spring
- Kotlin in action 10장
- 스프링 핵심 원리 - 기본편
- 백준
- Python
Archives
- Today
- Total
기록하는 습관
[AI] 대화형 AI와 백엔드 통신 방법 (WebSocket vs. SSE) 본문
1. WebSocket vs SSE 비교
특징WebSocketSSE (Server-Sent Events)
통신 방식 | 양방향 (full-duplex) | 단방향 (server -> client) |
연결 유지 | 지속적인 연결 유지 (클라이언트와 서버가 모두 메시지 전송 가능) | 지속적인 연결 유지 (서버에서 클라이언트로만 데이터 전송 가능) |
브라우저 지원 | 대부분의 최신 브라우저 지원 | 대부분의 최신 브라우저 지원 (IE 지원 X) |
재연결 | 직접 구현 필요 | 자동 재연결 지원 (EventSource API) |
사용 사례 | 채팅, 온라인 게임, 금융 거래 | 실시간 알림, 데이터 스트리밍, 로그 업데이트 |
2. 대화형 AI와의 통신에서 적합한 방식
- WebSocket이 더 적합한 경우
- AI가 클라이언트의 입력을 실시간으로 받아야 하고, 결과를 즉시 반환해야 하는 경우 (예: 실시간 채팅 AI, 협업 문서 편집)
- AI가 사용자의 중간 입력을 실시간 반영하여 동적으로 응답을 생성하는 경우 (예: AI 코딩 도우미)
- 일반적인 챗봇처럼 AI가 클라이언트의 요청을 받아 응답하는 패턴이 많을 경우
- SSE가 더 적합한 경우
- AI가 한 번의 요청에 대해 지속적으로 데이터를 스트리밍하는 경우 (예: ChatGPT처럼 길게 이어지는 답변)
- 일방적인 데이터 전송이 주된 경우 (예: 뉴스 업데이트, 실시간 알림)
- 재연결이 중요한 경우 (SSE는 기본적으로 자동 재연결 기능을 제공)
3. 대화형 AI 에서의 적용
AI가 유저와의 대화를 기반으로 추천을 해주거나, 지속적인 이벤트 업데이트가 필요하다면
- WebSocket: 유저가 여러 가지 조건을 변경하면서 AI의 추천이 계속 바뀌는 경우 적합.
- SSE: AI가 특정 조건에 맞는 추천을 한 번 생성한 후 지속적으로 스트리밍할 때 적합.
결론
👉 실시간 대화 및 쌍방향 커뮤니케이션이 필요한 경우 → WebSocket
👉 AI 응답이 일방향 스트리밍(단방향 푸시) 형태라면 → SSE
AI가 실시간 대화형 추천 기능을 담당한다면 WebSocket을, 추천 정보를 스트리밍하듯 보여준다면 SSE를 사용하는 게 좋다.
내가 WebSocket 으로 선택한 이유
- 사용자가 AI 답변 중에 조건을 수정할 수 있음 → 양방향 통신 필요
- SSE는 서버에서 클라이언트로만 데이터를 보낼 수 있어서, 사용자가 조건을 바꿀 때마다 새로운 HTTP 요청을 보내야 함.
- WebSocket을 쓰면 AI가 답변을 보내는 중에도 사용자가 즉시 조건을 수정하고 다시 요청할 수 있음.
- 즉, 연속적인 요청-응답 구조가 필요하므로 WebSocket이 적합!
- AI가 실시간으로 업데이트하면서 보내야 할 수도 있음
- AI가 "추천을 한 번에 다 생성하는게 아니라, 단계별로 점진적으로 응답을 보내는 방식"이라면?
- WebSocket을 쓰면 한 번의 연결에서 스트리밍 방식으로 응답을 보낼 수 있음.
- 반면 SSE는 서버 → 클라이언트 방향이므로, 사용자가 중간에 요청을 수정하려면 새로운 SSE 연결을 만들어야 함.
- 사용자 경험 (UX) 개선
- WebSocket을 쓰면,
- 사용자가 조건을 변경하면 기존 응답을 즉시 취소하고 새로운 플랜을 받을 수 있음.
- AI가 실시간으로 상태 업데이트할 수 있어서,
"지금 추천 생성 중... 🔄" 같은 UI를 쉽게 만들 수 있음.
- WebSocket을 쓰면,
결론
👉 사용자가 AI 응답 중에도 조건을 수정할 수 있는 경우 → WebSocket이 더 적합!
👉 한 번 요청하면 AI가 일방적으로 최종 결과를 전달하는 경우 → SSE 가능
💡 추천 아키텍처 예시 (WebSocket 사용)
- 사용자가 WebSocket 연결 생성 (ws://server/ai-recommend)
- 사용자가 추천 요청 ({"action": "request_plan", "criteria": {...}})
- AI가 실시간으로 응답을 보냄 ({"status": "processing", "step": 1, "data": {...}})
- 사용자가 조건을 변경하면 즉시 새로운 요청을 전송
- 서버는 기존 추천을 취소하고 새로운 추천을 보내줌
이렇게 하면 빠르게 응답을 주고받으면서 실시간 인터랙션이 가능한 AI 추천 시스템을 만들 수 있다.
'개발' 카테고리의 다른 글
[장애차단] MSA 회복성 패턴 (0) | 2022.11.09 |
---|---|
[Error] RDB 백업 관련 에러 발생 (0) | 2022.07.13 |
검색 - Netflix GraphQL Search Indexing 정리 (0) | 2022.07.06 |
[crawling] request와 Beautifulsoup4을 이용한 웹크롤링 (0) | 2020.02.22 |
Comments