Recentment hem heretat un projecte d’un client el backend del qual està desenvolupat en Firebase. Això ha reobert a l’empresa el debat sobre què és millor per a un projecte d’app mòbil (o una app en general): un backend a mida o utilitzar una solució BaaS (Backend as a Service) com Firebase o Supabase. En aquest article explorarem cada opció amb els seus avantatges i inconvenients i compartirem el nostre punt de vista sobre quan optar per una o altra opció.
Què és un BaaS (Backend as a Service)?
Un BaaS (Backend as a Service) és un servei al núvol que proporciona infraestructura, eines i serveis backend preconstruïts per a aplicacions mòbils i web. Les funcionalitats més comunes que ofereixen les plataformes BaaS inclouen:
- Emmagatzematge de dades: Bases de dades NoSQL o SQL, emmagatzematge de fitxers i gestió d’objectes.
- Autenticació i autorització: Sistemes de registre, inici de sessió, gestió de perfils d’usuari i integració amb proveïdors d’identitat (com Google, Facebook o Apple).
- Notificacions push: Enviament de notificacions a dispositius mòbils o navegadors web.
- Funcions al núvol (Serverless): Execució de codi personalitzat sense necessitat de gestionar servidors.
- Gestió d’APIs: Creació automàtica d’APIs REST o GraphQL per accedir a les dades.
- Anàlisi i monitorització: Eines per fer un seguiment de l’ús de l’aplicació, mètriques de rendiment i comportament dels usuaris.
- Integració amb altres serveis: Connexió amb serveis externs mitjançant APIs o eines d’automatització.
Algunes de les solucions BaaS més populars són:
- Firebase: Proporcionat per Google, destaca per les seves bases de dades en temps real (Firestore i Realtime Database) i la seva integració amb Google Analytics i Crashlytics.
- Supabase: Una alternativa de codi obert a Firebase que utilitza PostgreSQL com a base de dades, oferint més flexibilitat per a consultes complexes i integracions.
- AWS Amplify: Una solució d’Amazon Web Services que permet construir i desplegar aplicacions escalables.
- Backendless: Una altra opció amb funcionalitats similars, incloent bases de dades, autenticació i funcions al núvol.
Avantatges dels BaaS
1. Barrera d’entrada baixa
Permet iniciar projectes amb una inversió inicial reduïda, disminuint la necessitat de coneixements tècnics avançats i eliminant la complexitat de gestionar la infraestructura. Això facilita la validació ràpida d’idees i el llançament de productes.
2. Implementació ràpida
Un dels principals avantatges dels BaaS és la velocitat d’implementació. Amb poques línies de codi es poden configurar funcionalitats bàsiques com autenticació, bases de dades en temps real o notificacions push.
3. Costos inicials baixos
En tractar-se d’un backend preconstruït, no és necessari contractar un equip de desenvolupament complet des de l’inici, invertir en la creació de funcionalitats des de zero ni dedicar recursos al manteniment de la infraestructura. A més, el model de preus basat en l’ús permet escalar els costos a mesura que el projecte creix.
4. Escalabilitat automàtica
Els serveis BaaS gestionen automàticament l’escalabilitat de l’aplicació, adaptant-se a pics de trànsit o creixement d’usuaris. Aquesta flexibilitat permet mantenir el rendiment sense necessitat d’intervenció manual o ampliacions d’infraestructura.
5. SDKs per a múltiples llenguatges
Els BaaS proporcionen SDKs (Software Development Kits) per a diversos llenguatges de programació i plataformes, tant mòbils com web. Això facilita la integració i permet als desenvolupadors utilitzar el llenguatge amb què se sentin més còmodes o el que millor s’adapti a les necessitats del projecte.
6. Eines integrades
Plataformes com Firebase no només ofereixen funcionalitats pròpies d’un backend, sinó també eines complementàries com Crashlytics (per al seguiment d’errors) i Google Analytics (per a l’anàlisi de l’ús de l’aplicació). Aquesta combinació d’eines en un únic servei simplifica molt la gestió de l’aplicació.
Inconvenients dels BaaS
1. Limitacions de personalització
Els serveis BaaS solen oferir funcionalitats predefinides per a tasques comunes, però poden no permetre la implementació de lògica de negoci complexa. Això pot obligar-te a adaptar la teva aplicació a les limitacions del servei o a buscar solucions alternatives.
2. Escalabilitat limitada
Tot i que molts serveis BaaS prometen escalabilitat, poden existir limitacions tècniques o econòmiques a mesura que el teu projecte creix, especialment en aplicacions amb necessitats específiques o molt grans.
3. Dependència del proveïdor (vendor lock-in)
Estàs subjecte als canvis i tarifes del proveïdor. Una modificació en els preus o en les seves polítiques pot afectar significativament el projecte. Un exemple clar és el tancament de Parse per part de Facebook, que va deixar molts projectes sense suport, obligant-los a migrar de plataforma.
A més, si en algun moment vols canviar de plataforma o passar a un backend a mida, la migració pot ser molt costosa, ja que les dades i la lògica de negoci poden estar profundament integrades amb el BaaS utilitzat.
4. Problemes de seguretat i privacitat
Emmagatzemar dades sensibles en un proveïdor extern pot comportar riscos de seguretat i problemes de compliment normatiu, especialment en sectors amb requisits estrictes (com el sanitari o el financer).
5. Costos variables
Si el projecte creix o s’utilitzen molts recursos, el cost del servei pot augmentar de manera inesperada. Els preus poden disparar-se, especialment en funció del nombre de trucades a l’API o de l’espai d’emmagatzematge utilitzat.
6. Debugging i control del codi
En cas de problemes amb l’API del proveïdor, les opcions de depuració poden ser limitades i dependre completament del suport tècnic del servei. A més, la documentació pot no estar sempre actualitzada, dificultant la identificació i resolució de problemes.
Què és un backend a mida?
Un backend a mida és una solució desenvolupada específicament per a les necessitats d’una aplicació o empresa. Les tecnologies més utilitzades en el desenvolupament de backends a mida són:
- Python: Utilitzant Django o Flask
- Java: Amb Spring Boot
- JavaScript/TypeScript: Amb frameworks com Express.js o NestJS
- C#: Principalment amb ASP.NET Core
- PHP: Amb frameworks com Laravel o Symfony
- Ruby: Amb Ruby on Rails
Aquesta opció ofereix control total sobre l’arquitectura, la lògica del negoci, la seguretat i la integració amb altres sistemes.
Avantatges d’un backend a mida
1. Personalització i adaptabilitat
Un backend a mida permet adaptar cada detall de la infraestructura i les funcionalitats a les necessitats de l’empresa. Aquesta personalització garanteix que tots els processos, fluxos de treball i funcionalitats encaixin perfectament amb els requeriments del projecte.
2. Escalabilitat i creixement
Facilita l’evolució de la solució a mesura que el negoci creix, permetent afegir noves funcionalitats, gestionar un volum més gran d’usuaris o dades i adaptar-se a noves necessitats sense necessitat de redissenyar completament el sistema. Aquesta escalabilitat protegeix la inversió a llarg termini, evitant canvis radicals en el futur.
3. Seguretat avançada i personalitzada
Ofereix la possibilitat d’implementar mesures de seguretat adaptades al projecte, com xifrat de dades, sistemes d’autenticació específics o altres solucions de seguretat pròpies del sistema desenvolupat.
4. Optimització del rendiment i eficiència
Un backend a mida es pot dissenyar per maximitzar l’eficiència dels recursos disponibles fins al límit permès per la pròpia tecnologia, garantint temps de resposta mínims i un bon rendiment fins i tot en situacions d’alta càrrega.
5. Control total i manteniment simplificat
En comptar amb un codi net i desenvolupat específicament per al projecte, o amb un sistema de logging a mida, és molt més fàcil identificar l’origen d’un error, analitzar-ne la causa i solucionar-lo. Això redueix els temps d’inactivitat i minimitza l’impacte dels errors en el funcionament del sistema.
Inconvenients d’un backend a mida
1. Cost inicial
El desenvolupament d’un backend a mida sol implicar una inversió econòmica significativa, ja que requereix un equip tècnic especialitzat i la implementació de les funcionalitats necessàries. Això pot ser un obstacle per a projectes amb pressupostos limitats.
2. Temps de desenvolupament
Crear un backend a mida pot portar setmanes o fins i tot mesos, depenent de la complexitat del projecte. A diferència de les solucions estàndard o prefabricades, el temps necessari per dissenyar, desenvolupar, provar i implementar és considerablement més gran.
3. Dependència del proveïdor
Si el backend és desenvolupat per una empresa externa, l’empresa pot dependre d’aquest proveïdor per al manteniment, la resolució de problemes i les actualitzacions. Això pot generar costos recurrents i possibles dificultats si el proveïdor deixa d’estar disponible.
Si en algun moment vols canviar de proveïdor, caldrà trobar algú que treballi amb les mateixes tecnologies, cosa que no sempre és senzilla.
4. Risc d’errors
El desenvolupament a mida implica escriure nou codi, la qual cosa augmenta la probabilitat d’introduir errors. Aquests problemes poden afectar el rendiment del sistema i requerir més temps per a la seva identificació i resolució.
5. Manteniment i actualitzacions
Un backend a mida necessita manteniment continu per garantir-ne el funcionament, la seguretat, el rendiment i la compatibilitat amb altres sistemes. Això implica dedicar recursos tècnics periòdicament per adaptar-lo a noves necessitats o canvis tecnològics.
Quan optar per cada opció?
Ara que hem revisat els avantatges i inconvenients de cadascuna de les possibilitats, la següent pregunta que ens hem de fer és en quins casos val la pena utilitzar un BaaS i en quins és necessari desenvolupar un backend a mida.
Quan optar per un BaaS
- Prototips i MVPs (Minimum Viable Product): Si necessites llançar ràpidament un producte al mercat per provar una idea.
- Aplicacions senzilles o amb funcionalitats estàndard: Per exemple, xats, aplicacions socials bàsiques, formularis de dades o aplicacions internes simples.
- Projectes amb un pressupost reduït: Estalvia temps i costos en el desenvolupament del backend.
- Aplicacions amb una durada temporal limitada: Si tens clar que en el futur no s’afegiran noves funcionalitats.
Quan optar per un backend a mida
- Aplicacions amb lògica de negoci complexa: Quan es necessiten processos complexos, regles de negoci personalitzades o integracions a mida.
- Requisits de seguretat elevats: Quan es tenen necessitats específiques en matèria de seguretat o regulacions (per exemple, dades sensibles, GDPR, HIPAA…).
- Necessitat de control total sobre la infraestructura: Si es vol personalitzar la base de dades, l’estructura del servidor o optimitzar el rendiment.
- Evitar dependències de tercers: Especialment en projectes a llarg termini on es busca minimitzar riscos associats a la dependència tecnològica.
Té sentit una solució híbrida?
En alguns casos, pot ser interessant utilitzar una combinació de les dues solucions. Per exemple, es pot desenvolupar un backend a mida per gestionar la lògica de negoci i les dades sensibles, mentre s’utilitza un BaaS per a funcionalitats més estàndard, com:
- Autenticació i social login.
- Enviament de notificacions push.
- Anàlisi d’ús.
Aquesta estratègia permet aprofitar la rapidesa i simplicitat dels BaaS sense sacrificar la flexibilitat i el control d’un backend personalitzat.
Conclusions
Amb l’experiència que tenim a app2U, recomanem utilitzar un backend a mida com a opció predeterminada per a projectes que busquin estabilitat i creixement a llarg termini. Un backend a mida permet tenir tot el sistema centralitzat i ben estructurat per capes, oferint una base sòlida per al desenvolupament continu.
Per a nosaltres, també té sentit implementar algunes funcionalitats directament amb un BaaS, com les que es plantegen en la solució híbrida, però sempre tenint en compte que la base ha de ser el backend a mida.
Dit això, com podem minimitzar l’impacte dels inconvenients de desenvolupar un backend a mida? Alguns consells que apliquem a cada projecte:
-
Definir clarament els requisits: Abans de començar el desenvolupament, assegura’t de tenir molt clares les funcionalitats i necessitats del projecte. Una bona documentació inicial ajuda a evitar canvis imprevistos que poden augmentar costos i temps.
-
Selecciona un proveïdor de confiança: Busca empreses amb experiència demostrable, un bon historial de projectes similars i capacitat per oferir manteniment i suport a llarg termini. Aspectes clau a tenir en compte:
- Confiança: Com hem dit, ha de transmetre confiança, tant a nivell empresarial com personal.
- Desenvolupament iteratiu: És important poder veure el resultat del projecte a mesura que avança.
- Testing automàtic: El desenvolupament de tests ha de formar part del propi desenvolupament de la solució per assegurar que aquesta creixi sense trencar res.
- Documentació: Sol·licita que la documentació tècnica estigui inclosa en l’abast del projecte, ja que no sempre es fa per defecte.
- Propietat del codi: Assegura’t que el codi desenvolupat és teu per evitar el vendor lock-in.
A curt termini, això pot fer que el projecte sigui més costós, però a llarg termini, aquests aspectes poden estalviar-te molts diners.
-
Preveure manteniment i actualitzacions: El software a mida requereix dedicar recursos recurrents al manteniment, com a mínim adaptatiu, per garantir que segueixi funcionant. Tingues-ho en compte.
A l’inici de l’article parlàvem del projecte heretat del client. La situació actual és que hem migrat tota la capa de negoci a un backend a mida, i el resultat és que ara tenim molt més control sobre el que passa a la solució. La lògica de negoci està centralitzada en un sol punt, les dades són més consistents (Firebase permetia dades incoherents) i, gràcies a això, el nombre de problemes s’ha reduït dràsticament. 😊