Escalado y capacidad
Tu operación no carga igual todos los días. Un cierre de mes, una campaña, una
importación masiva o una integración que lanza miles de operaciones seguidas
exigen del entorno algo que un martes cualquiera no exige. Esta página explica
cómo se dimensiona tu entorno y qué hacemos cuando la carga crece.
- Más instancias (escalado horizontal): copias adicionales de tu
aplicación atendiendo peticiones en paralelo, con el tráfico repartido entre
ellas.
- Más recursos por instancia (escalado vertical): más capacidad de cálculo
y más memoria para el mismo componente.
Las dos se aplican sobre tu entorno existente, sin rehacerlo y sin migrarte
a ningún otro sitio, siguiendo el mismo procedimiento controlado que cualquier
otro cambio (consulta
Despliegues y cambios).
Modelos de despliegue
No todas las cargas se parecen, y aquí está buena parte de la diferencia entre
absorber un pico y notarlo. Tu entorno puede ejecutarse de dos formas:
| Modelo |
Cómo se ejecuta |
Para qué |
| Unificado |
Un mismo conjunto atiende las peticiones de los usuarios y ejecuta los procesos de fondo. |
El caso general: sencillo y suficiente para la mayoría de operaciones. |
| Separado |
Las peticiones de usuario, las tareas programadas y los procesos de fondo se ejecutan en conjuntos independientes, cada uno con sus propios recursos. |
Volúmenes altos de transacciones, procesos pesados o integraciones intensivas. |
La ventaja del modelo separado es directa: una facturación masiva, una
importación o un recálculo no compiten por los recursos que atienden a las
personas que están usando la aplicación en ese momento. El proceso pesado tarda
lo que tenga que tardar; la aplicación sigue respondiendo.
flowchart LR
U([Usuarios]) --> W["Peticiones de usuario<br/>una o varias instancias"]
T["Tareas programadas"] --> DB
F["Procesos de fondo<br/>e integraciones"] --> DB
W --> DB[("Base de datos<br/>+ agrupador de conexiones")]
La base de datos
Es la pieza que primero acusa un volumen alto de transacciones, y por eso tiene
dos mecanismos propios:
- Réplica y conmutación por error automática: la base de datos puede
desplegarse con una copia secundaria sincronizada. Si el ejemplar principal
falla, la réplica toma el relevo automáticamente, sin intervención manual
y sin restaurar una copia de seguridad.
- Agrupador de conexiones: entre tu aplicación y la base de datos hay una
pieza que reutiliza y multiplexa las conexiones. Es lo que permite que
muchos usuarios y procesos simultáneos no agoten la capacidad de conexión de
la base de datos.
La puerta de entrada crece sola
La pasarela por la que entra todo el tráfico HTTPS ajusta automáticamente su
número de instancias según el tráfico que recibe: crece cuando sube y se
repliega cuando baja. Es la pieza donde el crecimiento automático tiene sentido,
porque su trabajo es homogéneo y no depende de la lógica de tu negocio.
Delante de tu aplicación hay además límites razonables de peticiones, para
que un tráfico anómalo —automatizado o accidental— no degrade el servicio. Son
ajustables: si tu integración necesita un caudal mayor, se coordina y se
sube.
Niveles de capacidad
Cuando la demanda agregada de la plataforma aprieta, no todos los entornos son
iguales. Cada entorno tiene un nivel de capacidad:
| Nivel |
Qué significa |
| Crítico |
Recursos reservados en exclusiva para el entorno, disponibles siempre, los use o no. Para operaciones que no admiten degradación. Se activa a petición. |
| Producción |
Prioridad sobre preproducción y desarrollo: cuando hace falta sitio, se lo ceden ellos. Es el nivel de todo entorno productivo. |
| Preproducción |
Por debajo de producción; nunca desplaza a otro entorno. |
| Desarrollo |
El nivel más bajo; nunca desplaza a otro entorno. |
Qué es y qué no es
Un nivel de capacidad ordena quién tiene sitio primero cuando la
demanda aprieta. El nivel crítico va un paso más allá y reserva ese
sitio de antemano. Ninguno de los dos es, por sí solo, un compromiso de
rendimiento: eso lo dan el dimensionamiento de tu entorno y, cuando aplica,
tu contrato de servicio.
Cómo se decide
Ni a ojo, ni a golpe de incidencia:
- Medimos. Vigilancia continua del uso de cálculo, memoria y
almacenamiento, y de los tiempos de respuesta (consulta
Monitorización).
- Se propone. Nosotros, cuando la tendencia lo pide; o tú, cuando sabes que
viene un pico previsible: una campaña, una migración, un cierre.
- Se aplica como cualquier otro cambio: descrito en la configuración
versionada, revisado y desplegado mediante reemplazo progresivo, sin corte
perceptible y reversible.
A petición y por recomendación
Instancias adicionales, modelo de despliegue separado, réplica de base de
datos y nivel crítico son capacidades disponibles, no automáticas: las
activamos cuando nos lo pides, y te las recomendamos cuando lo que medimos
lo aconseja. En ambos casos el cambio se aplica sobre tu entorno actual.
Lo que esto no cubre
El escalado responde a más carga. Para el fallo de una pieza está la
alta disponibilidad, y para un escenario grave, la
recuperación ante desastres. Son tres respuestas a
tres problemas distintos, y conviene no confundirlas.