Pensar en el manteniment compensa
Avui, fa poques hores hem posat en producció una nova web per Fiesta Hotel Group anomenada Palladium Weddings és una web pensada per pantalles grans, on s'intenta mostrar el que és el producte de noces que té el client. Si us pensau casar aviat o renovar vots, no deixeu de fer-li una ullada, els escenaris i ambients són una autèntica meravella.
Com és habitual la web està desenvolupada amb Django i pensada per a suportar una càrrega important de visites, i a la vegada fer que el manteniment dels continguts sia el més ràpid possible. Pensau que muntar un paquet de noces, amb tot els extres, fotografies, escenaris, ... no és una tasca trivial. Ens hem de posar amb la pell no tan sols del client potencial que visita la web, sinó de la gent que l'ha de mantenir, i per tant l'aplicació s'ha de cuidar tant en l'aspecte visible com en el que es veu menys, però que també té una part fonamental en l'èxit de la web. Si aconseguim fer una web fàcil de mantenir és més senzill que els continguts es mantenguin actualitzats i que la web estigui més viva.
Però a part d'aquestes consideracions, per mi aquesta web ha resultat ser un exemple perfecte de perquè s'han de desenvolupar les aplicacions d'una determinada manera, en el nostre cas seguint el model MVT de Django, molt semblant al model MVC.
Aquesta web va començar a gestar-se al final de l'any passat. Partíem d'una web en PHP que s'havia de migrar i millorar. El projecte estava ja pràcticament acabat quan Fiesta va decidir fer-hi una repensada i mentre anar prioritzant altres projectes.
La repensada finalment va donar com a fruit un redisseny complet de la web, amb més continguts, més fotografies i detalls, però amb una funcionalitat que era al 80 o 90% semblant a l'anterior.
Les aplicacions que desenvolupam tenen un component de backoffice, un CMS si voleu, on es posen les dades i continguts i es manté el model de dades a partir del models d'aplicacions que hem definit a Django.
Les urls es mapegen amb vistes, que no són més que codi Python que obté la informació dels models, la manipula i la retorna per a que es pugui muntar la plana web mitjançant una plantilla, que per construcció no té regles de negoci incorporades.
És a dir, tenim una clara separació entre com es gestionen els continguts al CMS, i com es presenten, entre la URL i l'HTML final que veurà l'usuari al seu navegador.
Per a aquest projecte això ha significat un estalvi directe de temps i diners. Hem pogut reaprofitar-ho gairebé tot el que no era la capa de presentació, i no tan sols això, sinó que s'ha pogut avançar en paral·lel entre la programació i la gestió dels continguts.
El model MVC ho implementen molts bastiments Java, PHP, Ruby. Però el que per mi és important és que Django ho fa realment fàcil. La manera natural de fer aplicacions amb Django és la de fer aplicacions fàcils de mantenir, on el nivell de cerimònia que s'ha de fer per reutilitzar components o crear-ne de nous es mínim. He tingut l'ocasió de treballar amb Struts, Spring per Java o Symfony amb PHP i són un malson comparats amb la facilitat de Django.
Per mi aquest projecte demostra que la inversió en fer les coses com toca compensa. Segur que un projecte típic de PHP on hi ha codi, accés a la base de dades i codi mesclat pot aconseguir el mateix que el que hem fet. El que no hauria pogut aconseguir mai és aquest nivell de reutilització. Separar en capes compensa, utilitzar Django i Python en les aplicacions web també.
Pels qui us atracau a aquest blog des d'altres tecnologies i estau pensant amb Django per al proper projecte, esper que aquesta història us pugui servir d'inspiració. Pensau que els començaments són sempre durs, però que el camí es prou suau. Pensau que allà on inicialment us pensau que el desenvolupament és més lent, adonau-vos de com n'està de protegida la inversió que fa el vostre client en tecnologia i en com es poden anar canviant parts de la web i evolucionant-la sense morir a l'intent.
Posar PHP dins el codi HTML sols duu al costat fosc, perquè fosques seran les nits que us passareu depurant l'aplicació.