¿Cuál es la mejor manera de escalar servicios web a gran escala?

** ¿Sigues arquitectura monolítica o arquitectura de micro servicios? **

Bueno. Si está utilizando una arquitectura monolítica y una nube pública, digamos Amazon Web Services (AWS) – Cloud Computing Services (Amazon Web Services (AWS) – Cloud Computing Services), Microsoft Azure: Cloud Computing Platform and Services (Microsoft Azure: Cloud Computing Platform y Servicios), Google Cloud Computing, Servicios de alojamiento y API | Google Cloud Platform (Google Cloud Computing, servicios de alojamiento y API | Google Cloud Platform), etc., estos proveedores proporcionan Equilibrio de carga horizontal para su aplicación. Similar a la base de datos.

Entonces se trata de la nube pública y la arquitectura monolítica. Si está utilizando microservicios, puede utilizar la contenedorización y escalar sus contenedores horizontalmente más su VM / Instancia. La arquitectura de microservicio le dará más flexibilidad que la arquitectura monolítica. Puede hacerlo con herramientas de administración de clúster como Kubernetes (Kubernetes) / Apache Mesos.

Si se encuentra en una nube local, debe configurar el centro de datos con soluciones de equilibrio de carga personalizadas. Rendimiento de la base de datos y software de equilibrio de carga | ScaleArc (Software de equilibrio de carga y rendimiento de la base de datos | ScaleArc) es uno de los que he escuchado.

PD

Escalar es siempre la parte más difícil. Debería aumentar y disminuir con cero tiempo de inactividad. 🙂

Esta pregunta es difícil de responder. Depende de sus conjuntos de habilidades, la arquitectura de su sistema (por ejemplo, ¿Está diseñado su sistema para ser dockerizrd?), El presupuesto y los requisitos de SLA.

No hay una talla única para todas las respuestas aquí.

Si no puede usar la nube pública (AWS, GCE, Azure, etc.), debe configurar un centro de datos (o centros de datos), ya sea en las instalaciones o en un centro de datos co-lo (por ejemplo, Switch – Centros de datos de renombre mundial y ecosistemas de soluciones tecnológicas)

Si ha diseñado su sistema para que se ejecute en Docker, entonces podría tener sentido configurar una infraestructura de Contenedores como servicio. Kubernetes, Docker Data Center y Triton Data Center son opciones comunes.

Pero solo tener un centro de datos habilitado para CaaS no responde a su pregunta de escalabilidad. Aquí es realmente donde un arquitecto experimentado puede ayudarlo a descubrir sus necesidades.

La escalabilidad tiene mucho más que ver con la arquitectura / diseño que con seleccionar tecnologías del estante.

Actualizar:

Recientemente compré el libro The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services, Volumen 2: Thomas A. Limoncelli, Strata R. Chalup, Christina J. Hogan: 9780321943187: Libros – Amazon.es

Este libro hace un gran trabajo al describir lo que implica construir soluciones escalables.

También recomendaría El arte de la escalabilidad: Arquitectura web escalable, procesos y organizaciones para la empresa moderna (2a edición): Martin L. Abbott, Michael T. Fisher: 8601421951173: Amazon.com: Libros

Kubernetes podría ser una gran parte de la solución aquí. Debe evaluar cuáles son los componentes que requieren escala en su aplicación. Averigua cuáles tienen estado y cómo escalarías los servicios con estado. No hay salida fácil.

Sin embargo, definitivamente debe considerar lo que le impide usar PaaS. ¿Es porque tienes una nube privada? ¿No quieres pagar por los servicios gestionados?

Hasura es un BaaS + PaaS en su infraestructura (nube pública o privada) construida sobre Kubernetes. Es una solución ordenada para implementar aplicaciones en cualquier lugar y tener la capacidad de controlarlas con Kubernetes.