프로젝트 소개
Centrifugo는 오픈소스 기반의 확장 가능한 실시간 메시징 서버로, WebSocket, HTTP-streaming, Server-Sent Events(SSE), GRPC, WebTransport(실험적)를 포함한 다양한 전송 방식을 통해 온라인 사용자에게 메시지를 전달하도록 설계되었습니다. 이는 사용자 대상 PUB/SUB 모델을 구현하여, 클라이언트가 채널을 구독하고 간단한 HTTP 또는 GRPC API를 통해 백엔드가 게시한 메시지를 수신합니다. 이로 인해 언어에 구애받지 않으며 채팅 앱, 실시간 댓글, 멀티플레이어 게임, 실시간 대시보드, 협업 도구, AI 스트리밍 응답 구축에 적합합니다.
주요 기능은 다음과 같습니다:
- **효율적인 전송**: WebSocket, HTTP-streaming, SSE, GRPC, WebTransport.
- **확장성**: Redis(Redis Cluster 및 Valkey, KeyDB, DragonflyDB 같은 호환 스토어 포함), PostgreSQL, Nats를 통한 수평 확장 내장 지원.
- **간단한 서버 API**: 백엔드 통신을 위한 HTTP 및 GRPC 엔드포인트.
- **비동기 소비자**: 트랜잭션 아웃박스 및 CDC 패턴을 위한 PostgreSQL 및 Kafka 소비자.
- **유연한 인증**: JWT 기반 또는 백엔드 요청을 통한 프록시 방식 인증.
- **풍부한 구독 모델**: 스트림(클라이언트/서버 측), 맵, 공유 폴, 프록시 구독 스트림.
- **채널 권한**: 네임스페이스 개념 및 다양한 권한 전략.
- **메시지 기록 및 복구**: 재연결 시 자동 복구가 가능한 핫 히스토리와 캐시 복구 모드.
- **델타 압축**: 대역폭 절감을 위한 Fossil 알고리즘 기반.
- **프레즌스**: 참여/퇴장 알림이 포함된 온라인 채널 프레즌스.
- **RPC**: 실시간 연결을 통해 백엔드로 RPC 호출 전송.
- **클라이언트 프로토콜**: JavaScript, Dart/Flutter, Swift, Java, Python, Go, .NET(WIP)용 공식 SDK를 갖춘 엄격하고 효과적인 프로토콜.
- **데이터 형식**: 최적화된 직렬화 및 배치 처리를 지원하는 JSON 및 바이너리 Protobuf.
- **관리 UI**: 모니터링 및 테스트를 위한 내장 웹 인터페이스.
- **관찰 가능성**: Prometheus 메트릭 및 공식 Grafana 대시보드.
Centrifugo는 Pubnub, Pusher, Ably 같은 상용 서비스와 socket.io, SignalR 같은 프레임워크의 자체 호스팅 대안으로 자리 잡고 있습니다. 이는 한 번 설정하면 무기한 사용할 수 있도록 설계되어 실시간 전송을 비즈니스 로직에서 분리합니다.
Docker로 빠른 시작:
```bash
docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure
```
그런 다음 http://localhost:8000을 열어 관리 UI를 확인하세요. insecure 플래그는 로컬 테스트 전용입니다.
프로덕션 환경에서는 공식 문서 사이트(centrifugal.dev)의 설치 및 빠른 시작 가이드를 따르세요. 이 프로젝트는 Telegram 및 Discord를 통한 커뮤니티 지원으로 활발히 유지 관리되고 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.