Salta al contingut
TecnologiaPer Itnig Startup Ecosystem

Millor estructura del codi: treballant amb pods

Normalment organitzem les nostres apps de javascript segons què són o segons què fan. La primera opció és com rails: directoris separats com components, containers, reducers, etc. I la segona és més o menys com feature/DDD: user, cart, i així. Encara que ambdues opcions són molt esteses i sòlides contenen certes limitacions. Quan estructures el codi…

Normalment organitzem les nostres apps de javascript segons què són o segons què fan. La primera opció és com rails: directoris separats com components, containers, reducers, etc. I la segona és més o menys com feature/DDD: user, cart, i així. Encara que ambdues opcions són molt esteses i sòlides contenen certes limitacions.

Quan estructures l’arbre de fitxers del codi segons què són tendeixes a mantenir cada component d’una mateixa feature tan distant que resulta molt difícil connectar les peces. Per tant, caus en alguns problemes com l’infern de les rutes; un munt de require('../../../etc') al teu codi. I tot queda extremadament acoblat a l’estructura de directoris.

D’altra banda, quan et guies segons què fan tot està més aïllat i és més mantenible. Però hi ha molta duplicació. I la comunicació entre les features o bé es basa en un contracte feble o bé depèn d’alguna infraestructura. Ambdues opcions són propenses a generar bugs.

Els pods són una evolució de la segona opció. Pots pensar en els pods com els microserveis de les aplicacions front. Un pod és una microapp aïllada i completament independent que es pot comunicar 100% amb altres pods. Per tant, obtens una base de codi que és composable, extensible, reutilitzable i extremadament fàcil de testejar. Tot i això, el principal benefici és que elimines completament els efectes secundaris entre components. Quan un pod falla, tens la certesa total de que és perquè ell mateix té algun problema; no una peça externa.

Un pod és una microapp aïllada i completament independent que es pot comunicar 100% amb altres pods

L’únic requisit dels pods és canalitzar tota la intercomunicació dels pods a través d’un event bus. Si ja estàs utilitzant algun patró, llibreria o framework de Flux serà molt fàcil dirigir aquesta comunicació al dispatcher; que en realitat és un punt únic per als events.

Un pod no té l’obligació de tenir les capes de lògica, presentació i comunicació. Pot tenir totes o només una d’elles. Imagina un pod de router. Té la capa de lògica i comunicació però no exposa cap vista. O al contrari, un pod de formulari que només exposa una capa de presentació i depèn 100% dels arguments rebuts (mira els props de React).

Com que cada pod actua com una aplicació independent, col·loquem els tests dins d’ells. Això significa dues coses: deixar de duplicar l’arbre de fitxers, i fer que la cobertura de codi sigui significativa. Quan tens un 100% de cobertura amb un pod saps que no fallarà. Sense efectes secundaris. 

En resum, treballant amb pods obtens una estructura segura i molt flexible. Molt fàcil de testejar i sense efectes secundaris. Escala de 0 a milions sense preocupar-te de grans refactors, pel fet que cada pod està aïllat però disponible per comunicar-se amb tots els altres pods.

En cas que vulguis veure codi, aquí tens un repositori de Github amb una arquitectura de pods senzilla. Fes-hi un cop d’ull i comprova els beneficis que poden oferir els pods. Si tens algun dubte o proposta no dubtis a obrir un issue o comentar aquí. Aquest és un patró viu. Estem utilitzant els pods a Ulabox i estan demostrant ser la solució a molts problemes estructurals de la base de codi. Tot i així, estem disposats a escoltar les teves opinions i inquietuds.

El viatge és llarg, agafa alguns pods.

Articles relacionats

Tecnologia

Com millorar la generació de leads amb aquestes 6 estratègies de màrqueting SaaS

Els negocis SaaS necessiten una generació constant de leads per assolir l'èxit. Fer-ho és molt més fàcil de dir que de fer, així que les empreses no paren d'implementar noves idees per generar més leads. La llista d'estratègies de màrqueting utilitzades per a la generació de leads no para de créixer cada any, així que hi ha moltes coses diferents amb què pots experimentar.

Llegir-ne més
Tecnologia

Se acabó el server side rendering?

Fa un parell de setmanes, Google va anunciar una actualització molt esperada del googlebot. Ara funciona amb el motor chrome versió 74, el mateix que fem servir actualment als nostres Chromes. A més, va anunciar que a partir d'ara continuarà fent actualitzacions periòdiques per garantir el suport continuat de les noves tecnologies web.

Llegir-ne més
Tecnologia

Scripting de fulls de càlcul per al viatge d'esquí

Portem organitzant viatges d'esquí de l'Itnig des dels inicis. Recordo que quan vam començar hi cabíem tots en un cotxe, després en una furgoneta, més tard vam haver de llogar un parell de cotxes per poder anar-hi, aviat vam haver de compartir un autobús amb altra gent i ara necessitem un autobús...

Llegir-ne més