Le tecnologie dietro la nuova Area Cliente e il Site Tools
Indice
Di recente abbiamo annunciato il lancio della nostra nuova Area Cliente e del Site Tools. Il nostro COO ne ha parlato dal punto di vista commerciale e dell’importanza di questo progetto per la nostra crescita futura. Io invece, vorrei darvi una prospettiva tecnica sul perché vediamo queste nuove interfacce come una pietra miliare per SiteGround.
SiteGround è sempre stata prima di tutto una società di servizi. Tuttavia, per molti anni, la nostra crescita aziendale è stata strettamente legata alla nostra evoluzione tecnica. Più software sviluppiamo internamente, più la qualità del nostro servizio aumenta, con un effetto positivo anche sulla nostra reputazione. Non solo, abbiamo anche dimostrato di essere un’azienda high-tech che produce soluzioni software potenti e intelligenti, sempre tra le prime al mondo a implementare le tecnologie più innovative.
Quindi, quando ci siamo resi conto che molte delle nostre idee venivano rallentate o rese impossibili dalle limitazioni della piattaforma utilizzata, abbiamo avuto il coraggio di pensare più in grande e di andare oltre ciò che il mercato offriva. Abbiamo voluto osare e ricreare tutto dalle fondamenta.
La sfida
Dal punto di vista aziendale, volevamo gestire una piattaforma (frontend e backend) che funzionasse su qualsiasi dispositivo, avesse un aspetto moderno, fosse leggera, veloce, sicura e facilmente scalabile. Traducendolo in termini tecnici, abbiamo individuato i seguenti obiettivi:
1. Velocità e UX avanzata
Abbiamo deciso di utilizzare applicazioni single-page in quanto tecnologia indispensabile per un’esperienza web più veloce.
2. Scalabilità e sicurezza
Abbiamo deciso di adottare la filosofia dei micro-servizi e basare tutto sulle API. In questo modo, il sistema può scalare più facilmente e gli incidenti hanno un perimetro inferiore di danno.
Quando hai molti servizi, tuttavia, l’autenticazione e l’autorizzazione rappresentano un grosso problema. Quindi avevamo bisogno di una soluzione sicura, rapida e semplice per il problema del Cross-Origin Resource Sharing (CORS), per il quale abbiamo scelto di utilizzare i web token JSON.
Operare su larga scala quando si hanno milioni di siti ospitati su centinaia di migliaia di container, richiede organizzazione, ricerca di servizi e un layer di messaggistica affidabile per i quali presenterò Consul e NSQ.
Infine, osservabilità, monitoraggio e notifica, sono fondamentali data la complessità del sistema. Per questi, utilizziamo Prometheus e Grafana.
Le soluzioni
1. Applicazioni single-page con React e Redux
Tre anni fa, quando abbiamo iniziato a lavorare al progetto, sapevamo che le applicazioni single-page stavano diventando sempre più popolari perché consentivano una migliore esperienza utente, tempi di caricamento delle pagine più rapidi, design modulare e altro ancora. Anche l’ecosistema SPA si stava evolvendo rapidamente. C’erano molti framework JavaScript come AngularJS, ReactJS e Vue.js. Sembrava naturale e ovvio che quando si parlava di qualcosa di leggero, veloce e basato su API, l’applicazione single-page era la risposta. Dopo alcuni test con diversi framework, abbiamo deciso di utilizzare ReactJS + Redux per la nuova Area Cliente e il SIte Tools, poiché mostravano i migliori risultati in termini di prestazioni.
Caricamento veloce della pagina
Abbiamo due principali applicazioni single-page. Una è l’app Area Cliente e l’altra è il Site Tools. Sono entrambi usati ogni ora da migliaia di persone e il numero è in aumento. Portare la logica dell’applicazione nei browser degli utenti, dove JS viene eseguito localmente, ha reso le cose più veloci. Il motivo è che nel backend avviene una minore manipolazione dei dati. Inoltre, le nostre app hanno una cache degli oggetti con CDN. Questo rende davvero veloce per gli utenti di tutto il mondo caricare rapidamente l’app e iniziare a usarla.
Guida allo stile unificata
Le applicazioni single-page consentono di lavorare con componenti pronti che sono riutilizzabili e fanno sì che le interfacce seguano determinati standard. Per le nostre, abbiamo scritto una guida di stile, che rende le nostre interfacce omogenee e ci permette di scrivere nuovo codice più velocemente. Solo la repository della guida di stile, con tutti gli esempi, è di circa 550.000 righe di codice!
Poiché lo sviluppo è piuttosto ampio e in crescita e il codice con cui lavoriamo è voluminoso, dovevamo assicurarci che i nostri standard fossero rispettati e non condizionati dai cambiamenti. Ecco perché abbiamo coperto il codice con i test Visual ed e2e (Cypress). Se una modifica del codice cambia visivamente una determinata pagina in modo significativo, veniamo avvisati e possiamo persino interrompere automaticamente le build e il deploy del codice.
2. API RESTful e micro servizi
Ora abbiamo oltre 100 API che possono essere utilizzate per gestire un singolo sito ospitato sui nostri server. Strumenti come l’installazione WordPress, l’emissione di un certificato SSL privato, la creazione di un account email, la creazione di nuovi database MySQL, l’aggiunta di chiavi SSH e persino la migrazione di siti tra server, vengono effettuati tramite API. Vediamo insieme i vantaggi che ci offrono:
Favoriscono l’utilizzo di linguaggi differenti
Abbiamo ingegneri software che scrivono nei seguenti linguaggi/framework per la nostra piattaforma:
- PHP (Symfony, Zend Framework)
- Perl (Dancer)
- Go
- Python
- JavaScript (ReactJS, AngularJS), TypeScript
Per essere sicuri che tutte le parti potessero parlare tra loro, avevamo bisogno di API RESTful per collegare la comunicazione.
Il design delle API RESTful è ben conosciuto
La cosa positiva delle API RESTful è che praticamente tutti gli sviluppatori hanno familiarità con e le comprendono. Ciò significa che quando abbiamo bisogno di aggiungere nuove funzionalità non dobbiamo formare gli sviluppatori o far loro apprendere tutti i pro e contro del sistema. Possono semplicemente concentrarsi sul nuovo pezzo di codice necessario e integrarlo nel sistema.
I nostri partner possono utilizzare le API
Il fatto che sia tutto basato su API semplifica l’accesso ai partner e consente loro di creare siti, installare un CMS o eseguire altre funzioni sulla nostra piattaforma. Ciò ci rende flessibili ed è una buona base per la nostra futura crescita aziendale.
Personalizzazione dell’accesso utente
Le API RESTful applicano il principio CRUD che dice che ogni oggetto manipolato dall’API dovrebbe supportare le seguenti 4 funzioni: creazione, lettura, aggiornamento, eliminazione. Insieme alla rappresentazione unificata delle risorse REST, ciò consente una facile separazione delle azioni, un accesso personalizzato e il controllo dell’utente.
Insieme ai web token JSON, abbiamo utilizzato le API per fornire livelli di accesso personalizzati nelle nostre nuove interfacce. È ora possibile consentire a un operatore di creare account di posta per un nome di dominio, ma non avere accesso agli account di posta esistenti o ad altri strumenti. Per cominciare, abbiamo introdotto solo 3 ruoli utente: proprietario del sito, collaboratore e cliente white-label, ma abbiamo gettato le basi per poter aggiungere facilmente molte opzioni di personalizzazione in futuro. Il controllo degli accessi in base al ruolo, ci consente di fornire un accesso granulare a servizi e funzionalità specifici.
Identificazione e tracciamento dei problemi più semplice
Più granulare è la costruzione, più è facile isolare una parte non funzionante, sostituirla o sistemarla. Questo è uno dei principali vantaggi che vediamo dalla filosofia dei micro-servizi. Siamo in grado di tracciare e risolvere più facilmente i problemi con una funzione specifica fornita da un particolare servizio. Possiamo anche tracciare meglio le prestazioni e l’utilizzo dei diversi servizi in modo da poter ridimensionare le risorse della piattaforma e prevenire problemi.
Grazie! Il tuo commento è trattenuto per moderazione e verrà pubblicato a breve, se correlato a questo articolo del blog. I commenti con richieste di assistenza o risoluzione problemi non verranno pubblicati. In tal caso, ti preghiamo di segnalarli tramite
Inizia la discussione
Grazie! Il tuo commento è trattenuto per moderazione e verrà pubblicato a breve, se correlato a questo articolo del blog. I commenti con richieste di assistenza o risoluzione problemi non verranno pubblicati. In tal caso, ti preghiamo di segnalarli tramite