¿Hay ventajas valiosas en la creación de un contenedor de ventana acoplable separado para manejar http?

Pregunta:

Tengo una aplicación web Python ejecutándose en un contenedor acoplable y un contenedor / servicio de base de datos, y me pregunto si la funcionalidad apache / mod_wsgi debería estar contenida dentro del contenedor que ejecuta la aplicación Python en sí, o por separado. Actualmente los estoy ejecutando juntos, pero he visto gráficos como el de este artículo que representan (por ejemplo) nginix como un servicio separado en contenedores. Pero, ¿por qué es útil esto?

Respuesta:

Hay un número de razones:

  • Las instancias se pueden escalar de manera diferente. Por ejemplo, las bases de datos generalmente requieren un mínimo de 3 nodos separados físicamente para mayor durabilidad, donde un servidor web generalmente reside en la memoria y se puede reiniciar rápidamente, por lo que puede mantenerlo solo en un nodo durante tiempos de poco tráfico y escalarlo a más nodos durante el tráfico pico.
  • Puede utilizar una configuración más estándar. Si solo usa un contenedor nginx, puede extraerlo directamente del docker hub y usar la misma imagen que millones de personas han probado, solo con sus propias personalizaciones específicas de la aplicación. No hay que crear ni probar sus propios archivos Dockerfiles, con todas las molestias y riesgos concomitantes.
  • Reduces la superficie de ataque de cualquier vulnerabilidad dada. Si su base de datos tiene un exploit, su atacante no tendrá acceso a nada privado en su contenedor nginx y viceversa.
  • Su orquestación puede ayudarlo a verificar el estado y reiniciar los componentes individuales más fácilmente. Por ejemplo, Kubernetes se puede configurar para verificar periódicamente si hay 200 OK y reiniciar nginx si no lo recibe.
  • Tiene una separación más "física" entre los componentes, lo que hace que sea un poco más fácil hacer cumplir las interfaces entre ellos, hacer que los desarrollen diferentes equipos, actualizarse en diferentes horarios, registrarse en repositorios separados, etc.

Por supuesto, existe una compensación en el sentido de que tiene más partes móviles y ahora necesita algún tipo de orquestación para coordinarse entre ellas. Ese esfuerzo no debe subestimarse. Sin embargo, más allá de cierta complejidad, los beneficios de la modularidad superan la complejidad adicional introducida.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım