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
