oneshim-network
네트워크 통신을 담당하는 어댑터 크레이트. gRPC, HTTP/SSE/WebSocket, 압축, 인증, 배치 업로드를 처리합니다.
gRPC 우선 통신
v0.3.0부터 gRPC를 기본 통신 프로토콜로 사용하며, HTTP/2 차단 환경에서는 REST API로 자동 fallback합니다.
주요 기능
인증 관리
JWT 기반 토큰 관리를 수행합니다.
- 로그인/로그아웃/토큰 갱신
- 만료 전 자동 갱신
- 동시 접근 안전한 토큰 관리
REST API 클라이언트
서버와의 HTTP 기반 통신을 처리합니다.
- 컨텍스트/배치 업로드
- 피드백 전송
- 세션 하트비트
SSE 스트림 클라이언트
서버로부터 실시간 제안을 수신합니다.
- Server-Sent Events 기반 실시간 스트림
- Exponential backoff 재연결
- 네트워크 오류 시 자동 복구
적응형 압축
데이터 크기에 따라 최적의 압축 알고리즘을 자동 선택합니다.
| 데이터 크기 | 압축 방식 | 특징 |
|---|---|---|
| 소량 | 압축 안 함 | 오버헤드 방지 |
| 중간 | gzip | 범용, 호환성 |
| 대용량 | zstd | 높은 압축률 |
| 초대용량 | lz4 | 빠른 속도 |
배치 업로더
이벤트와 프레임을 효율적으로 배치 업로드합니다.
- Lock-free 큐 기반 무경합 동시 입력
- 동적 배치 크기 조절
- 실패 시 자동 재시도
AI 클라이언트
외부 AI API를 호출하여 자동화 의도 해석 및 OCR 요소 추출을 수행합니다.
- LLM 기반 의도 해석 (다중 제공자 지원)
- AI Vision 기반 OCR 요소 추출
gRPC 클라이언트
고성능 서비스 간 통신을 제공합니다.
- 인증, 세션, 컨텍스트 서비스
- Server Streaming RPC (실시간 제안 수신)
- 포트 폴백 전략 (연결 실패 시 대체 포트 자동 시도)
- gRPC + REST 통합 클라이언트 (자동 전환)
Feature Flag
gRPC 기능은 --features grpc 플래그로 활성화됩니다.
데이터 흐름
관련 문서:
- 클라이언트 개요
- oneshim-core - 포트 인터페이스
- oneshim-suggestion - SSE 이벤트 처리