La elección de la arquitectura del lado del servidor depende del contexto y el propósito con el que vivirá … Hay dos arquitecturas principales a considerar al diseñar la infraestructura del lado del servidor:
Monolito [1]
Una arquitectura de aplicación monolítica es la arquitectura más tradicional para aplicaciones web. Todas las funciones necesarias solicitadas por el cliente se realizan desde dentro de la pila ; un término acuñado para ilustrar esta arquitectura que se ha adaptado para describir todas las tecnologías utilizadas dentro de un sistema.
- ¿Hay un clon de Quora en meteor.js o angular.js?
- ¿Me puede dar ejemplos de aplicaciones web basadas en datos?
- ¿Existe una buena herramienta para ofrecer visitas guiadas automatizadas de aplicaciones web?
- ¿Qué crees que deben usarse una buena configuración / tecnologías para crear un SaaS de análisis web?
- ¿Dónde se usan las gramáticas JAPE? ¿Qué aplicaciones usan gramáticas JAPE o sistemas similares?
Pros:
- Simple de desarrollar, probar e implementar
Contras:
- Difícil de escalar
- Vulnerable a la deuda técnica debilitante [2]
- Bloqueo de decisiones tecnológicas tempranas (por ejemplo, elección de idioma, patrones de código, etc.)
Microservicio [3] (SOA contemporáneo)
La arquitectura de microservicios se refiere a un patrón de diseño en el que las funciones que tradicionalmente realiza un servidor “monolítico” se desarrollan en “servicios” independientes que se comunican entre sí a través de protocolos web / API. Luego, los servicios se conectan en red, dependiendo el uno del otro para responder las llamadas de los demás para cumplir con la solicitud del cliente.
Pros:
- Flexibilidad; los servicios se pueden reemplazar por cualquier motivo (delegación a un servicio de terceros, elección de idioma, refactorización, etc.).
- Resistencia; Los servicios pueden trabajar juntos para equilibrar la carga de manera más efectiva en todo el sistema.
Contras:
- Complejidad; Sin duda, se introducirán nuevos errores debido a la complexy implicación con los sistemas distribuidos [4].
- Gastos generales adicionales; cada servidor en el que reside el servicio deberá gestionarse de forma independiente.
Arquitectura “sin servidor”; una opción alternativa
Con la proliferación de Anything-as-a-Service, es completamente posible desarrollar aplicaciones web exitosas utilizando nada más que servicios de terceros disponibles en la actualidad. Servicios como Amazon Lambda y Google Cloud Functions le permiten escribir las funciones que necesita, sin la molestia de administrar uno o más servidores en el proceso. El único servicio adicional para mantener es el que sirve al cliente al dispositivo de los usuarios, si es necesario.
Pros:
- El camino más rápido para el despliegue
- Soporte (por ejemplo, soporte al cliente, documentación, etc.)
- Escalabilidad; si puede pagarlo, casi puede garantizar la disponibilidad
Contras:
- Costo; estas sutilezas tendrán un precio
- Cerrar; a menos que esté correctamente diseñado, cambiar de estos servicios puede convertirse en un gasto.
Notas al pie
[1] Patrón de arquitectura monolítica
[2] Deuda técnica
[3] Patrón de arquitectura de microservicios
[4] Notas sobre sistemas distribuidos para sangre joven