Sveliamo gli strumenti software scelti per creare l’architettura alla base della piattaforma Slope

Architettura software SaaS piattaforma Slope

Ciao a tutti, in questo blogpost il team di Software Engineer che lavora alla piattaforma Slope, ha il piacere di condividere e raccontare a clienti, appassionati di software o semplicemente curiosi, alcune scelte tecnologiche che abbiamo intrapreso per creare un SaaS (Software-as-a-Service) scalabile e mantenibile.

Slope è un’azienda che pone molta attenzione alle scelte tecniche che vengono fatte, il nostro obiettivo è sempre quello di offrire un software facile da usare e dalle performance elevate.
L’utente finale di Slope si trova ad interagire con l’interfaccia grafica del programma, che deve essere elegante, pulita e soprattutto molto semplice. Per avere un’interfaccia intuitiva è però necessario che le fondamenta del software siano robuste e ben progettate; per questa ragione abbiamo posto un’attenzione minuziosa ai dettagli di sviluppo e alle scelte tecnologiche che devono calzare al meglio con le esigenze del nostro business.

Siete curiosi di scoprire com’è fatta la piattaforma Slope dietro le quinte? Oggi vi racconteremo alcune delle principali scelte tecnologiche che abbiamo intrapreso negli ultimi anni.

Partiamo dalle fondamenta, web server e Docker

I servizi Slope sono forniti da vari web server basati su Ubuntu Linux, forniti da Amazon Web Services. Tuttavia, i blocchi fondamentali con cui Slope è costruito non sono tanto i singoli server, quanto i container, che gestiamo attraverso Docker in modalità Swarm. Questo ci permette di avere predicibilità nei deployment senza doverci preoccupare troppo del setup delle macchine: lo stesso ambiente di esecuzione è riprodotto dappertutto, a partire dalle fasi di sviluppo del software, passando per il testing fino all’ambiente di produzione.
È inoltre particolarmente comodo perché rende facile la scalabilità orizzontale, ovvero distribuire il carico su un numero di macchine che può crescere o calare a seconda dei momenti e dei periodi dell’anno.

La piattaforma software – PHP 7

Ad eccezione delle applicazioni “single page”, di cui parleremo in seguito, tutti i componenti del SaaS Slope (PMS, Booking Engine, CRM, Channel Manager) sono scritti in PHP. PHP è un linguaggio popolarissimo per lo sviluppo sul web, con un ecosistema molto maturo e tanto codice open source di qualità. Inoltre, con il recente upgrade alla versione 7 ha avuto un boost prestazionale rilevante. Il miglioramento in termini di prestazioni è dovuto all’utilizzo di un nuovo interprete del linguaggio rispetto a quello utilizzato nella versione 5.x che ne migliora le performance in alcuni casi anche del 100%, riducendo notevolmente anche l’utilizzo di memoria. Questo ci permette di gestire lo stesso traffico con un numero molto minore di web server, addirittura meno della metà.
Le performance non sono l’unico vantaggio di PHP 7 rispetto alle versioni precedenti, ma anche l’introduzione dei type hint in modalità strict, tipi di ritorno e tipi nullabili rendono il linguaggio molto più robusto in grado di servire meglio le necessità di un’applicazione vasta e sviluppata da un team di ingegneri numeroso come il nostro.

Symfony, il framework preferito dal team di sviluppo Slope

Il framework PHP che abbiamo adottato è Symfony (ad oggi in versione 3.3).
Sono presenti sul mercato diverse soluzioni software, alcune molto valide, abbiamo valutato diverse opzioni ma dopo un periodo di sperimentazione (che risale oramai al 2012) abbiamo scelto di adottare Symfony come framework principale per la piattaforma Slope.

I motivi principali per cui abbiamo scelto Symfony sono:

  • È un framework enterprise, quindi garantisce supporto e una politica rigida di compatibilità all’indietro che altri framework non hanno. Le date di rilascio degli aggiornamenti sono inoltre molto ben definite e sempre rispettate;
  • Ha una documentazione esaustiva, molto precisa e dettagliata;
  • È progettato in maniera estendibile, cioè è possibile modificarne il comportamento ed adattarlo alle proprie necessità di business in modo agevole;
  • I suoi componenti sono alla base di molti altri framework e CMS popolari, questo è sinonimo di qualità e stabilità;
  • Il core team è costituito da figure di livello assoluto nel panorama dello sviluppo PHP mondiale. Ci sono inoltre tantissimi contributori.

A distanza di anni, possiamo confermare che la scelta è stata azzeccata: Symfony non ci ha solo aiutati a sviluppare più velocemente e con meno difficoltà il sistema, ma ci ha anche guidato nel fare scelte architetturali che hanno ulteriormente migliorato la qualità della codebase.
A proposito di qualità, vi consigliamo di leggere l’articolo in cui parliamo di qualità del codice per capire meglio il notevole vantaggio che si ha nello strutturare un’applicazione in modo che sia sia testabile in maniera automatica.

Il database e l’ORM

Una delle necessità basilari per un’applicazione è quella di avere uno storage persistente, performante e sempre accessibile. La nostra scelta è ricaduta su PostgreSQL, un DBMS open source con caratteristiche enterprise. L’abbiamo preferito rispetto a MySQL perchè molto più ricco di funzionalità e con meno limitazioni a livello di prestazioni.
Per facilitare l’accesso ai dati contenuti nel database ci avvaliamo dell’ORM Doctrine, che ci permette di lavorare ad un livello “più alto” e ragionare a livello di entità senza preoccuparsi troppo di come i dati sono effettivamente salvati nel database. Questo ci permette di preoccuparci della consistenza dei dati già a livello applicativo (oltre che ovviamente anche nel database). Per la maggior parte delle operazioni non dobbiamo scrivere una riga di SQL.
Per operazioni più complesse invece, come l’estrazione di report, molto spesso torniamo comunque a scrivere query “secche”. Doctrine rende facile anche questa operazione attraverso l’utilizzo del DBAL (Database Abstraction Layer).

Applicazioni “single page”

Per quanto riguarda lo stack tecnologico della piattaforma Slope abbiamo adottato anche Angular, un framework frontend utilizzato per creare applicazioni “single page” (note anche con l’acronimo SPA), caratterizzate da un’esperienza utente molto interattiva. Questo perchè la pagina non viene mai ricaricata per passare da un contenuto all’altro, ma parti della pagina vengono sostituite in tempo reale in maniera asincrona. Queste applicazioni consumano i dati forniti da API dedicate, che i nostri server mettono a disposizione e che sono sviluppate con le stesse metodologie del resto dei componenti (di cui abbiamo parlato sopra).
Un esempio di applicazione di questo tipo è la Guest Area, utilizzata dagli ospiti delle nostre strutture per la gestione del loro soggiorno.

Conclusioni

Per creare una piattaforma in grado di crescere in maniera organica ed agile è importante scegliere tecnologie che siano al passo con i tempi ma soprattutto adatte alle esigenze di business dell’azienda.
Se avete domande o curiosità sulle tecnologie di cui abbiamo parlato non esitate a scriverci sulla nostra pagina Facebook o su Twitter.

Engineering Team Slope!

Con il software gestionale Slope hai sempre sotto controllo ogni aspetto del tuo hotel.

Articoli consigliati