
차세대 향상된 WebSockets를 소개합니다
Solana에서 반응성이 뛰어난 애플리케이션을 구축하려면 실시간 데이터 스트리밍이 필수입니다. WebSockets는 비효율적인 HTTP 폴링을 단일 연결로 대체하며, 지속적인 양방향 통신을 지원하는 대표 프로토콜로 오랫동안 사용되어 왔습니다.
WebSockets는 기존 HTTP 폴링보다 적합하지만, 안정성을 저해할 수 있는 여러 문제가 있습니다. 이는 Solana처럼 처리량이 높은 환경에서 특히 치명적입니다. 무작위 연결 끊김부터 불충분한 필터링까지, 개발자는 오랫동안 자체 대응책을 마련하는 데 상당한 시간과 노력을 들여야 했습니다. 그 결과 핵심 제품 혁신에 집중하기 어려웠습니다.
Helius는 이러한 문제를 오래전부터 인식해 왔습니다. 이전에는 트랜잭션과 계정 업데이트를 더 빠르고 유연하게 스트리밍할 수 있는 향상된 WebSockets를 선보였습니다. 하지만 인프라가 발전하면서 이러한 개선만으로는 Helius가 제공할 수 있는 복원력과 성능을 충분히 구현하지 못한다는 점이 분명해졌습니다.
이제 향상된 WebSockets가 속도, 간편성, 내결함성을 위해 구축된 차세대 gRPC 스트리밍 서비스 LaserStream과 동일한 인프라를 기반으로 작동합니다.
이 통합은 JSON 네이티브 형식의 WebSocket 스트림에 gRPC 수준의 안정성을 제공합니다. 불안정한 연결을 제거하고 프런트엔드 개발자가 최상의 UX를 제공하는 데 집중할 수 있도록 합니다.
WebSockets와 실시간 애플리케이션의 과제
WebSockets는 지속적인 양방향 통신을 제공합니다. HTTP 엔드포인트를 계속 폴링하는 대신 단일 연결로 푸시 알림을 받을 수 있습니다. 하지만 WebSockets에도 다음과 같은 문제가 있습니다.
1. 불안정한 연결과 높은 부하
WebSockets는 상태를 유지하는 장기 TCP 연결을 사용합니다. 따라서 일시적인 네트워크 장애, 프록시 타임아웃, 서버 과부하로 인해 연결이 끊길 수 있습니다.
Solana의 400ms 슬롯 시간과 급증하는 트래픽은 WebSocket의 취약성을 키웁니다. 따라서 개발자는 가동 시간을 유지하기 위해 지수 백오프와 하트비트 핑 같은 자체 재연결 로직을 구현해야 합니다.
2. 과도한 데이터 유입
WebSocket 구독은 종종 지나치게 많은 데이터를 반환합니다.
accountSubscribe 같은 네이티브 구독은 필터링되지 않은 스트림을 전달해 개발자가 불필요한 데이터까지 처리하게 만듭니다. 이 때문에 클라이언트 측에서 필터링해야 하며, 대역폭 사용량이 늘고 처리 지연이 발생할 수 있습니다.
3. 확장성과 리소스 오버헤드
수천 개의 동시 연결을 처리하면 서버 리소스에 부담이 가해집니다. 메모리 누수, CPU 병목, 로드 밸런서 복잡성 증가가 발생하며, 부하 관리를 위해 연결을 샤딩해야 합니다.
WebSockets의 수평 확장은 매우 어렵기로 잘 알려져 있습니다. 대부분의 팀은 이를 완벽하게 구현할 시간, 리소스, 전문성을 갖추기 어렵습니다.
4. 제품 혁신에 쓸 개발 시간 감소
이러한 과제는 차별화된 새로운 기능과 애플리케이션을 구축할 시간을 빼앗습니다. 이 비효율성은 빠르게 변화하는 Solana 생태계의 발전에 보이지 않는 비용을 더합니다.
이처럼 지속되는 문제로 인해 표준 Solana WebSockets는 프로덕션급 애플리케이션에 적합하지 않습니다. 아주 짧은 중단도 기회를 놓치거나 UI에 오래된 정보가 표시되는 결과로 이어질 수 있습니다.
차세대 향상된 WebSockets
이러한 문제를 해결하기 위해 Solana의 표준 WebSockets를 Geyser로 개선한 향상된 WebSockets를 출시했습니다. 계정과 트랜잭션을 더 효과적으로 구독할 수 있습니다.
강력한 필터(예: accountInclude, accountExclude, accountRequired를 통해 최대 50,000개 주소 지원)와 기존 WebSockets보다 빠른 응답 시간을 제공했습니다. 하지만 최초 출시 이후 데이터 스트리밍 인프라는 더욱 발전했습니다.
향상된 WebSockets는 이제 속도, 안정성, 간편성을 위해 구축된 차세대 gRPC 스트리밍 서비스 LaserStream과 동일한 인프라를 기반으로 작동합니다.
이제 WebSocket 래퍼에서 gRPC의 안정성을 경험하세요.
주요 개선 사항은 다음과 같습니다.
업계 최고 수준의 복원력
향상된 WebSockets는 이제 자동 장애 조치와 함께 집계된 여러 노드에서 동시에 스트리밍합니다. 단일 장애 지점을 제거해 복원력을 높이고 가동 시간을 극대화합니다.
고성능
LaserStream은 초저지연 데이터 스트리밍을 위해 설계되었습니다. 이제 향상된 WebSockets에도 최신 개선 사항이 적용되어 가능한 한 가장 빠르게 알림을 제공합니다.
프런트엔드에 최적화된 스트림
업그레이드된 인프라를 기반으로 하는 향상된 WebSockets의 JSON 페이로드를 사용하면 프런트엔드 개발자가 고정밀 스트림을 브라우저, React 앱, 모바일 클라이언트에 직접 통합할 수 있습니다.
적합한 스트리밍 솔루션 선택: 비교
Helius는 특정 사용 사례에 맞게 구축된 여러 데이터 스트리밍 서비스를 제공합니다. 아래에서 각 서비스를 살펴보세요.
향상된 WebSockets
다음과 같은 경우 향상된 WebSockets를 사용하세요.
- 지연 시간, 연속성, 정확성이 손익(PnL), 체결 또는 리스크에 영향을 주지 않는 경우
- JSON 페이로드가 필요한 경우
- 백엔드 복잡성 없이 소비자 UX에 집중하는 경우
| 사용 사례 | 예시 |
| 프런트엔드 실시간 UX | - 지갑 잔액 - 포트폴리오 대시보드 - 앱 내 알림 - 소비자 UX |
LaserStream
다음과 같은 경우 LaserStream을 사용하세요.
- 매 밀리초가 중요한 경우
- 지연 시간, 연속성, 정확성이 손익(PnL), 체결 및/또는 리스크에 영향을 주는 경우
- 더 고급화된 필터링 기능이 필요한 경우
- 자동 재생을 통한 누락 없는 전송이 필요한 경우
- 다양한 커밋 수준에서 트랜잭션을 수신해야 하는 경우
| 사용 사례 | 예시 |
| 백엔드 이벤트 기반 처리 | - 트레이딩 및 리스크 시스템 - 가격 및 주문 흐름 모니터 - 청산 감시 시스템 - 거래소 간 엔진 |
무료 체험을 신청하고 LaserStream이 적합한지 확인하세요.
Shred Delivery
다음과 같은 경우 Shred Delivery를 사용하세요.
- 원시 신호가 필요한 경우
- 자체 디샤딩 파이프라인이 있거나 구축할 수 있는 경우
샤드 수준의 지연 시간이 필요하지만 디샤딩 파이프라인이 없다면 Preprocessed Transactions를 사용하세요. 디코딩된 샤드를 WebSocket으로 전송합니다.
| 사용 사례 | 예시 |
| 초저지연 신호 수집 | - 고빈도 트레이딩(HFT) - 거래소 간 차익거래 - 토큰 스나이핑 |
요약하면 다음과 같습니다.
- 프런트엔드에 적합하고 중요도가 낮은 스트림에는 향상된 WebSockets를 사용하세요.
- 지연 시간의 공백이나 데이터 연속성이 기회에 직접 영향을 주는 백엔드 의사 결정 루프에는 LaserStream을 사용하세요.
- 원시 샤드에서 가장 빠른 신호를 얻기 위해 자체 디샤딩 파이프라인을 사용한다면 Shred Delivery를 사용하세요.
무료 체험을 신청하고 Shred Delivery가 적합한지 확인하세요.
향상된 WebSockets 빠른 시작
향상된 WebSockets는 간단하게 시작할 수 있습니다.
먼저 가입한 후 “API Keys” 섹션에서 API 키를 발급받으세요.
엔드포인트 중 하나에 연결하고 transactionSubscribe 또는 accountSubscribe를 통해 구독하면 필터링된 복원력 높은 스트림을 바로 수신할 수 있습니다.
향상된 WebSockets는 Business 이상 플랜에서 사용할 수 있습니다. Solana의 표준 WebSockets는 Free 및 유료 플랜에서 모두 사용할 수 있습니다.
엔드포인트
- Mainnet:
wss://atlas-mainnet.helius-rpc.com/?api-key=<YOUR_API_KEY> - Mainnet (Gatekeeper Beta):
wss://beta.helius-rpc.com/?api-key=<YOUR_API_KEY> - Devnet:
wss://atlas-devnet.helius-rpc.com/?api-key=<YOUR_API_KEY>
예시: 새로운 Raydium Launchpad 풀 모니터링
다음 Node.js 스크립트는 프로덕션 환경에서 향상된 WebSockets를 사용하는 간단한 예시입니다. transactionSubscribe를 사용해 Raydium의 Launchpad 프로그램을 구독하고, 로그 파싱을 통해 성공적으로 초기화된 풀을 필터링합니다.
import WebSocket from 'ws';
const API_KEY = process.env.HELIUS_API_KEY; // Set your API key as an env var
const WS_URL = `wss://atlas-mainnet.helius-rpc.com/?api-key=${API_KEY}`;
const
RAYDIUM_LAUNCHPAD_PROG
= '
LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj
';
const ws = new WebSocket(WS_URL);
ws.on('open', () => {
console.log('Connected to LaserStream-Powered Enhanced WebSockets!');
ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'transactionSubscribe',
params: [
{
failed: false,
accountInclude: [
RAYDIUM_LAUNCHPAD_PROG
]
},
{
commitment: 'confirmed',
encoding: 'jsonParsed',
transactionDetails: 'full',
maxSupportedTransactionVersion: 0
}
]
}));
// Optional heartbeat ping
setInterval(() => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method: 'ping' }));
}
}, 30000);
});
ws.on('message', (data) => {
try {
const payload = JSON.parse(data.toString());
const result = payload.params?.result;
if (!result) return;
// Filter for init logs
const logs = result.transaction.meta.logMessages || [];
if (!logs.some(log => log.includes('Instruction: Initialize'))) return;
const keys = result.transaction.transaction.message.accountKeys.map(k => k.pubkey);
console.table({
Signature: result.signature,
Creator: keys[1], // From IDL: accounts[1] is creator
BaseMint: keys[7], // From IDL: base_mint is around index 7 in initialize accounts
Slot: result.slot
});
} catch (err) {
console.error('Message parse error:', err);
}
});
ws.on('error', (err) => console.error('WebSocket error:', err));
ws.on('close', () => {
console.log('Disconnected');
});
위 코드는 다음 명령으로 실행하세요.
export HELIUS_API_KEY=your-api-key-here
node raydium-launchpad-stream.js이 스크립트는 새로 출시된 풀의 표를 콘솔로 스트리밍하며, 부하가 높은 상황에서도 누락 없이 전송합니다.
요금 및 사용량 측정
지연 시간과 안정성을 지속적으로 개선하기 위해 2025년 10월 16일부터 신규 플랜의 향상된 WebSockets 사용량은 LaserStream과 동일한 요율로 측정됩니다. 스트리밍 데이터 0.1MB당 3크레딧입니다.
Professional 플랜은 고정 요율로 추가 데이터를 구매할 수 있습니다. 구매한 데이터는 향상된 WebSockets 또는 LaserStream의 데이터 스트리밍에 사용할 수 있습니다.
기존 플랜을 사용 중이라면 요금, 한도, 청구 방식은 그대로 유지됩니다. 별도의 조치는 필요하지 않습니다.
표준 WebSockets는 변경되지 않으며 Free 및 유료 플랜에서 모두 사용할 수 있습니다.
지금 바로 스트림을 한 단계 높이세요
안정성, 성능, 간편함을 모두 갖춘 스트림이 함께 확장됩니다. 지금 향상된 WebSockets로 구축을 시작하세요. 가입하고 API 키를 발급받아 프런트엔드에서 안정성을 직접 경험하세요.
더 스마트하게 스트리밍하고 더 빠르게 혁신하세요.
관련 아티클
Helius 구독하기
최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요


