DevOps

Che cosa vuol dire?

Nell’ultimo decennio, con l’affermazione delle metodologie agili per lo sviluppo del software da una parte e delle architetture IT virtualizzate e Cloud dall’altra, si è sviluppato un approccio che mira a minimizzare la distanza fra le competenze degli sviluppatori di software (Dev) e di coloro che gestiscono l’operatività delle infrastrutture (Ops).

Nel modello DevOps il team di sviluppo e il team di operations collaborano a stretto contatto e adottano una serie di pratiche e strumenti volti ad ottimizzare la produttività e l’affidabilità del codice rilasciato. Al termine di un processo di consolidamento, i team potrebbero risultare composti da figure con competenze trasversali.

Alcuni degli aspetti principali su cui si focalizza l’approccio DevOps sono i seguenti:

  • Aumento della frequenza degli aggiornamenti del software (rilasci), in modo da ridurre il numero delle modifiche apportate: la natura incrementale degli aggiornamenti aiuta a gestire meglio il ciclo di sviluppo del software e ad identificare e risolvere più prontamente eventuali difetti.
  • Automazione dei compiti, per velocizzare i processi manuali e ridurre il rischio di errore, aumentando l’affidabilità complessiva senza richiedere il coinvolgimento di diverse risorse aziendali.
  • Strutturazione delle applicazioni in microservizi, per rendere le applicazioni più flessibili e facilitare l’innovazione progressiva.
  • Adozioni di strumenti efficaci per la gestione ed il monitoraggio delle applicazioni, ad esempio con scansioni preliminari ed analisi delle performance e dei comportamenti.
  • Efficientamento dei processi di comunicazione e di collaborazione fra gli stakeholder.

Cosa proponiamo?

I nostri DevOps Engineer hanno padronanza delle “best practices” del metodo DevOps, e contribuiscono ai progetti in cui sono inseriti ponendo particolare attenzione a temi quali:

  • Automazione dei test e Test-Driven Development (TDD), con una approfondita conoscenza di Unit ed Integration testing nei vari linguaggi di programmazione e con i diversi framework, e di tool specifici anche per i test end-to-end come Cypress.
  • Integrazione continua (Continuous Integration, CI) e Distribuzione continua (Continuous Deployment, CD) con tools come Jenkins, GitLab, ecc.
  • Infrastruttura come codice: con strumenti come Ansible, Docker, ecc.