Archive for the
‘DevOps’ Category

Questo articolo è volto a presentare in maniera generica le tappe che, nel mondo dell’informatica, hanno portato alla containerizzazione dei servizi e, di conseguenza, a Kubernetes.

Innanzitutto è bene definire Kubernetes come una piattaforma open-source utilizzata per la gestione di servizi containerizzati che facilita da un lato la configurazione dichiarativa di questi e, dall’altro, l’intero processo di automazione.

Kubernetes è una piattaforma estensibile, dotata di un grande e vasto ecosistema in esponenziale crescita: tutto il supporto, gli strumenti ed i servizi sono disponibili all’interno di questo mondo.

Prima di parlare delle fasi che hanno portato all’ideazione di Kubernetes, spieghiamo l’origine del nome; Kubernetes è un termine che deriva dal greco e vuol dire pilota; la piattaforma è stata resa open source da Google nel 2014 ed unisce una pluridecennale esperienza nell’esperienza di carichi di lavoro di produzione su scala mondiale, grazie all’utilizzo delle migliori idee e pratiche della comunità.

Perché Kubernetes è diventata così utile oggigiorno?
STEP BY STEP developers!, Dividiamo la sua evoluzione in 3 fasi principali:

1. Fase del deployment classico/tradizionale: le applicazioni usate dalle organizzazioni, erano eseguite su server fisici; di conseguenza non c’era il modo di definire eventuali limiti delle risorse!
Questo comportò nel tempo molti problemi in termine di allocazione delle risorse.
Per quale motivo???
Dunque, immaginate che un numero elevato di applicazioni vengano eseguite sullo stesso server fisico; ci potrebbe essere la possibilità che una di queste (in particolare) possa assorbire maggiori risorse, togliendo alle restanti applicazioni la possibilità di offrire le prestazioni attesa.
La soluzione sarebbe quindi quella di eseguire ogni applicazione su server fisico, ma DIVERSO!
La conseguenza sarebbe un aumento dei costi per le organizzazioni (più software fisici presenti da mantenere —>più costi ingenti da sostenere) ed un sottoutilizzo delle risorse!

2. Fase della virtualizzazione del deployment: ecco che, per far fronte al problema di cui sopra abbiamo accennato, entrò in gioco la virtualizzazione.
Si presentò da subito come una buona soluzione che permise di eseguire più macchine virtuali (le VM) su una singola CPU fisica.
Di conseguenza, il beneficio fu quello di isolare le applicazioni su più macchine virtuali, fornendo così un livello di sicurezza nettamente superiore, dal momento in cui le informazioni di un’applicazione non sono accessibili da un’altra applicazione.
Quali sono stati altri benefici che la virtualizzazione ha portato?
Migliore utilizzo delle risorse con riduzione dei costi per hardware
Migliore scalabilità
Ogni VM rappresenta una macchina completa che esegue tutti i componenti (compreso il proprio sistema operativo).

3. La fase del deployment containerizzato: first of all, è bene definire il concetto di container, ovvero: i container sono molto simili alle macchine virtuali ma dispongono di un modello di isolamento più leggero e condividono il sistema operativo (OS) tra tutte le applicazioni.
Ecco perché i container sono considerati leggeri ed, inoltre, sono disaccoppiati dall’infrastruttura sottostante, risultando portabili tra diversi cloud e varie distribuzioni.

Perché i container nel tempo hanno raggiunto popolarità?
Ovviamente per i loro vantaggi, quali ad esempio:

1. Creazione e distribuzione di applicazioni in modalità Agile: si ha maggiore facilità e maggiore efficienza nella creazione di immagini containerizzata rispetto a quelle VM;

2.Utilizzo di pratiche per lo sviluppo/test/rilascio continuativo: grazie a ciò è possibile creare e distribuire container image con un alto livello di affidabilità, offrendo allo stesso tempo la possibilità di effettuare rollback veloci e semplici (grazie al fatto che l’immagine rimane la stessa e non cambia);

3. Dev ed Ops SEPARATI: tutte le container image sono prodotte nel momento in cui avviene la compilazione dell’applicativo piuttosto e non nel momento di rilascio; questo fa sì che si presenta un disaccoppiamento tra le applicazioni dell’infrastruttura sottostante.

4. Parola d’ordine? COERENZA: esatto, perché tra i diversi ambienti (sviluppo, test e produzione), c’è coerenza ed i container funzionano allo stesso modo, sia su un pc portatile, sia sul cloud.

5. Portabilità tra cloud e sistemi operativi diversi: il medesimo container funziona su Ubuntu, RHEL, CoreOS, on-premise.

6. Libertà di combinazione dei microservizi: i microservizi sono liberamente combinabili e liberamente distribuiti con un’elevata scalabilità: tutte le app sono divise in parti più piccole ed indipendenti tra loro che possono essere gestite in maniera dinamica (no ad eventuali stack monolitici che girano su una singola grande macchina).

7. Risorse isolate: tutte le prestazioni delle app sono facilmente prevedibili;

8. Uso delle risorse: i container garantiscono efficienza e densità.

Ma perché è bene usare Kubernetes?

I container rappresentano un ottimo modo per la distribuzione e l’esecuzioni delle applicazioni.
All’interno di un ambiente di produzione, ad esempio, è prioritario gestire container che eseguono applicazioni garantendo l’assenza di interruzioni di servizi.
Pensate alla situazioni in cui un container si interrompe e bisogna avviarne un altro.
Tutto sarebbe più facile se fosse gestito SOLO da un sistema, giusto?

ECCO! E’ per questo che Kubernetes entra in gioco.
Kubernetes fornisce un framework per il funzionamento dei sistemi che vengono distribuiti in modo resiliente ed, inoltre, si occupa di garantire scalabilità, distribuzione e failover.

Kubernetes è fonte di vantaggi e benefici, come ad esempio:
1. Usando Kubernetes si ha la possibilità di esporre un container usando un DNS o l’indirizzo IP (qualora il traffico diretto ad un container fosse alto, Kubernetes interviene distribuendo il traffico su più container garantendo stabilità a tutto il sistema);

2. Storage Orchestrato: grazie a Kubernetes si ha la possibilità di montare in maniera automatica un sistema di archiviazione a scelta: che sia locale, con dischi forniti da public cloud, ecc

3. Rollout e rollback automatizzati: Kubernetes è in grado di cambiare lo stato attuale dei propri container per raggiungere quello che si desidera con una velocità controllata.
Se, ad esempio, il tuo team IT sta creando nuovi container per alcuni tuoi servizi, Kubernetes permette di rimuovere i container già esistenti, adattandoli alle risorse che vengono richieste da quelli nuovi.

Kubernetes è dotato di un sistema intelligente di Self-Healing, in grado di sostituire i container che si bloccano e di terminare quelli che non rispondono agli health checks, evitando di fare arrivare traffico ai container che non sono in grado di rispondere correttamente.

La privacy è importante: Kubernetes consente di memorizzare e di gestire le informazioni sensibili come token OAuth, password,….
Inoltre, è possibile distribuire ed aggiornare le informazioni sensibili configurando le applicazioni senza dover ricostruire le immagini dei container evitando quindi di svelare le informazioni sensibili nel momento di configurazione del sistema.
Se vuoi anche tu passare a Kubernetes, contattaci!
Saremo lieti di aiutarti e di guidarti passo dopo passo in questa tua scelta.

Come anticipato nell’articolo precedente, quando le aziende decidono di affidarsi a qualche figura esterna, è bene fare molto attenzione ad un elemento chiave che unirà le due realtà, ovvero la fiducia, necessaria in ogni tipo di relazione.

Per valutare la fiducia è bene tenere in considerazione alcuni fattori, SPECIALMENTE quando si ha a che fare con ingenti investimenti e si delocalizza il proprio budget (parzialmente o totalmente) al di fuori.

Per scegliere il partner ideale bisogna prendere in considerazione realtà che certificano le proprie competenze e NON solo con le parole.

In questo articolo seguirà un’interessante intervista rilasciata da 3 dei nostri tecnici che ci spiegheranno con parole semplici e comprensibili, l’importanza di ottenere la certificazione Azure DevOps e cosa rappresenta il DevOps secondo il loro punto di vista.

Prima di mostrare le domande fatte, facciamo un piccolo chiarimento sul concetto di DevOps, che rappresenta un approccio culturale relativamente nuovo, che nasce dall’integrazione di Dev (development) e Ops (Operators), ovvero unisce il mondo dello sviluppo e degli operatori IT in modo CONTINUO, facilitando i processi, la risoluzione di eventuali bug di sistema, ecc, rendendo il sistema Agile ed è  una logica integrata in cui i diversi aspetti di pianificazione, sviluppo, test, deploy, produzione e monitoraggio si relazionano all’interno di un processo organico e continuo.

 

A tal proposito, presentiamo Matteo Sposato (Team Leader), Eduardo Zapata (Team Leader) ed infine Ivan Soreca (Developer) che hanno risposto ad alcune domande, quali: 

 

  1. Come definireste il DevOps?
  2. Perché è necessario certificarsi? 
  3. Qual è stata la difficoltà che avete riscontrato durante il vostro percorso verso la certificazione?
  4. Qual è il valore aggiunto/pratico che dà la certificazione?
  5. Pensate che il DevOps sia il futuro dell’informatica? 

 

Matteo Sposato (Team Leader): 

 

  1.  Il devops lo definirei come una metodologia di lavoro,  basata sulla collaborazione tra figure complementari. Per essere più chiari, se uno sviluppatore e un sistemista collaborano nella maintenance di un applicativo è più probabile che i problemi che emergono vengano risolti grazie al fatto che i due “rami” lavorano all’unisono.
  2. Non credo che certificarsi sia necessario a livello personale, la necessità sorge quando ci si deve rapportare con realtà enterprise, poiché queste ultime,  per come sono strutturate, hanno bisogno di avere delle certezze!
  3. La difficoltà più grande è quella di dover imparare come vengono fatte le domande all’esame dato che non c’è parte pratica!
  4. Il valore aggiunto come dicevo prima è la possibilità di prender parte a progetti enterprise, che, di conseguenza, comporta anche il dover rapportati con persone molto competenti. Sicuramente studiare ti permette di avere anche una panoramica dei servizi, quindi più consapevolezza nella scelta della tecnologia.
  5. Penso che il DevOps sia un nuovo modello per una piccola parte del mondo informatico, principalmente se si forniscono servizi. Credo anche che la collaborazione a qualsiasi livello sia una cosa auspicabile in generale.

 

Eduardo Zapata (Team Leader): 

 

  1. Il DevOps è un concetto molto difficile da spiegare; è utile e va bene sia per tutti coloro che hanno nel loro bagaglio una serie di competenze IT, sia per la programmazione, perciò sia per il team degli sviluppatori, sia per il team Operation, un po’ come succede tra Matteo, Ivan ed io (come Matteo Ivan ed io) e quindi possiamo mettere mano al DevOps direttamente senza passare da un’analista funzionale.
    Un altro approccio relativo al DevOps facile fa spiegare è che una persona che non conosce nulla di programmazione, grazie ai tool offerti da Microsoft, può arrivare ad ottenere gli stessi risultati e gli stessi obiettivi perché si hanno molti elementi già precompilati.
  2. E’ un piccolo traguardo personale (ce l’ho fatta, ho una certificazione e gratificazione personale); dal punto di vista aziendale invece è stata necessaria per poterci offrire la possibilità di gestire progetti molto più grandi e ci avrebbe aperto le porte a future ed ottimali collaborazioni con partner di una certa notorietà.
  3. Il tempo, perché per prepararsi era molto difficile ed il tempo, era quasi inesistente! L’impegno e la volontà di raggiungere questa certificazione però, hanno abbattuto ogni ostacolo ed ogni presunta difficoltà.
  4. Il valore aggiunto si ritrova nella possibilità di gestire progetti di grande valore, potendo collaborare con clienti importanti! Ormai si sta passando tutto al Cloud e quindi avere persone competenti in materia ed orizzontali allo stesso tempo sulle tecnologie utilizzate, risulta essere un plus a livello aziendale.
    Le persone competenti hanno quindi la possibilità di gestire il progetto in tutte le parti di esso!
  5. Secondo me sì, rappresenta una parte del futuro dell’informatica! Avere coesione tra il team di sviluppo e di operation è davvero un punto di forza da riconoscere alle aziende IT.

 

Ivan Soreca (Developer): 

  1. Il DevOps a mio avviso lo identifico come l’insieme delle capacità e delle conoscenze di strumenti generici, nel senso che non c’è una vera e propria e singola specializzazione che comprende TUTTO ciò che viene fatto oggi in termini di infrastruttura, che confluiscono in un’unica persona.
  2. Di certo la soddisfazione personale di avere raggiunto un traguardo così importante!
  3. Direi il tempo e le domande! Il DevOps non è un argomento facile e le domande all’esame sono davvero toste! Inizialmente poi alcuni concetti non erano per niente semplicissimi (configurazione di file ad esempio) e non è come imparare un qualsiasi linguaggio di programmazione nuovo; una volta che impari un linguaggio di programmazione lo conosci e continui senza problemi; hai delle perplessità? Trovi le risposte con un’infinità di dispense online che ti aiutano; il DevOps no!
  4. La certificazione ti porta (non solo come detto prima ad una tua soddisfazione personale), ma a poter lavorare per clienti grandi gestendo progetti di una certa portata.
  5. Secondo me sì, può rappresentare il futuro dell’ informatica che è un campo che cambia moltissimo in base a quello che piace di più e si sta puntando su questa soluzione (devops) avendo una figura unica che fa più o meno tutto e alle aziende fa comodo e più stabile perché non hai tante persone che fanno cose diverse.

E’ molto importante poter dare voce a chi nel settore se ne intende: ciò può essere utile a tutti (chi già sa e chi no) di poter imparare nozioni nuove ed approcciarsi al mondo del DevOps a piccoli passi.

Se devi scegliere un partner esperto, fallo in maniera intelligente: ascolta le parole, ma guarda i fatti!!

 

Openshift: alcuni semplici concetti

Introduciamo il concetto di Openshift definendolo come una piattaforma Kubernetes Entreprise che consente, a chi la utilizza, di poter godere di un’esperienza simile al cloud in tutti i tipi di ambienti.

Openshift offre una serie di possibilità: puoi scegliere dove creare, dove distribuire e dove eseguire le applicazioni mantenendo sempre un’esperienza coerente, realizzando un’ottimale collaborazione tra il mondo Dev ed il mondo Ops (Developers ed Operations), ottenendo la massima efficienza!

Dev ed Ops vi ricorda qualcosa? Abbiamo parlato diverse volte di DevOps, sottolineando che per descriverlo, esistono svariate definizioni.

Il DevOps (link di seguito se siete curiosi e volete sapere di cosa si tratta e quali sono i vantaggi che si ottengono https://www.bluecube.it/devops-significato-definizione/), rappresenta una nuova cultura, un nuovo approccio, un’evoluzione che migliora ed ottimizza i tempi, le risorse ed i processi aziendali ed ha come obiettivo principale il miglioramento della collaborazione tra sviluppatori ed operations per velocizzare la realizzazione di software e rendere più efficienti i relativi processi.

Il fatto di poter ottenere un illimitato ed imminente accesso alle informazioni (grazie ad un maggior numero e varietà di canali disponibili), ha contribuito a creare quindi un metodo di lavoro composto da ritmi frenetici e dalla necessità da parte degli utenti di avere un risposte ed informazioni immediate.
Il tempo è tutto quindi! La velocità è uno dei fondamenti di questo processo, così che DevOps ha creato un modello in grado di velocizzare l’innovazione del business aziendale in termini digitali.

Ecco che il DevOps si presenta come un approccio (culturale) più efficiente allo sviluppo del software che sfrutta le potenzialità di un insieme di processi (che insieme delineano una metodologia) che aumenti la velocità e la flessibilità con cui nuove funzionalità e nuovi servizi vengono forniti.
In tutto ciò, non va dimenticato che la metodologia DevOps offre SICUREZZA al 100% su servizi software molto innovativi.
La filosofia del DevOps si basa sul sistema Agile, consentendo una riduzione dei tempi di sviluppo ed una messa in produzione automatica e continua, apportando miglioramenti al time-to-market.
Ecco che è possibile anche ottenere un’elevata qualità del software con molti meno bug e molte più funzionalità.
Il DevOps, per un’architettura Cloud Native, è un elemento fondamentale!

Openshift: i microservizi

Per microservizi si intende una serie funzionalità importanti che sono alla base dell’approccio architetturale con cui si suddividono le funzionalità di un applicativo, rendendo quindi il servizio di piccole dimensioni ed indipendente dagli altri in termine di implementazione, manutenzione e codice.
Ciò rende possibile il fatto per cui si hanno diversi team occupati su microservizi diversi in modo indipendente e parallelo, comportando un vantaggio esponenziale sia nello sviluppo evolutivo, sia nella manutenzione ordinaria del software che viene realizzato.
Andiamo ora ad analizzare alcuni dei microservizi come segue.

Openshift: virtualizza le tue idee con i container!

I container rappresentano un’evoluzione dell’idea di virtualizzazione tradizionale; sfruttano le capacità del kernel di un sistema operativo (specialmente Linux) , rendendo la coesione di più istanza isolate ed autonome nello spazio utente, permettendo di conseguenza di isolare un’applicazione e tutte le sue dipendenze in un ambiente autonomo.
I container possono essere eseguiti su ogni tipo di piattaforma e server (per lo sviluppo, per il test ed anche per la messa in produzione), garantendo un vantaggio competitivo per moltissime aziende.

Openshift: Automatizza la tua Infrastruttura

Automatizzare un processo e/o un insieme di processi è una funzionalità che spesso viene sottovalutata ma che, in realtà, all’interno di un ambiente Cloud Native, è di fondamentale importanza.
Quali sono i vantaggi che ne derivano?
1. Temporale: il tuo business ha più tempo di lavoro per lo sviluppo effettivo;
2. Gestione di ambienti complessi: noterai una rapida scalabilità ed una diversificazione complessiva degli ambienti.
3. Dev ed Ops: grazie all’automazione, i due team (Dev ed Ops) potranno dedicare meno tempo a svolgere attività di supporto e più tempo al miglioramento continuo del sistema; inoltre, si velocizzano in termini generali, i tempi di modifica ed esecuzione dei test in maniera più rapida progettando efficienti pipeline di CI/CD (leggi anche https://www.bluecube.it/perche-e-necessario-usare-le-pipelines/).

Openshift: la nuova orchestrazione

Oggigiorno tutte le moderne applicazioni si estendono su più macroservizi che vengono containerizzati e distribuiti su una serie di cloud pubblici e privati, senza mai rinunciare alla disponibilità: l’orchestrazione è un’operazione non poco complessa ed è qui che troviamo i famosi orchestratori di Container, come ad esempio Kubernetes.
Kubernetes è uno strumento che consente di automatizzare e controllare attività che vanno dalla gestione stessa del container al provisioning automatico, scalando molto velocemente verso l’alto o il basso.
In linea generale però, va anche sottolineato utilizzare un orchestratore di container è indispensabile per gestire sistemi distribuiti che fanno uso di un gran numero di container e di seguito elenchiamo i vantaggi:
Un orchestratore di container permette di gestire moderne applicazioni strutturate a micro-servizi;
Un orchestratore di container facilita la gestione di un gran numero di micro-servizi in un cluster di server e risolve problemi legati al deployment combinato dei container;
Utilizzando Openshift come orchestratore di container, è più facile ottenere lo scaling selettivo delle singole componenti di un’applicazione a micro-servizi.

Openshift: IaaS, PaaS, e SaaS

Con IaaS, PaaS e SaaS, indichiamo tre macrocategorie di servizi che si basano sull’infrastruttura Cloud che vengono utilizzate dalle aziende per ottenere semplicità d’uso e flessibilità e che, grazie alle loro potenzialità, hanno segnato la svolta per il business aziendale, migliorando anche il processo di digitalizzazione.
E’ bene però analizzare questi termini nel dettaglio in modo tale da costruire un quadro completo:

  • IaaS: Infrastructure-as-a-Service: grazie a questo le aziende possono usare in egual misura e maniera sia le tecnologie sia le funzionalità di un data center tradizionale senza doverle tenere/manutenere/gestire fisicamente poiché è il provider che fornisce un’infrastruttura di cloud computing, compresi server, reti, sistemi operativi, storage, ecc. Alcuni esempi sono Microsoft Azure, Amazon Web Services (AWS).
  • PaaS: Platform-as-a-Service: siamo di fronte ad un ibrido (tra IaaS e SaaS) dove il provider mette a disposizione la piattaforma per creare il software. In questo modo lo scenario è differente, perché da un lato abbiamo i developer che hanno la completa e totale libertà di concentrarsi sullo sviluppo software senza dover badare ai suoi aggiornamenti, allo storage, all’intera infrastruttura, ecc….Esempi? Windows Azure, AWS Elastic Beanstalk ed il nostro OPENSHIFT.
  • SaaS: Software-as-a-Service, tutta l’intera applicazione è messa a disposizione dal provider via web e. per poterla utilizzare, non serve sapere scrivere codici.

Cioè?

Il modo più semplice per illustrarne il funzionamento è farvi pensare ad esempio a Gmail: per accedervi, lo si può fare gratuitamente tramite Internet o acquistando una licenza ma senza scaricare file!
Altri esempi sono: Google Docs, Salesforce, Microsoft Office.

Openshift: le sue caratteristiche

Openshift è molto semplice da installare: l’importante è disporre di un cluster di macchine che utilizzi come sistema operativo RHEL.
Per quanto riguarda i server non c’è nessuna importanza di come siano fatti (che siano fisici, VM, macchine su cloud privati o pubblici); Openshift ha la capacità di trattare il cluster di server come risorse di calcolo e di storage creando un’astrazione nella quale coabitano le applicazioni precedentemente containerizzate.
Openshift è un sistema composto da diverse parti e, ciascuna di esse è installabile in modo tale da avere solo punti di forza (no single point of failure) ed è costruito a partire da Kubernetes sfruttando però altri diversi progetti e tecnologie open source (anche Kubernetes è un aggregato di prodotti open source)

Openshift: il modo più facile per…..

E’ bene ora identificare quali siano alcuni dei vantaggi che Openshift offre, quali ad esempio:

  1. Mostra diverse interfacce utente ed API che consentono di gestire ogni aspetto della piattaforma ed una successo di runtime che facilita la creazione di app containerizzate.
  2. Offre un ricco catalogo di linguaggi e server che costruiscono sistemi distribuiti complessi ed app a micro-servizi in modo semplificato;
  3. Openshift è stato pensato per migliorare la collaborazione tra utenti minimizzando le interfacce indesiderate.
  4. E’ la piattaforma ideale per ottimizzare la cooperazione tra Dev ed Ops.
    Openshift consente agli sviluppatori di approvigionarsi in modo autonomo di tutti gli strumenti necessari per costruire app e workflow di build e deploy a proprio piacimento.
    E’ anche vero che il team Ops ha il pieno controllo dell’intera piattaforma (dal suo utilizzo, dall’esecuzione delle app, ecc)…

Openshift: prendi la scelta giusta

Se tu dovessi pensare di ottenere una serie di vantaggi derivati da una tua scelta specifica, la prenderesti?
Se tu dovessi pensare che dai vantaggi ottenuti dalla scelta specifica dovessi ottenere un miglioramento della tua vita, la prenderesti?
Se tu dovessi pensare di ritrovarti in una situazione di generale miglioramento ed appagamento derivato da una scelta precisa, la prenderesti?
Ora è tempo di portare tecnologici miglioramenti al business, giusto?
Ora è il tempo di scegliere Openshift senza pensarci due volte!

Contattaci per avere maggiori informazioni, ora!

Necessità iniziale del cliente/Obiettivo 

 

Per Moresi.com leader nel settore della digital transformation, abbiamo sviluppato un PoC (proof of concept)), per automatizzare e centralizzare i processi di provisioning e di configurazione delle risorse degli ambienti On-Premise ed in Cloud, sfruttando le potenzialità della metodologia DevOps.

L’obiettivo è quello di verificare la possibilità di provvedere alla gestione IT delle risorse infrastrutturali sfruttando le potenzialità di Azure DevOps come punto centralizzato, utilizzandolo per orchestrare e gestire tutte le componenti software coinvolte nell’operatività.

Per rendere il POC più completo, per ogni sistema, oltre a verificarne le possibilità di accesso si forniranno anche esempi di casi d’uso pratico.

Ora però, andiamo per step, partendo dagli ambienti e dalle tecnologie utilizzate.

 

Ambienti  e tecnologie utilizzati 

 

Gli ambienti che abbiamo preso in analisi sono i seguenti: 

 

On-Premise

  • Hypervisor

VMware  xSphere

VMware vCloud Director

ESXi (Bare Metal Hypervisor)

  • Network

Fortinet

Fortimanager

Cloud

  • AWS (Amazon Web Services): AWS simple Instance, AWS Multi Region deploy, 
  • Microsoft Azure

 

Sistemi Operativi

  • Linux: LAMP stack deployment using Ansible, LAMP stack deployment using Bash
  • Windows:  deploying IIS and ASP.NET using PowerShell
  • ForiOS: Apply to a FortiOS some firewall rules using Ansible and the self-hosted agent of azure devops

Ci siamo avvalsi dell’utilizzo del paradigma IaC (acronimo di Infrastructure as Code) che consente la gestione e la configurazione completa dell’infrastruttura in tutte le sue parti: reti, macchine virtuali, servizi di bilanciamento del carico e tipologia di connessione, circoscritti in un modello descrittivo.

Per poter raggiungere la nostra meta e soddisfare in maniera ottimale l’esigenza del cliente e la sua ambizione, abbiamo sfruttato le potenzialità di una serie di tecnologie che fanno parte del nostro DNA e che ci caratterizzano, quali: 

  1. Docker: Docker permette di costruire, impacchettare e poi distribuire applicazioni con facilità e velocità attraverso contenitori con le tutte le dipendenze necessarie invece di macchine virtuali. Elimina le banali attività di configurazione e favorisce la collaborazione efficace del team.

I contenitori Docker possono essere eseguiti ovunque, in locale, nel data center, in un provider di servizi esterno o nel cloud. I contenitori di immagini Docker possono essere eseguiti in modo nativo in Linux e Windows.

 

  1. Git: Git è uno strumento per il controllo della versione usato per tenere traccia dei cambiamenti nel codice sorgente e coordinare efficacemente il lavoro fra i componenti del Team.

 

  1. Ansible: Ansible è uno strumento di automazione IT. È possibile configurare sistemi, distribuire software ed eseguire attività IT più avanzate come distribuzioni in sequenza o aggiornamenti senza tempi di inattività utilizzando file di configurazione in formato YAML (YAML Ain’t Markup Language) sotto forma di Playbook Ansible, che permettono di descrivere le configurazioni desiderate in un linguaggio colloquiale.

 

  1. Terraform: Terraform è uno strumento per creare, modificare e aggiornare l’infrastruttura in modo sicuro ed efficiente utilizzando un linguaggio di configurazione di alto livello chiamato HCL (HashiCorp Configuration Language) che consente di descrivere ed attuare lo stato desiderato.

Terraform è in grado di gestire fornitori di servizi noti ed esistenti, nonché soluzioni interne personalizzate.

 

  1. Scripts: Qualora qualche particolare configurazione non sia attuabile con i moduli disponibili per strumenti sopracitati è possibile sfruttare i linguaggi di scripting propri del sistema da configurare:

        Bash: CLI (Command Line Interface) usata nei sistemi operativi Unix e Unix-Like;

        Powershell: CLI (Command Line Interface) usata prevalentemente sei sistemi operativi Windows;

     VMware PowerCLI: modulo di powershell per la gestione, la configurazione e l’automazione dei prodotti VMware.

  1. Azure DevOps: Azure DevOps è una piattaforma Software as a Service (SaaS) di Microsoft che fornisce un insieme di strumenti per lo sviluppo e la distribuzione di software. Si integra inoltre con la maggior parte degli strumenti DevOps presenti sul mercato, ed è un’ottima opzione per orchestrare una Toolchain DevOps.

 

  Metodologia ed approccio utilizzato

 

Inoltre, per poter sviluppare il PoC al meglio, ci siamo avvalsi di una metodologia che, da diversi anni  è presente nel mondo dell’IT a livello internazionale; stiamo parlando dell’approccio DevOps. 

Quando si parla di DevOps bisogna far riferimento ad una nuova cultura, ad un cambiamento radicale applicato al mondo Dev (development) ed Ops (Operations) e, quindi, un approccio rivolto all’automazione dei processi e ad una modalità collaborativa tra i membri del team coinvolti. 

E’ un paradigma che descrive le metodologie da adottare per accelerare i processi di un’idea da concretizzarsi passando in maniera facile dalla fase di sviluppo e progettazione, a quella di produzione. 

Che cosa deve essere chiaro per approcciarsi al DevOps? 

Il team deve essere solido, compatto, collaborativo, con un buon livello di comunicazione ed una continuità nel medio-lungo periodo.

Elemento chiave? L’empatia e la capacità di comprendere tutti i membri del team per affinare al meglio la propria cooperazione, giungendo alla perfezione operativa nel minor tempo possibile. 

Grazie al DevOps si hanno una serie di vantaggi:

  1. Efficienza, passando dal self-service e l’automazione;
  2. Velocità: gli sviluppatore lavorano a stretto contatto con l’anima operativa per velocizzare le fasi di creazione, collaudo, rilascio dei software e delle infrastrutture ad essi correlate
  3. Affidabilità: riduzione degli errori dovuti all’intervento umano.

Come già accennato, quando parliamo di DevOps, parliamo di cambiamento; ogni cambiamento richiede impegno e richiede la capacità di sfruttare al meglio le competenze, le capacità e le tecnologie adeguate.

L’elemento da non dimenticare mai quando si parla di DevOps è l’automazione. 

Perché?

E’ grazie all’automazione che si verifica l’ottimizzazione del tempo per integrare, in maniera agile, eventuali modifiche effettuate al software, scalando ed adattando in maniera flessibile tutte le componenti dell’infrastruttura sottostante. 

Che altro OFFRE il DevOps?

L’automazione permette a tutti i professionisti IT di dedicarsi alle attività importanti, garantendo loro coerenza e riducendo le possibilità di errore, evitando quindi di perdere il loro tempo in compiti banali e ripetitivi. 

I servizi offerti da Azure DevOps sono:

    • Azure Board : Usato per la pianificazione del team basato sulla filosofia Agile/Scrum;
  • Azure Repos : Usato per l’hosting dei repository e la gestione del versioning;
  • Azure Pipelines : Usato per automatizzare le compilazioni e le distribuzioni;
  • Azure Test Plans : Usato per il testing pianificato ed esplorativo;
  • Azure Artifacts : Aggiunge la gestione dei pacchetti integrata alle pipeline;

Tra questi, per la PoC, ci concentreremo su Azure Repos, come contenitore dei repositories, e su Azure Pipelines, come aggregatore di pipeline.

Questi due servizi sono essenziali per seguire la metodologia di lavoro GitOps, la quale necessita che tutto il sorgente sia centralizzato in un repository e che per certi eventi sul sorgente venga eseguita una Pipeline alla quale viene delegato il compito di eseguire azioni finalizzate eventualmente al deploy.

 

Per ogni casistica definita nel paragrafo precedente verrà realizzata una repository che conterrà il codice necessario per conseguire l’obiettivo definito, ad ogni repository è associata una pipeline.

Tutte le pipeline vengono triggerate ad ogni nuovo “commit” sul “branch” principale della repository.
Per ogni casistica si concorderà quali permessi sono necessari per eseguire le pipelines.

Un’organizzazione così modulare del sorgente permette di:

  • Rende lo sviluppo più semplice e veloce, permettendo allo sviluppatore di concentrarsi solo sul sorgente necessario
  • Permette un maggior controllo sulle feature/fix che vengono effettuate e riduce i permessi necessari per eseguire le pipelines.

 

Se volete conoscere i risultati ottenuti, seguiteci e leggete il prossimo, capitolo…

 

Coming soon…

DevOps: il sinonimo del nostro presente e futuro informatico 

DevOps è un termine relativamente nuovo nel mercato dell’informatica e della tecnologia. 

Nato dall’incontro di due parole, Developer e Operations, è diventato in poco tempo una metodologia di lavoro che consente di ottenere molteplici vantaggi, ottimizzando il lavoro di entrambe le parti (ramo sviluppo e team IT operation). 

DevOps: Quando è nato esattamente? 

L’origine della parola è riconducibile al 2009 quando due parole, Developer e Operations si unirono. 

Che cosa indicano entrambi i termini?

Con Developers si indicano gli sviluppatori e tutti coloro che sono coinvolti nello sviluppo del prodotto (ad esempio: Product Owner & Quality Assurance). 

Con Operations si indicano invece tutte le competenze professionali, ed in particolare connesse alle figure di system engineer, administrator, tutto il team di operation, network engineer e professionisti della sicurezza. 

Detto ciò, l’obiettivo principale di questo approccio è proprio quello di riuscire il più possibile ad avvicinare i due team, quello di programmazione e quello di sistemisti che, vista la loro intrinseca natura, alle volte hanno obiettivi che non combaciano e che possono entrare in contrasto! 

Perciò, lo scopo principale di questa metodologia è quello di poter realizzare un flusso unico di lavoro che, all’inizio specialmente, dovrà essere pianificato.

In realtà, dare una definizione specifica a questo approccio non è semplice come sembra!

Il fondatore di questo approccio, Patrick Debois, diede questa definizione:  “It’s a movement of people who think it’s change in the IT Industry – time to stop wasting money, time to start delivering great software, and building systems that scale and last”. 

DevOps: alcune definizioni per spiegare il concetto 

DevOps è: unione di processi, tecnologia e persone per offrire valore agli utenti finali

DevOsp è: metodologia Agile di sviluppo software, utilizzata per migliorare la procedura di distribuzione e la manutenzione dei contenuti creati. 

DevOps è: una logica integrata in cui i diversi aspetti di pianificazione, sviluppo, test, deploy, produzione e monitoraggio si relazionano all’interno di un processo organico e continuo. 

DevOps: semplicemente una nuova cultura, un nuovo approccio, un’evoluzione che migliora ed ottimizza i tempi, le risorse ed i processi aziendali ed ha come obiettivo principale il miglioramento della collaborazione tra sviluppatori ed operations per velocizzare la realizzazione di software e rendere più efficienti i relativi processi. 

DevOps: keep C.A.L.M.S. e scegli questo approccio!

DevOps racchiude in sé una serie di principi che, uniti tra loro in una forma sinergica, vengono riconosciuti con l’acronimo C.A.L.M.S. (da non confondere con l’Agile, i cui principi sono iscritti sul famoso Manifesto). 

“Sciogliamo” l’acronimo e scopriamo insieme i vari prinicpi: 

  1. C = Culture: quando si lavora in ambito DevOps è prioritario avere una cultura di tale concetto connesso ad un chiaro percorso verso obiettivi comuni.
  2.  A = Automation: la metodologia DevOps trova negli strumenti la fonte importante per realizzare tutti i processi di provisioning, system integration, release management, system integration, control…
  3. L = Lean: quando si parla di DevOps il proprio pensiero connette due parole tra loro, quali, snello e veloce! Proprio così, perché all’interno di questo approccio è fondamentale snellire e velocizzare i processi per ottimizzare un lavoro al meglio!
  4. M = Measurement: beh, la misurazione dei risultati, delle performance ottenute ed anche dei processi diventa necessario per realizzare un continuo miglioramento. Ecco perché l’analisi e la misurazione deve essere parte integrante di ogni lavoro.
  5. S = Sharing: condividere i risultati ed il proprio lavoro è parte del DNA DevOps ed è allo stesso tempo il modo di lavorare che DevOps stesso propone, così che Developers ed Operations vedano il nemico nel problema e non tra di loro!!! 

DevOps: perché utilizzarlo? 

Grazie a DevOps, la programmazione e lo sviluppo lavorano in sinergia e a ciclo unico sun porzioni di software e non su tutta l’applicazione e ciò permette di: 

  1. Accelerare i tempi di rilascio del software
  2. Migliorare la qualità del codice
  3. Garantire una maggior stabilità e sicurezza
  4. Standardizzare l’infrastruttura
  5. Automatizzare le distribuzioni
  6. Testare l’applicazione in ambienti diversi
  7. Assicurare il successo del software. 

DevOps: perché scegliere proprio noi? 

Il team Bluecube è composto da personale esperto e fortemente skillato in ambito di DevOps; abbiamo applicato questa metodologia dal 2016 quando ancora si parlava di DevOps ma non si conosceva a pieno.

Una dimostrazione di ciò che diciamo? Il progetto con Moresi.com! Nessuna informazione supplementare in merito a questo lavoro.

Volete saperne di più? Cliccate il link seguente e date un’occhiata a quella che noi chiamiamo solitamente “Partnership di Valore”!.

https://www.bluecube.it/moresi-com-e-bluecube-annunciano-una-nuova-partnership-per-offrire-servizi-di-azure-devops/

Ottimizza e facilita anche tu tutti i processi grazie al DevOps! 

Scegli persone che ti sappiano guidare, che sappiano offrirti la migliore soluzione per te e per il tuo business; scegli persone realmente certificate!

Scegli noi!