Cómo crear una aplicación web de microservicios con AWS

Hay muchas, muchas formas diferentes de hacer esto. Aquí hay un diagrama que muestra la “arquitectura de microservicios” más simple posible:

Los ingredientes básicos son:

  1. Una forma para que los usuarios hagan solicitudes y obtengan tráfico en todo el sistema. Por lo general, este es un equilibrador de carga que enruta el tráfico a los microservicios “frontend” (por ejemplo, cada microservicio frontend se registra en una ruta o nombre de dominio diferente en un Application Load Balancer público).
  2. Una forma de ejecutar cada microservicio. Por ejemplo, cada servicio podría ejecutarse en su propio Grupo de Auto Scaling (por ejemplo, ver Aplicaciones de escala en AWS) o todos ellos podrían ejecutarse en un solo clúster de Docker (por ejemplo, ver Ejecutar Docker en AWS desde cero).
  3. Una forma para que los servicios se encuentren entre sí (generalmente llamados “Descubrimiento de servicios”), ya que puede haber múltiples copias de cada servicio, cada una ejecutándose en diferentes IP / puertos que podrían cambiar en cualquier momento. Puede hacerlo utilizando equilibradores de carga (por ejemplo, cada microservicio se registra durante el arranque en una ruta diferente o un nombre de dominio en un Balanceador de carga de aplicaciones interno) o herramientas de descubrimiento de servicio especialmente diseñadas (por ejemplo, Consul).
  4. Una forma de que los servicios se comuniquen entre sí. Esto se puede hacer de forma síncrona a través de llamadas HTTP (p. Ej., API REST) ​​o herramientas RPC (p. Ej. Grpc) o de forma asíncrona a través de colas (p. Ej., RabbitMQ) o pub / sub (p. Ej., Kafka).

Para obtener más información, consulte la charla Ejecución de microservicios en AWS con Docker, Terraform y ECS (puede encontrar un código de muestra funcional para la charla en brikis98 / infraestructura-como-código-conversación):

Hay tres maneras de hacer esto:

  1. Use servicios de AWS como Elastic Container Services y Lambda
  2. Utilice marcos de código abierto que no sean AWS y que probablemente lo ayuden a escribir microservicios
  3. No use ninguno de los dos pero aún cree su software como microservicio.

Usar servicios de AWS

Este es probablemente el enfoque que AWS recomienda por razones obvias (vea mi respuesta: ¿Cuál es el futuro de Amazon Web Services y el mercado de computación en la nube? ¿Tiene AWS una ventaja sostenible que durará?). Tienen su propia versión de la orquestación de Docker a través del servicio de contenedor Amazon EC2, así como Lambda (función como servicio) AWS Lambda. Si sabe que va a estar en AWS en el futuro previsible, este es probablemente el camino de menor resistencia.

Usando herramientas de código abierto

Hay un grupo emergente de herramientas de código abierto para facilitar la escritura de microservicios. Francamente, el término “microservicio” rivaliza con “big data” en su nebulosa, confusión y exageración. Simplemente escribiré un montón de herramientas y dejaré que el lector decida qué se ajusta a sus necesidades.

  • Primero, hay Docker para contenedores. Algunas personas también trabajan en rkt.
  • Para orquestar Docker, hay un montón de Dockerware y Kubernetes.
  • Hay algunas cosas que hacen que los microservicios sean resistentes como Datawire.
  • Y se está trabajando en “Función como servicio” como un proyecto de código abierto como IronFunctions. También hay algunas herramientas de código abierto vinculadas a AWS Lambda como apex.

Hazlo tu mismo

Al final del día, el microservicio es más una forma de pensar / diseñar software que un conjunto de herramientas a las que puede apuntar. Martin Fowler hace un muy buen trabajo al explicar de qué se tratan los microservicios. En otras palabras, usar una herramienta en particular no es necesario ni suficiente.

More Interesting

¿Cuál es el flujo de trabajo estándar para implementar aplicaciones de back-end en AWS?

¿Dónde está el mejor lugar para encontrar desarrolladores de back end en SF que tengan interés en un inicio de viaje temprano?

¿Debo usar AWS X-Ray para el monitoreo de aplicaciones AWS o una de las soluciones APM completas como Dynatrace, New Relic, AppDynamics?

¿Por qué una pequeña empresa cambiaría a la computación en la nube?

¿Cómo se benefician las startups de los marcos y herramientas informáticas sin servidor?

¿Cuál es el mejor servicio de alojamiento de datos para un sitio web?

¿Qué tan eficientes son los servidores físicos tradicionales? ¿Qué pasa con los servidores que ejecutan un entorno virtual?

¿Puedo construir mi propia PC en la nube para juegos y algunas cosas de edición?

Digamos que quiero iniciar un nuevo servicio de chat. Mi inicio usaría solo los servicios de AWS. ¿Cómo podría estimar la cantidad / tamaño de los recursos de AWS (EC2, S3, DynamoDB, Lambda, etc.) que pueda necesitar? No tengo ninguna estimación sobre el número de suscriptores que podría obtener.

Cómo lograr DR en la nube de AWS de una manera rentable

¿Qué tipos de instancia de AWS EC2 debo usar para alojar mis aplicaciones (NodeJS + AngularJS)?

¿Existe algún proyecto informático distribuido similar a [correo electrónico protegido] para el pronóstico del tiempo?

Con AWS bajando los precios, ¿vale la pena pagar una prima a otros proveedores (es decir, Rackspace) por los servicios en la nube?

Estoy listo para iniciar una startup y necesito un servicio en la nube para el alojamiento. ¿Qué debo elegir: Amazon Web Services o Heroku?

¿Hay algún servicio en la nube en el que pueda tener un script Python simple ejecutable de forma programada de forma gratuita?