Resumen
Los pools compartidos de Solana RPC agrupan a muchos usuarios detrás de endpoints comunes, por lo que obtienes una configuración rápida y bajo costo, pero compites por rendimiento, límites de velocidad y espacios de WebSocket. Los nodos dedicados de Solana le dan a tu carga de trabajo sus propios recursos, capacidad predecible y espacio para patrones que requieren archive, trace y suscripciones intensivas. Este artículo desglosa las ventajas y desventajas, las señales de carga de trabajo que te empujan hacia un modelo u otro, y cómo evaluar proveedores como OnFinality para cualquiera de los dos caminos.
El perfil de rendimiento de Solana hace que el acceso RPC sea un problema diferente al de las cadenas EVM. Los bloques llegan rápidamente, las transacciones son densas y los clientes a menudo necesitan tanto sondeo HTTP como suscripciones WebSocket al mismo tiempo. Es por eso que la pregunta de dedicado versus compartido surge con tanta frecuencia: la respuesta cambia lo que puedes construir, no solo lo que pagas.
Recomendación rápida
Usa esta guía breve antes de leer el resto. Asigna las situaciones más comunes a un modelo inicial.
- Prototipos, proyectos de hackathon y paneles de bajo tráfico: comienza con acceso compartido. Obtienes un endpoint funcional de inmediato y puedes validar la lógica del producto antes de gastar en infraestructura.
- Aplicaciones en producción con tráfico de lectura constante y ráfagas ocasionales: comienza compartido, pero mide. Si ves limitación, tasas de error elevadas o caídas de suscripción durante ventanas pico, planifica una migración.
- Bots de trading, indexadores y cualquier cosa que dependa de la confiabilidad de WebSocket: inclínate por dedicado. Los pools compartidos pueden perder o rotar suscripciones bajo carga, lo cual es difícil de depurar desde el lado del cliente.
- Consultas de archivo, escaneos grandes de
getProgramAccountso paginación pesada degetSignaturesForAddress: los nodos dedicados con soporte de archivo suelen ser la opción correcta porque estas llamadas son costosas y de larga duración. - Equipos que necesitan capacidad predecible para un SLA específico: dedicado, con un plan de capacidad claro y un endpoint de failover.
Si no estás seguro, el camino práctico es ejecutar acceso compartido en staging, instrumentarlo y usar esos datos para justificar capacidad dedicada. OnFinality ofrece ambos modelos, para que puedas compararlos con las mismas herramientas. Consulta Precios de RPC y Redes RPC compatibles para opciones actuales.
Qué significan realmente "compartido" y "dedicado" en Solana
El acceso compartido significa que tus solicitudes van a un pool de nodos de Solana que muchos clientes utilizan. El proveedor se encarga del balanceo de carga, las verificaciones de estado y las actualizaciones de nodos. Obtienes un endpoint, un límite de velocidad y cualquier transporte que el proveedor exponga. La ventaja es cero trabajo operativo. La desventaja es que tu tráfico compite con el de todos los demás, y el proveedor decide cómo priorizarlo.
El acceso dedicado significa que un nodo (o un pequeño clúster) está reservado para tu carga de trabajo. No compartes CPU, E/S de disco ni ancho de banda de red con inquilinos no relacionados. Eso importa en Solana porque ciertos métodos RPC son genuinamente pesados: getProgramAccounts con filtros, getSignaturesForAddress en rangos largos y getBlock en slots grandes pueden consumir memoria y disco significativos. En un pool compartido, esas llamadas suelen estar limitadas o restringidas. En un nodo dedicado, son una cuestión de planificación de capacidad en lugar de una cuestión de política.
Un modelo mental útil: el acceso compartido optimiza para amplitud y costo, el acceso dedicado optimiza para profundidad y previsibilidad.
Dónde falla el acceso compartido
El RPC compartido de Solana no es un juguete. Para muchas aplicaciones es la elección correcta durante mucho tiempo. Pero hay patrones de falla reconocibles que aparecen a medida que creces.
| Síntoma que observas | Causa probable en acceso compartido | Qué hacer a continuación |
|---|---|---|
| Respuestas HTTP 429 durante horas pico | Límite de velocidad del pool compartido entre inquilinos | Agrega retroceso, caché de lecturas o mueve llamadas pesadas a un nodo dedicado |
| Las suscripciones WebSocket se detienen silenciosamente | Rotación de conexión o límites de slots en el pool compartido | Lógica de reconexión más un endpoint WebSocket dedicado |
getProgramAccounts devuelve errores o expira | Método restringido o limitado en niveles compartidos | Mueve los escaneos a un nodo dedicado con datos de archivo |
| Picos de latencia sin cambios en el código | Carga de vecinos ruidosos en el pool compartido | Mide p95/p99, luego evalúa capacidad dedicada |
Resultados inconsistentes de getBlock para slots antiguos | Nodo podó datos antiguos del ledger | Usa un nodo dedicado con capacidad de archivo |
Ninguno de estos es motivo para evitar por completo el acceso compartido. Son señales de que tu carga de trabajo ha superado el modelo.
Señales de carga de trabajo que justifican un nodo dedicado de Solana
En lugar de adivinar, mira tu propia telemetría. Estas son las señales que apuntan de manera más confiable a capacidad dedicada:
- Volumen de solicitudes sostenido cerca de tu límite de velocidad. Si rutinariamente alcanzas el 60-80% de tu asignación, no tienes margen para picos de tráfico.
- Arquitectura con muchas suscripciones. Si tu aplicación mantiene cientos o miles de suscripciones WebSocket abiertas, los pools compartidos pueden limitarlas o rotarlas.
- Patrones de lectura pesados. Indexadores, paneles de análisis y backends de billeteras que paginan a través de firmas o escanean cuentas de programas se benefician de disco y memoria dedicados.
- Sensibilidad a la latencia. La lógica de trading y liquidación se preocupa por la latencia de cola, no por los promedios. Los nodos dedicados eliminan la varianza de vecinos ruidosos.
- Requisitos de cumplimiento o aislamiento. Algunos equipos necesitan saber exactamente qué nodo sirve su tráfico.
Si dos o más de estos aplican, el acceso dedicado suele ser más barato que el tiempo de ingeniería dedicado a sortear los límites compartidos.
Conexión a Solana RPC: referencia rápida
Antes de comparar proveedores, confirma que la configuración de tu cliente es correcta. Solana usa JSON-RPC sobre HTTP más un endpoint WebSocket separado para suscripciones.
# HTTP request against a Solana RPC endpoint
curl https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getLatestBlockhash",
"params": [{"commitment": "confirmed"}]
}'
// WebSocket subscription with @solana/web3.js
import { Connection } from "@solana/web3.js";
const connection = new Connection(
"https://solana.api.onfinality.io/public",
{ wsEndpoint: "wss://solana.api.onfinality.io/public-ws" }
);
const subId = connection.onSlotChange((slotInfo) => {
console.log("slot", slotInfo.slot);
});
Estos endpoints públicos son adecuados para desarrollo y tráfico ligero. Para producción, normalmente pasarás a un endpoint con clave o a un nodo dedicado. La página de la red Solana enumera los endpoints y transportes actuales que OnFinality soporta, y Solana Devnet está disponible si necesitas un entorno de prueba.
Cómo evaluar proveedores para cualquiera de los modelos
Cuando comparas proveedores, las preguntas son diferentes según el modelo que estés comprando. Usa esta matriz como lista de verificación.
| Área de evaluación | Qué pedir para acceso compartido | Qué pedir para acceso dedicado |
|---|---|---|
| Límites de velocidad | Solicitudes por segundo y por método, y cómo se manejan las ráfagas | Especificaciones del nodo, rendimiento esperado y cómo se dimensiona la capacidad |
| Soporte de métodos | Qué métodos pesados están permitidos, limitados o bloqueados | Si archive, trace y el conjunto completo de métodos están habilitados |
| Comportamiento de WebSocket | Límites de conexión y suscripción, política de rotación | Endpoint WS dedicado y capacidad de suscripción |
| Failover | Si el pool tiene nodos redundantes detrás | Opciones de redundancia y cómo se configura el failover |
| Observabilidad | Página de estado, informes de errores y paneles de uso | Métricas por nodo y acceso a registros o alertas |
| Soporte | Canales de respuesta y ruta de escalamiento | Soporte nombrado y ayuda de incorporación |
| Modelo de precios | Planes por solicitud o por niveles | Precios por nodo o capacidad reservada |
OnFinality aparece en ambas columnas: acceso compartido a la API RPC a través del servicio API, y capacidad reservada a través de nodos dedicados. Los competidores en este espacio generalmente ofrecen divisiones similares, por lo que los diferenciadores suelen ser el soporte de métodos, el manejo de WebSocket y qué tan transparente es el modelo de capacidad.
Compensaciones de costo y riesgo
El acceso compartido tiene bajo costo fijo y rendimiento variable. El acceso dedicado tiene mayor costo fijo y rendimiento más predecible. La decisión rara vez se trata del precio bruto; se trata de lo que te cuesta una mala solicitud.
Considera un bot de trading. Si una suscripción WebSocket caída causa una liquidación perdida, el costo de esa falla empequeñece la diferencia mensual entre compartido y dedicado. Ahora considera un panel de análisis de solo lectura. Si una consulta lenta solo significa un indicador de carga durante dos segundos adicionales, el acceso compartido está bien y la capacidad dedicada es excesiva.
Un camino intermedio práctico: ejecuta acceso compartido como tu predeterminado y enruta solo las llamadas costosas o sensibles a la latencia a un nodo dedicado. Esto mantiene los costos bajos mientras protege las rutas que importan.
Puntos de control de migración
Si decides pasar de compartido a dedicado, trátalo como una migración controlada en lugar de un interruptor.
- Inventario de tus métodos. Enumera cada método RPC que llama tu aplicación y con qué frecuencia. Marca los pesados.
- Establece una línea base de tus métricas. Registra latencia p50, p95 y p99, tasas de error y estabilidad de suscripciones en acceso compartido.
- Aprovisiona el nodo dedicado. Confirma necesidades de archivo, capacidad de WebSocket y soporte de transporte antes del corte.
- Ejecuta en paralelo. Dirige un porcentaje del tráfico al nodo dedicado y compáralo con la línea base.
- Corta por carga de trabajo. Mueve primero las llamadas más pesadas o sensibles a la latencia, luego el resto.
- Mantén un respaldo. Conserva un endpoint compartido como objetivo de failover y documenta la lógica de conmutación.
Una sonda de monitoreo simple ayuda a confirmar que el nuevo endpoint se comporta como se espera:
# Lightweight health probe for a Solana RPC endpoint
for i in $(seq 1 5); do
curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" \
https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
done
Puntos clave
- El RPC compartido de Solana es el punto de partida correcto para la mayoría de los equipos: rápido de configurar, bajo costo fijo y adecuado para tráfico de lectura constante.
- Los nodos dedicados de Solana importan cuando alcanzas límites de velocidad, dependes de la confiabilidad de WebSocket, ejecutas escaneos pesados o necesitas latencia de cola predecible.
- La señal más clara para migrar es tu propia telemetría, no el marketing de un proveedor. Observa la latencia p95/p99, las tasas de 429 y las caídas de suscripción.
- Puedes mezclar modelos: compartido para lecturas generales, dedicado para llamadas costosas o sensibles a la latencia.
- Evalúa a los proveedores por soporte de métodos, comportamiento de WebSocket, failover, observabilidad y qué tan transparente es su modelo de capacidad.
- OnFinality ofrece tanto acceso compartido a la API RPC como capacidad de nodo dedicado para Solana, para que puedas compararlos con las mismas herramientas.
Preguntas frecuentes
¿Es suficientemente bueno el RPC compartido de Solana para producción?
Para muchas aplicaciones con mucha lectura, sí. Se convierte en un problema cuando te acercas a los límites de velocidad, dependes de suscripciones WebSocket de larga duración o ejecutas métodos pesados como getProgramAccounts.
¿Cuál es la principal diferencia entre nodos dedicados y compartidos de Solana? Los nodos compartidos sirven a muchos inquilinos desde un pool común; los nodos dedicados reservan recursos para tu carga de trabajo. La diferencia práctica se manifiesta en límites de velocidad, soporte de métodos, estabilidad de WebSocket y latencia de cola.
¿Necesito un nodo dedicado para suscripciones WebSocket? No siempre, pero las aplicaciones con muchas suscripciones se benefician de uno. Los pools compartidos pueden limitar o rotar conexiones, lo cual es difícil de diagnosticar desde el lado del cliente.
¿Puedo usar ambos modelos al mismo tiempo? Sí. Un patrón común es acceso compartido para lecturas generales y un nodo dedicado para llamadas costosas o sensibles a la latencia.
¿Cómo sé cuándo migrar? Cuando tus métricas muestran una utilización alta sostenida, 429 frecuentes, caídas de suscripción o picos de latencia que se correlacionan con la carga en lugar de con tu propio código.
¿OnFinality soporta tanto acceso compartido como dedicado a Solana? Sí. Puedes comenzar con la API RPC compartida y pasar a capacidad dedicada a medida que crece tu carga de trabajo. Consulta Precios de RPC y la página de la red Solana para detalles actuales.