18/09/2019

CI/CD made simple

In un mondo sempre più orientato al cloud, costruire e mantenere un’infrastruttura on premise per ospitare un servizio sta diventando un costo che molte aziende preferiscono evitare vista la comodità di poter utilizzare servizi in remoto tramite pannelli web o interfacce API.

Alcuni dei nostri progetti si concludono con il deployment di servizi web interrogabili dai nostri clienti. Pur essendo verticali sugli algoritmi di Machine Learning, abbiamo incontrato la necessità di ospitare sempre più servizi direttamente, in modo da poter agire tempestivamente nel caso sia necessario aggiornarli o implementare delle modifiche per migliorarne le performance.

Da qui la complicazione di gestire diversi server con diversi applicativi in produzione sull’infrastruttura offerta da Aruba Cloud.

Ci fa quindi piacere condividere la nostra soluzione in ottica Open Innovation basata su progetti Open Source. La nostra pipeline ci consente di:

  • testare il codice in modo automatico ad ogni modifica,

  • rilasciare più velocemente gli aggiornamenti,

  • bilanciare il carico su più server nel caso crescano i volumi,

  • avere i servizi ridondati in modo da garantire uptime elevati,

  • mantenere i server sempre aggiornati con le ultime patch di sicurezza.

La nostra struttura, semplificando il più possibile, è quindi composta da:

  • Repository Gitlab, che ospita il nostro codice (gratuitamente) e mette a disposizione delle pipeline per fare Continuous Integration e Continuous Deployment

  • Docker, lo standard de facto dei container, ovvero “contenitori” in cui viene allocato ogni software, suddiviso in comparti indipendenti,

  • Docker Swarm, una semplice soluzione per bilanciare su più macchine i servizi offerti dai docker compose, consentendo alla nostra infrastruttura di scalare (qualora il traffico lo necessitasse) ed essere fault tollerant.

È stato necessario investire solamente un paio di giorni di lavoro per ottenere una soluzione affidabile da utilizzare in produzione con questa infrastruttura. È un modello che consigliamo ai nostri partner e clienti in quanto i benefici sono numerosi: adottare queste tecnologie ci rende più competitivi, reattivi alle evoluzioni ed affidabili.

Come mai non Kubernetes?
Kubernetes (k8s) è il progetto più usato per l’orchestrazione, ma comporta un overhead di tempo di setup e competenze che non trovano giustificazione nel numero limitato di server che dobbiamo gestire attualmente. Un cluster Docker Swarm si installa e crea in una decina di minuti, sfruttiamo poi tool come Portainer per l’orchestrazione dei servizi con un interfaccia grafica intuitiva e funzionale.

Altre domande?
Contattaci pure a info@aisent.io, siamo più che felici di condividere qualche tutorial per adottare questa pipeline in ottica open innovation.