¿Se pueden desarrollar microservicios solo en Node.js? ¿No podemos desarrollarlos en otros lenguajes como Java?

Los microservicios se pueden desarrollar utilizando muchos idiomas.

  • No hay nada parecido, solo se puede desarrollar en Node.js
  • Ni siquiera hay nada como ‘este idioma es el mejor idioma para microservicios’.

Entonces, sí, puede desarrollarlos en varios idiomas, incluido Java, según sus preferencias, contexto y necesidades de proyecto.

  • La noción de un microservicio es independiente del lenguaje. Se trata del hecho de que un sistema o componente debe estar dedicado a un pequeño conjunto de funcionalidades.
  • Por ejemplo, si tiene una aplicación de comercio electrónico, podría tener un servicio para toda la aplicación. O podría tener múltiples microservicios, cada uno de los cuales representa construcciones como:
    • Gestión de clientes
    • Inventario
    • Precios
    • Cupones
    • Compra
    • Upsell
    • Facturación
    • Envío
    • Rastreo
    • Detección de fraude
    • notificación, etc.
  • Al hacer esto, crea un sistema de múltiples piezas autosuficientes manejables más pequeñas, en lugar de un gran monolito.
  • Ahora cada corte vertical que elegimos tiene ciertas operaciones que puede hacer. Por ejemplo, para el servicio de facturación, puede registrar el instrumento de pago, obtener el instrumento de pago, actualizar, eliminar, cobrar, etc.
  • Por lo tanto, puede diseñar un micro servicio que admita este conjunto específico de métodos específicos y específicos para esta entidad.
  • Como puede ver, no nos preocupamos por el idioma ni hablamos de eso en absoluto. Es solo un medio para un fin.

Cuando llegue a la implementación, hay varios idiomas que pueden hacer el trabajo. Java, C #, Python, Node, Go, Ruby, etc.

Todos estos y otros idiomas tienen marcos de api (api web, Django, Spring boot, etc.) para ayudarlo a convertirse rápidamente en un micro servicio.

Y muchos de estos idiomas se utilizan en todo el mundo para escribir servicios todos los días, sin ningún problema.

No. Nodo es bastante bueno en eso, sin embargo. Con su tamaño relativamente pequeño y su alto rendimiento en comparación con las típicas pilas de desarrollo web y su soporte HTTP muy robusto, probablemente lo llevará allí más rápido y más fácil. Dicho esto, puede usar Go, Perl, Python, C o cualquier otro idioma con perfiles similares.

Evitaría pesos pesados ​​como Java, Ruby y pilas completas de LAMP (hp). No son * incorrectos * para usar, pero tenderá a escribir más código para las mismas tareas (o terminará usando un marco de desarrollo rápido que hinchará y restringirá el diseño de su aplicación), tendrá más partes móviles para mantener, y gastará más en hosting para manejar la misma cantidad de clientes.

Al final, todo se reducirá a costo / beneficio y qué recursos tiene disponibles. Puede ser que esté sentado en una pila de servidores inactivos y se sienta más cómodo usando Java, en cuyo caso, hágalo.

Estoy de acuerdo con la respuesta de Justen. Java hace que el micro servicio ya no sea tan micro. Pero puede haber otras razones para usar Java para microservicios, especialmente si su equipo técnico está más familiarizado con Java. Para facilitar el paso a los micro servicios, existen varias herramientas que puede usar con Java y Java EE.

  • Spring Boot: https://dzone.com/articles/sprin
  • Dropwizard: cómo crear microservicios Java con Dropwizard
  • Wildfly: WildFly Swarm: creación de microservicios con Java EE

Casi todos ellos siguen el concepto de frascos gruesos y hay que tener cuidado de mantener la parte de servicio en el frasco para hacer solo una cosa que es el concepto de microservicio.

Lo anterior combinado con Docker Compose ( https://docs.docker.com/compose/ ) le permitirá crear complejas arquitecturas y dependencias integradas de microservicios basadas en Java.

No. El contrapunto para usar Node es que JavaScript es un lenguaje de ingeniería de software terrible (La mentira que ha engañado a una generación de desarrolladores) y Node tiene limitaciones de escalabilidad (The Fall of the House of Node). Elegiría Ir sobre Nodo cualquier día. Y Java no es malo en absoluto. Por simplicidad y facilidad de uso, incluso iría con Python. Nodo ha sido sobrevendido.

El uso de diferentes tecnologías para diferentes microservicios es uno de los beneficios clave del estilo de arquitectura de microservicios [1]. Para poder hacer esto, sus microservicios deben comunicarse utilizando un protocolo de tecnología independiente (por ejemplo, HTTP, REST, AMQP, ..). Si los servicios no están comunicando tecnología independiente, su solución no es una arquitectura de microservicio.

Entonces, para cada microservicio se le permite elegir el lenguaje de programación, el marco y la base de datos. Debido a que en una arquitectura de microservicio el tamaño de los servicios tiende a ser menor, el riesgo de elegir una nueva tecnología es mínimo. En caso de que se dé cuenta de que tomó una decisión tonta, puede volver a escribir el servicio en otro idioma.

Notas al pie

[1] https://specify.io/concepts/micr

Los microservicios como concepto se abstraen al tipo de lenguaje que uno usa para construirlos. Los microservicios se pueden construir en todos los lenguajes populares como java, scala, php, perl, go lang, etc. Depende totalmente de la preferencia del desarrollador.

Una de las buenas características de la arquitectura de microservicios es que puede escribir diferentes servicios en diferentes idiomas. Esto es del blog de Martin Fowler:

Existe un mínimo de gestión centralizada de estos servicios, que pueden escribirse en diferentes lenguajes de programación y utilizar diferentes tecnologías de almacenamiento de datos.

Entonces, si alguna parte es más adecuada para Node.js, use Node.js. Si Java satisface las necesidades de otras partes, use Java.