En este tema, aprenderemos cómo desarrollar un microservicio simple desde cero. Cubriremos los siguientes aspectos:
- Configuración del Entorno de Desarrollo
- Estructura del Proyecto
- Implementación del Microservicio
- Pruebas del Microservicio
- Despliegue Local
- Configuración del Entorno de Desarrollo
Para desarrollar un microservicio, necesitamos configurar nuestro entorno de desarrollo. Utilizaremos Node.js con Express para este ejemplo, pero los conceptos son aplicables a otros lenguajes y frameworks.
Requisitos Previos
- Node.js y npm instalados en tu máquina.
- Un editor de código (recomendado: Visual Studio Code).
Instalación de Node.js y npm
Puedes descargar e instalar Node.js desde nodejs.org. Esto también instalará npm (Node Package Manager).
Creación del Proyecto
-
Crea una carpeta para tu proyecto:
mkdir microservicio-simple cd microservicio-simple
-
Inicializa un nuevo proyecto Node.js:
npm init -y
-
Instala Express:
npm install express
- Estructura del Proyecto
Una buena estructura de proyecto es crucial para mantener el código organizado y fácil de mantener. Aquí hay una estructura básica para nuestro microservicio:
microservicio-simple/ │ ├── src/ │ ├── controllers/ │ │ └── userController.js │ ├── routes/ │ │ └── userRoutes.js │ ├── services/ │ │ └── userService.js │ └── app.js │ ├── test/ │ └── userController.test.js │ ├── package.json └── README.md
- Implementación del Microservicio
3.1. Configuración de Express
Crea un archivo app.js
en la carpeta src
y configura Express:
// src/app.js const express = require('express'); const app = express(); const userRoutes = require('./routes/userRoutes'); app.use(express.json()); app.use('/api/users', userRoutes); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
3.2. Definición de Rutas
Crea un archivo userRoutes.js
en la carpeta routes
:
// src/routes/userRoutes.js const express = require('express'); const router = express.Router(); const userController = require('../controllers/userController'); router.get('/', userController.getAllUsers); router.post('/', userController.createUser); module.exports = router;
3.3. Controladores
Crea un archivo userController.js
en la carpeta controllers
:
// src/controllers/userController.js const userService = require('../services/userService'); exports.getAllUsers = (req, res) => { const users = userService.getAllUsers(); res.json(users); }; exports.createUser = (req, res) => { const newUser = req.body; const createdUser = userService.createUser(newUser); res.status(201).json(createdUser); };
3.4. Servicios
Crea un archivo userService.js
en la carpeta services
:
// src/services/userService.js let users = []; exports.getAllUsers = () => { return users; }; exports.createUser = (user) => { users.push(user); return user; };
- Pruebas del Microservicio
Es importante probar nuestro microservicio para asegurarnos de que funciona correctamente. Utilizaremos Mocha y Chai para las pruebas.
Instalación de Mocha y Chai
Creación de Pruebas
Crea un archivo userController.test.js
en la carpeta test
:
// test/userController.test.js const chai = require('chai'); const chaiHttp = require('chai-http'); const app = require('../src/app'); const should = chai.should(); chai.use(chaiHttp); describe('Users', () => { it('should GET all the users', (done) => { chai.request(app) .get('/api/users') .end((err, res) => { res.should.have.status(200); res.body.should.be.a('array'); done(); }); }); it('should POST a new user', (done) => { let user = { name: "John Doe", email: "[email protected]" }; chai.request(app) .post('/api/users') .send(user) .end((err, res) => { res.should.have.status(201); res.body.should.be.a('object'); res.body.should.have.property('name').eql('John Doe'); done(); }); }); });
Para ejecutar las pruebas, añade el siguiente script en tu package.json
:
Luego, ejecuta las pruebas con:
- Despliegue Local
Para desplegar y probar tu microservicio localmente, simplemente ejecuta:
Tu microservicio estará disponible en http://localhost:3000/api/users
.
Conclusión
En esta sección, hemos cubierto los pasos básicos para desarrollar un microservicio simple utilizando Node.js y Express. Hemos configurado el entorno de desarrollo, definido la estructura del proyecto, implementado el microservicio, escrito pruebas y desplegado el servicio localmente.
En el siguiente módulo, exploraremos cómo gestionar la configuración de microservicios de manera eficiente.
Curso de Microservicios
Módulo 1: Introducción a los Microservicios
- Conceptos Básicos de Microservicios
- Ventajas y Desventajas de los Microservicios
- Comparación con Arquitectura Monolítica
Módulo 2: Diseño de Microservicios
- Principios de Diseño de Microservicios
- Descomposición de Aplicaciones Monolíticas
- Definición de Bounded Contexts
Módulo 3: Comunicación entre Microservicios
Módulo 4: Implementación de Microservicios
- Elección de Tecnologías y Herramientas
- Desarrollo de un Microservicio Simple
- Gestión de Configuración