terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash -- cat microservices-model.md
guest@codeandosimple: ~/blog/architecture $ cat microservices-model.md

Microservices Model_

// "Divide and conquer"

The microservices model proposes building an application as a set of small, autonomous, and specialized services. Each microservice handles a specific functionality, is deployed independently, and communicates with others through well-defined APIs.

# Where Does This Idea Come From?

The need to scale complex systems, maintain independent teams, and improve development times pushed the emergence of this architecture. Large companies like Netflix, Amazon, or Spotify adopted it to divide their monolithic systems into distributed services.

# Key Characteristics

  • Decomposition by functionality or domains.

  • Each microservice has its own database (data independence).

  • Communication via HTTP/REST, gRPC, events, or other mechanisms.

  • Independently scalable, deployable, and versionable.

Microservices Model

# Everyday Analogy

Imagine a shopping mall. There's a clothing store, a bookstore, an ice cream shop. Each business has its own team, its own checkout, its own inventory. If one store closes, the mall keeps working. That's how microservices are: independent but collaborating.

# Advantages

  • verified

    Selective Scalability

    Allows scaling specific parts of an app based on demand.

  • verified

    Autonomous Teams

    Facilitates the work of small, independent teams.

  • verified

    Resilience

    A failure in one service doesn't necessarily affect the entire application.

  • verified

    Technological Diversity

    Allows using different languages or databases per service.

# Disadvantages

  • warning

    Operational Complexity

    Greater difficulty in infrastructure, monitoring, and traceability.

  • warning

    Communication Overhead

    Heavily dependent on a reliable network and well-designed APIs.

  • warning

    Data Inconsistency

    Difficulty in maintaining integrity in distributed databases.

# Technical Example (Realistic Architecture)

Suppose we are developing an e-commerce system. We use microservices to divide it into independent components. Here's what that might look like:

  • Catalog Service: Exposes available products, prices, descriptions.
  • Cart Service: Manages products added by the user before purchasing.
  • Order Service: Receives orders from the cart, processes payments, generates confirmations.
  • User Service: Handles authentication, profiles, shipping addresses.
Comparing Monolith vs. Microservices

Visual example of an e-commerce application with microservices vs. a traditional monolith.

# Code per Service (Node.js)

Catalog

const express = require('express');
const app = express();

app.get('/catalog', (req, res) => {
  res.json([ { id: 1, name: 'Sneakers', price: 10000 } ]);
});

app.listen(3001);

Cart

const express = require('express');
const app = express();
app.use(express.json());

app.post('/cart', (req, res) => {
  // Cart logic
  res.status(201).send('Added');
});

app.listen(3002);

Orders

const express = require('express');
const app = express();

app.post('/order', (req, res) => {
  // Orders and payments logic
  res.send('Processed');
});

app.listen(3003);

Users

const express = require('express');
const app = express();

app.get('/users/:id', (req, res) => {
  res.json({ id: req.params.id, name: 'John' });
});

app.listen(3004);

# When Is It Convenient to Use Them?

When a system grows significantly in functionality, teams, and user volume. Also when you need to scale certain parts more than others or use different technologies in each module.

# Conclusion

Microservices are not for everyone. They are powerful but complex. If your team and context allow it, they offer a great long-term advantage. But if you're starting out, perhaps a well-made monolith is the best starting point.