Microserveis, quan sí i quan no?

Cuando-donde-Emplear-Microservicios-Itequia

Microserveis, quan sí i quan no?

Què m’aporten els microserveis? Què em resten de la productivitat?

Com ja hem comentat en un article anterior, els microserveis són un nou model d’arquitectura on separem les diferents funcionalitats d’un producte en espais més compartimentats que s’autoabasteixen i mantenen connectats.

Aquest model substitueix allò que es coneix com l’arquitectura “monolítica”, on tota l’operativitat del projecte descansa en el mateix codi o sistema.

Ambdues metodologies de disseny tenen avantatges i desavantatges, fortaleses i debilitats que hem d’avaluar segons el context en què s’utilitzi.

En el cas dels microserveis, si bé és una arquitectura útil en un nombre elevat d’ocasions, la majoria dels projectes d’arquitectura informàtica solen necessitar una aplicació monolítica o una SOA com a base.

Per què? Normalment els nostres clients voldran que els usuaris es connectin tots a un mateix sistema, aplicació o xarxa. Serveix per unificar mètodes, projectes i la comunicació, i molts estan acostumats a tenir-ho tot en un mateix lloc. Això no vol dir que sempre sigui la decisió correcta.

¿Por qué? Normalmente nuestros clientes querrán que sus usuarios se conecten todos a un mismo sistema, aplicación o red. Sirve para unificar métodos, proyectos y la comunicación, y muchos están acostumbrados a tener todo en un mismo lugar. Esto no quiere decir que siempre sea la decisión correcta. 

Podem discernir entre els beneficis i els desavantatges dels microserveis:

Beneficis dels microserveis 

  • Delimitació de les “fronteres” entre els mòduls: els microserveis reforcen l’estructura modular, cosa que és particularment important per a equips més grans i de diversos departaments.
  • Implementació independent: els serveis simples són més fàcils d’implementar i, atès que són autònoms, és menys probable que provoquin errors al sistema complet quan falla un.
  • Diversitat tecnològica: amb els microserveis podeu combinar múltiples llenguatges i tecnologies, frameworks i tecnologies d’emmagatzematge de dades.

Desavantatges dels microserveis 

  • Distribució: Els sistemes distribuïts són més difícils de programar, ja que les trucades remotes són lentes i sempre corren el risc de fallar.
  • Manteniment de la consistència: mantenir una consistència forta és extremadament difícil per a un sistema distribuït, el que significa que tots els membres han de col·laborar per mantenir el servei operatiu.
  • Complexitat operativa: necessita un equip d’operacions madur per administrar molts serveis, que es tornen a implementar amb regularitat.
Ventajas-y-Desventajas-Microservicios-Itequia

Hauria de recomanar microserveis als meus clients? 

Com ja hem dit algun cop, cada empresa i cada client és un món. Tots tenen necessitats diferents que requeriran un procés de disseny i estratègia.   

Per sort, molts clients també volen característiques molt semblants si busquen el mateix servei o pertanyen al mateix sector. Després de tot, si funciona a la competència, per què no t’ha de funcionar a tu?

És molt útil crear una guia orientativa, tant per als teus programadors com per als teus clients, on expliquis les necessitats més comunes de cada tipus de projecte i les vinculin a un dels dos sistemes de treball per poder prendre la millor decisió des del principi i facilitar el procés al teu client.

Per exemple, els ERPs i CRMs solen ser aplicacions monolítiques pel seu ús des de sistemes molt concrets (ordinadors de treball), mentre que els microserveis s’estan emprant més per a aplicacions amb diversos tipus de dispositius al cap i un nombre ampli de connexions ( IoT, web, mòbil, …).

Amb aquests elements a la mà, hauríem de ser capaços de recomanar als nostres clients si una arquitectura de microserveis s’adequa o no a les seves necessitats. És molt arriscat basar tota la programació dels nostres clients en una sola tècnica. Especialment quan aquesta no s’adequa a tots els casos que hi ha als diferents sectors de treball.

Oriol Fernandez Moreno – Key Software Developer at Itequia