En este tema, aprenderemos cómo desarrollar un microservicio simple desde cero. Cubriremos los siguientes aspectos:

  1. Configuración del Entorno de Desarrollo
  2. Estructura del Proyecto
  3. Implementación del Microservicio
  4. Pruebas del Microservicio
  5. Despliegue Local

  1. 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

  1. Crea una carpeta para tu proyecto:

    mkdir microservicio-simple
    cd microservicio-simple
    
  2. Inicializa un nuevo proyecto Node.js:

    npm init -y
    
  3. Instala Express:

    npm install express
    

  1. 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

  1. 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;
};

  1. 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

npm install mocha chai --save-dev

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:

"scripts": {
  "test": "mocha"
}

Luego, ejecuta las pruebas con:

npm test

  1. Despliegue Local

Para desplegar y probar tu microservicio localmente, simplemente ejecuta:

node src/app.js

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.

© Copyright 2024. Todos los derechos reservados