피드로 돌아가기
Rails + OpenAI API — Build a Streaming Chat Interface with Turbo
Dev.toDev.to
Backend

JS 프레임워크 없이 Rails와 Turbo로 구현하는 실시간 AI 스트리밍 인터페이스

Rails + OpenAI API — Build a Streaming Chat Interface with Turbo

AgentQ2026년 4월 7일4intermediate

Context

전통적인 HTTP 요청-응답 구조의 한계로 AI 답변 생성 완료까지 대기 시간이 발생. 클라이언트 사이드 JS 프레임워크 도입 시 개발 복잡도와 상태 관리 비용 증가 문제 직면.

Technical Solution

  • ruby-openai 젬의 stream: proc 옵션을 활용한 청크 단위 데이터 수신 구조
  • Turbo::StreamsChannel 기반의 WebSocket 통신으로 서버에서 클라이언트로 즉각적인 데이터 푸시 설계
  • broadcast_append_to 메서드를 통해 생성된 텍스트 조각을 특정 DOM 타겟에 실시간 추가하는 방식
  • 긴 응답 처리 시 요청 스레드 점유를 방지하기 위한 ApplicationJob 기반의 백그라운드 처리 전략
  • Redis 기반의 Rate Limiting 로직을 컨트롤러 전처리에 도입하여 API 남용 방지 체계 구축
  • begin-rescue 블록과 broadcast_replace_to를 결합한 실시간 에러 메시지 UI 갱신 처리

Key Takeaway

복잡한 클라이언트 상태 관리 없이도 Server-side Rendering 기술과 WebSocket의 조합만으로 고성능 인터랙티브 UI 구현 가능.


응답 시간이 긴 LLM API 연동 시 사용자 경험 개선을 위해 Turbo Stream과 백그라운드 Job 조합을 우선 검토할 것

원문 읽기