Ejecutar un Microservicio Localmente
Antes del advenimiento de la arquitectura de microservicios, los equipos de desarrollo construían, desplegaban y ejecutaban toda la aplicación como un gran bloque de software. Para probar un pequeño cambio en su módulo no solo mediante pruebas unitarias, los desarrolladores tenían que construir toda la aplicación. Por lo tanto, las construcciones tomaban una gran cantidad de tiempo. Después de la construcción, los desarrolladores desplegaban su versión de la aplicación en un servidor de prueba. Los desarrolladores ejecutaban el servidor ya sea en una máquina remota, o en su computadora local. En el último caso, los desarrolladores tenían que instalar y operar un entorno bastante complejo en su computadora local.
En la era de la arquitectura de microservicios, los desarrolladores escriben, construyen, prueban y ejecutan pequeños servicios de software. Las construcciones son rápidas. Con frameworks modernos como Node.js no hay necesidad de instalar y operar entornos de servidor complejos para probar un solo servicio, ya que el servicio se ejecuta como un proceso regular. No tienes que desplegar tu servicio a algún entorno para simplemente probarlo, así que solo construyes tu servicio y lo ejecutas inmediatamente en tu computadora local.
Este módulo cubre los diferentes aspectos involucrados en desarrollar un solo servicio
en una máquina local. Sin embargo, no necesitas escribir código. En su lugar, construyes,
ejecutas y pruebas un servicio existente: ratings
.
El servicio ratings
es una pequeña aplicación web escrita en
Node.js que puede ejecutarse por sí sola. Realiza acciones similares
a las de otras aplicaciones web:
- Escucha en el puerto que recibe como parámetro.
- Espera solicitudes
HTTP GET
en la ruta/ratings/{productID}
y retorna las calificaciones del producto que coincide con el valor que el cliente especifica paraproductID
. - Espera solicitudes
HTTP POST
en la ruta/ratings/{productID}
y actualiza las calificaciones del producto que coincide con el valor que especificas paraproductID
.
Sigue estos pasos para descargar el código de la aplicación, instalar sus dependencias, y ejecutarla localmente:
Descarga el código del servicio y el archivo de paquete en un directorio separado:
$ mkdir ratings $ cd ratings $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.27/samples/bookinfo/src/ratings/ratings.js -o ratings.js $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.27/samples/bookinfo/src/ratings/package.json -o package.json
Examina superficialmente el código del servicio y nota los siguientes elementos:
- Las características del servidor web:
- escuchar en un puerto
- manejar solicitudes y respuestas
- Los aspectos relacionados con HTTP:
- headers
- path
- código de estado
- Las características del servidor web:
Las aplicaciones de Node.js están escritas en JavaScript, lo que significa que no hay paso de compilación explícito. En su lugar, usan compilación just-in-time. Construir una aplicación de Node.js, entonces significa instalar sus dependencias. Instala las dependencias del servicio
ratings
en la misma carpeta donde almacenaste el código del servicio y el archivo de paquete:$ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN ratings No description npm WARN ratings No repository field. npm WARN ratings No license field. added 24 packages in 2.094s
Ejecuta el servicio, pasando
9080
como parámetro. La aplicación entonces escucha en el puerto 9080.$ npm start 9080 > @ start /tmp/ratings > node ratings.js "9080" Server listening on: http://0.0.0.0:9080
Abre http://localhost:9080/ratings/7 en tu navegador o accede a
ratings
usando el comandocurl
desde una ventana de terminal diferente:$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
Usa el método
POST
del comandocurl
para establecer las calificaciones para el producto a1
:$ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}' {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
Verifica las calificaciones actualizadas:
$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
Usa
Ctrl-C
en la terminal que ejecuta el servicio para detenerlo.
¡Felicidades, ahora puedes construir, probar y ejecutar un servicio en tu computadora local!
Estás listo para empaquetar el servicio en un contenedor.