¿Cuál es el mejor lenguaje y marco para escribir servicios de fondo con arquitectura de microservicios?

Además de otras buenas respuestas, ahora puede crear un microservicio muy fácilmente en frameworks en la nube como Amazon AWS y otros. Mi experiencia es con AWS, así que me enfocaré en eso, pero hay muchas alternativas.

Por ejemplo, supongamos que tiene una aplicación que necesita una base de datos de usuario. Desea que un microservicio administre el acceso a esta base de datos, con API como CreateUser, GetUser, UpdateUser, DeleteUser, SearchUsers, etc.

Así es como haría esto en AWS:

  1. Defina una tabla DynamoDB para almacenar sus datos. Esto es bastante sencillo y no requiere codificación.
  2. Use AWS API Gateway para crear una API REST-ful pública para sus operaciones.
  3. Implemente esa API con las funciones de AWS Lambda, en JavaScript (Node.js), Java, Python o C #, que acceden a la tabla DynamoDB para realizar la tarea real (por ejemplo, crear una fila para el nuevo usuario).

AWS en realidad tiene plantillas integradas para este tipo exacto de caso de uso, que es muy común.

Obtiene una tonelada de valor al usar dichos marcos:

  • Simplicidad: no necesita instalar ningún host; no tienes que desplegar nada; no tiene que preocuparse por los detalles de implementación del protocolo, el almacenamiento en caché, el equilibrio de carga, etc. Simplemente escriba el código comercial, básicamente.
  • Escalabilidad: todas las partes de este microservicio escalan esencialmente sin límite. esto depende en parte de su esquema y operaciones, y definitivamente puede arruinarlo si no tiene cuidado, pero la arquitectura subyacente puede llevarlo de un usuario a cientos de millones con poco esfuerzo de su parte y muy pocos recursos desperdiciados.
  • Confiabilidad: si lo hace correctamente, principalmente implementando su API en múltiples zonas de disponibilidad y sin errores , entonces es increíblemente confiable.
  • Seguridad: los front-end de la nube pública como API Gateway proporcionan un montón de características de seguridad como aceleración, protección DDoS, soporte de cifrado, control de acceso, etc., que son terriblemente difíciles de conseguir usted mismo.

Hay más, pero creo que estos son los grandes. Nuevamente, mi experiencia personal es con AWS, pero hay muchas otras opciones.

La arquitectura de microservicios no se trata solo de escribir servicios. Se trata de implementación, mantenimiento, implementación, pruebas y monitoreo. Es por eso que necesita un marco que admita estos requisitos básicos de un MSA. Puede elegir un lenguaje de programación de su elección al escribir microservicios. Pero es importante usar un marco en lugar de escribir desde cero. Estos son algunos de los marcos escritos en Java que se pueden usar para escribir micro servicios.

  1. Ballerina de WSO2: este es un nuevo lenguaje de programación desarrollado por WSO2 centrado principalmente en la escritura de microservicios relacionados con la integración. También se puede usar para implementar sus microservicios de back-end. Viene con un conjunto completo de herramientas para desarrollar, implementar, probar y documentar sus microservicios.
  2. MSF4J de WSO2: este es un marco de microservicios escrito por WSO2 para implementar sus microservicios en lenguaje de programación Java. Viene con soporte incorporado para capacidades de autenticación, métricas y analíticas.
  3. DropWizard: este es un marco escrito en Java que se puede utilizar para crear micro servicios.
  4. Spring Boot: puede escribir microservicios basados ​​en Java utilizando este marco.
  5. Vert.X: Vert.x-Web es un kit de herramientas para escribir sofisticadas aplicaciones web modernas y microservicios HTTP.
  6. RestLet: este es otro marco que se puede usar para escribir microservicios en Java
  7. GoKit: un marco de microservicios para usar con el lenguaje de programación Go
  8. nemeko: un marco de microservicios que se puede usar para escribir microservicios con lenguaje Python.

Al considerar los hechos anteriores, Java tiene la mayoría de los marcos de trabajo muy utilizados para escribir microservicios.

Mi respuesta es sobre los siguientes supuestos:

1.) Le gustaría aprovechar los buenos puntos de los microservicios, pero no quiere agregar una gran curva de aprendizaje al proceso. Los recursos del equipo de desarrollo desean dedicar tiempo al producto en lugar de las operaciones de desarrollo.

2.) Desea tener un enfoque ágil en el desarrollo y la implementación y, al mismo tiempo, Devops debe ser lo suficientemente sano como para fallar con gracia (solo una parte de la solución no funciona debido a errores / actualizaciones).

3.) El marco de desarrollo principal debe ser compatible con la arquitectura de microservicios. Y el marco de desarrollo central debe ofrecer componentes probados en batalla como autenticación, andamios, componente de acceso a datos que acelerará el ritmo de desarrollo.

4.) El producto previsto es de mediana complejidad.

5.) El enfoque de microservicios solo aborda la solución para un conjunto menor de problemas.

Si mis suposiciones son ciertas en su caso , entonces todo lo que necesita es un marco de desarrollo ágil como Spring boot o Grails (Spring + mucho más).

Y para administrar microservicios puede usar Mulesoft Solutions para ESB o Istio

Tampoco fragmente la aplicación en demasiados microservicios, el diseño del microservicio en sí puede convertirse en una pesadilla, así que divida el conjunto de funciones en fragmentos considerables, como un microservicio para ver un tipo de registro, luego uno para operaciones de búsqueda, uno para datalistas, etc. en.

No hay un “mejor lenguaje” ni un “mejor marco” para escribir servicios de fondo con arquitectura de microservicios.

Dicho esto, y por lo que he reunido, el lenguaje Python y el lenguaje Go son opciones adecuadas para este tipo de cosas. Si desea utilizar Python, le sugiero que utilice el micro-marco Flask.

Creo que debo haber respondido muchas preguntas similares a esta.

Lo que pasa con la arquitectura de microservicios es que el lenguaje y los marcos importan poco. Ni siquiera necesita usar ningún marco en absoluto. Elija un idioma en el que se sienta cómodo y para el que pueda encontrar desarrolladores fácilmente (si anticipa una necesidad de hacer crecer su equipo). Si en algún momento se da cuenta de que en uno o dos microservicios está retenido por el idioma, los descarta y los vuelve a implementar en un idioma que se adapte mejor a ese servicio en particular.

El lenguaje y el marco más adecuados para la responsabilidad específica del microservicio. Puede usar diferentes pilas para cada microservicio, como mejor le parezca.