Para lograr esto, un microservicio debe empaquetarse e instalarse como un solo artefacto con todas sus dependencias definidas dentro de él. Este artefacto se puede implementar en cualquier servidor que tenga un Java JDK instalado (por ejemplo en java). Estas dependencias también incluirán el motor de tiempo de ejecución (por ejemplo, un servidor HTTP o un contenedor de aplicaciones) que albergará el microservicio.
Afortunadamente, casi todos los frameworks de microservicios de Java incluirán un motor de tiempo de ejecución que se puede empaquetar e implementar con el código. Por ejemplo, Spring Boot viene con tomcat y maven integrado. Podemos crear nuestro proyecto con la linea de comandos :
mvn clean package && java –jar target/licensing-service-0.0.1-SNAPSHOT.jar
Para ciertos equipos de operaciones, el concepto de incrustar un entorno de ejecución directamente en el archivo JAR es un cambio importante en la forma en que piensan sobre la implementación de aplicaciones. En una organización empresarial tradicional J2EE, una aplicación se implementa en un servidor de aplicaciones. Este modelo implica que el servidor de aplicaciones es una entidad en sí mismo y, a menudo, sería administrado por un equipo de administradores de sistemas que administraron la configuración de los servidores independientemente de las aplicaciones que se implementan en ellos.
Esta separación de la configuración del servidor de aplicaciones de la aplicación introduce puntos de falla en el proceso de implementación, porque en muchas organizaciones la configuración de los servidores de aplicaciones no se mantiene bajo el control de la fuente y se administra a través de una combinación de la interfaz de usuario y la administración propia de scripts. Es demasiado fácil que se nos traspapele alguna configuración y los entorno de prueba no reflejen las configuraciones del entorno de producción.
El uso de un único artefacto desplegable con el motor de tiempo de ejecución integrado en el artefacto elimina muchas de estas oportunidades de desviación de la configuración. También le permite poner todo el artefacto bajo control de código fuente y permite que el equipo de la aplicación pueda razonar mejor a través de cómo se construye e implementa su aplicación.