El escalado horizontal consiste en añadir nuevas instancias de la aplicación (por ejemplo, nuevos servidores o contenedores) para distribuir la carga entre ellas. El escalado vertical implica aumentar los recursos en un solo servidor (añadiendo CPU, RAM, discos).
Al elegir un enfoque, se consideran los siguientes criterios:
Ejemplo de escalado horizontal a través de Kubernetes:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # número de pods - escalado horizontal selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
Características clave:
¿Es siempre mejor el escalado horizontal que el vertical?
No. Para ciertas tareas (por ejemplo, para servicios monolíticos o stateful), el escalado vertical puede ser más simple y eficiente.
¿Para el escalado horizontal la aplicación no requiere ningún ajuste?
No. La aplicación debe ser stateless, soportar el intercambio de sesiones (por ejemplo, usando una caché externa) y responder correctamente al escalado.
¿El escalado de bases de datos siempre se realiza horizontalmente?
No. No todas las bases de datos se escalan fácilmente de forma horizontal. Las bases de datos relacionales clásicas a menudo se escalan verticalmente (scale-up) o utilizan particionamiento/replicación.