Browse by Tags

We've categorized the glossary terms. Use the filters to browse terms by tag.

API Gateway

Cos’è Un API Gateway è uno strumento che aggrega API applicative rendendole disponibili in un’unica posizione. Questo consente alle organizzazioni di spostare le funzioni chiave, come l’autenticazione e l’autorizzazione o la limitazione del numero di richieste tra le applicazioni, in una posizione gestita centralmente. Un API Gateway fornisce inoltre un’unica interfaccia comune per i consumatori di API (spesso esterni). Quali problematiche affronta Se stai mettendo le API a disposizione di consumatori esterni, vorresti avere un unico punto di ingresso per gestire e controllare tutti gli accessi...

Application Programming Interface (API)

Cos’è Un’API è un modo tramite il quale dei programmi informatici possono interagire tra di loro. Proprio come gli umani interagiscono con un sito tramite una pagina web, un’API permette ai programmi informatici di interagire gli uni con gli altri. A differenza delle interazioni umane, le API hanno delle limitazioni su cosa si può o non si può chiedere loro. Avere un limite alle interazioni aiuta a creare una comunicazione stabile e funzionale tra programmi...

Applicazioni Cloud Native

Cos’è Le applicazioni Cloud Native sono progettate specificamente per sfruttare le innovazioni nel Cloud Computing. Queste applicazioni si integrano facilmente con le rispettive architetture cloud sfruttandone le risorse e le capacità in termini di scalabilità. La definizione si riferisce anche ad applicazioni che sfruttano le innovazioni in ambito infrastrutturale, introdotte dal Cloud Computing. Con applicazioni Cloud Native oggi si intendono app che vengono eseguite indifferentemente in data center di un provider cloud o su piattaforme Cloud Native on-premise...

Applicazioni distribuite

Cos’è Un’applicazione distribuita è un’applicazione la cui funzionalità è suddivisa in parti più piccole e indipendenti. Le applicazioni distribuite sono generalmente composte da microservizi che gestiscono diversi aspetti all’interno dell’applicazione più ampia. In un ambiente cloud native i singoli componenti sono tipicamente eseguiti come container all’interno di un cluster. Quali problematiche affronta Un’applicazione in esecuzione su un singolo computer rappresenta un singolo punto di vulnerabilità: se quel computer si blocca, l’applicazione non sarà più disponibile...

Architettura ad eventi

Cos’è Un’architettura basata sugli eventi è un paradigma di progettazione software che promuove la creazione, l’elaborazione e il consumo di eventi. Un evento è un qualunque cambiamento di stato di un’applicazione. Per esempio, richiedere una corsa su un’applicazione di ride-sharing rappresenta un evento. Questo tipo di architettura crea la struttura nella quale gli eventi possono essere correttamente indirizzati dalla loro origine (l’applicazione che richiede una corsa) al destinatario desiderato (l’applicazione degli autisti disponibili nelle vicinanze)...

Architettura Client-Server

Cos’è In un’architettura client-server la logica (o il codice) che forma un’applicazione è diviso in due o più componenti: un client che richiede di eseguire del lavoro (ad esempio, l’applicazione web di Gmail in esecuzione sul web browser), e uno o più server che soddisfano quella richiesta (ad esempio, il servizio “invia email” in esecuzione sui computer di Google in cloud). In questo esempio, le email in uscita sono inviate dal client (l’applicazione web in esecuzione sul web browser) a un server (i computer di Gmail, che inoltrano le email in uscita ai rispettivi destinatari)...

Architettura loosely coupled

Un’architettura loosely coupled (debolmente accoppiata) è uno stile architetturale nel quale i singoli componenti di un’applicazione sono costruiti in modo indipendente l’uno dall’altro (si tratta del paradigma opposto a quello delle architetture tightly coupled, cioè strettamente accoppiate). Ciascun componente, a volte chiamato microservizio, è progettato per eseguire una specifica funzione in modo da poter essere utilizzato da un numero indefinito di altri servizi. Questo stile architetturale è generalmente più lento da implementare rispetto ad un’architettura tightly coupled ma garantisce molti benefici, specialmente quando le applicazioni vengono scalate...

Architettura Tightly Coupled

Le architetture tightly coupled (strettamente accoppiate) sono uno stile architetturale nel quale una serie di componenti di un’applicazione sono interdipendenti (si tratta del paradigma opposto a quello delle architetture loosely coupled). Questo significa che un cambiamento in un componente avrà probabilmente un impatto su altri componenti. Generalmente sono più semplici da implementare rispetto a uno stile architetturale più loosely coupled, ma il sistema può risultare più vulnerabile a fallimenti a cascata...

Architettura Zero Trust

Cos’è L’architettura Zero trust prevede di progettare e implementare sistemi IT con un approccio nel quale la fiducia è completamente rimossa. Il principio fondamentale è “non fidarsi mai, verificare sempre”: prima di comunicare con altri componenti di un sistema, i dispositivi o i sistemi stessi attuano delle verifiche. Oggi accade spesso che internamente ad un network aziendale i sistemi e i dispositivi possano comunicare liberamente tra loro poiché si trovano all’interno del confine considerato affidabile del perimetro del network aziendale...

Astrazione

Nel campo dell’informatica, un’astrazione è una rappresentazione che nasconde le specifiche a un consumatore di servizi (sia esso un programma o un utente), rendendo un sistema più generico e quindi facilmente comprensibile. Un buon esempio è il sistema operativo (OS - Operating System) di un PC, che astrae tutti i dettagli sul funzionamento di un computer. Non è necessario sapere alcunché sulla CPU, sulla memoria e su come vengono gestiti i programmi...

Autoscaling

Per autoscaling si intende la capacità di un sistema di essere scalabile automaticamente, tipicamente in termini di risorse di computazione. Con un sistema dotato di autoscaling, le risorse sono automaticamente aggiunte al bisogno, così che possano corrispondere alla portata delle richieste degli utenti in quel periodo. Il processo di autoscaling è variabile, ed è configurabile per modificare le risorse di un sistema in base a più metriche, come la memoria o il tempo di computazione...

Blue Green Deployment

Cos’è Il blue-green deployment è una strategia per l’aggiornamento di sistemi in esecuzione con un disservizio minimo. L’operatore ha in esecuzione due ambienti, denominati “blue” e “green”. Di questi, il primo è effettivamente in produzione (ed è la versione che tutti gli utenti stanno utilizzando), mentre il secondo è in aggiornamento. Una volta che i test sono conclusi sull’ambiente non attivo (il “green”), il traffico verso produzione viene dirottato su quest’ultimo (spesso con l’utilizzo di un load balancer)...

Canary Deployment

Cos’è Per Canary deployment si intende una strategia di distribuzione che inizia con due ambienti: uno con traffico in tempo reale e l’altro contenente il codice aggiornato senza traffico in tempo reale. Il traffico viene gradualmente spostato dalla versione originale dell’applicazione alla versione aggiornata. Si può iniziare spostando l'1% del traffico in tempo reale, quindi il 10%, il 25% e così via, fino a quando tutto il traffico viene veicolato attraverso la versione aggiornata...

Chaos Engineering

Cos’è Con Chaos Engineering (CE) si intende la disciplina che consiste nel condurre esperimenti su un sistema distribuito nell’ambiente di produzione, per creare confidenza nella capacità del sistema di tollerare condizioni turbolente e inaspettate. Quali problematiche affronta Le pratiche SRE e DevOps si concentrano sulle tecniche per aumentare la resilienza e l’affidabilità dei prodotti digitali. La capacità di un sistema di tollerare i guasti, garantendo al contempo un’adeguata qualità del servizio, è tipicamente un requisito dello sviluppo del software...

Cloud Computing

Cos’è Il cloud computing è un modello che offre risorse computazionali come CPU, rete e capacità di archiviazione su richiesta attraverso internet. Il cloud computing offre agli utenti la possibilità di accedere e utilizzare potenza di calcolo da remoto. I cloud provider come AWS, GCP, Azure, DigitalOcean e altri offrono a terze parti la possibilità di noleggiare l’accesso a risorse computazionali in diverse località geografiche. Quali problematiche affronta Tradizionalmente, le organizzazioni dovevano affrontare due problemi principali quando dovevano espandere il loro utilizzo di potenza di calcolo...

Cloud Native Security

Cos’è Cloud native security è un approccio che include la sicurezza nelle applicazioni cloud native. Garantisce che la sicurezza faccia parte dell’intero ciclo di vita dell’applicazione, dalla fase di sviluppo fino alla messa in produzione. Cloud native security mira a garantire gli stessi standard dei modelli di sicurezza tradizionali, adattandosi al contempo alle particolarità degli ambienti cloud native, in particolare alle rapide modifiche del codice e all’infrastruttura altamente effimera. Cloud native security è molto legata alla pratica chiamata DevSecOps...

Cluster

Cos’è Un cluster è un gruppo di computer o applicazioni che lavorano insieme verso un comune obiettivo. Nel contesto del cloud computing nativo, il termine è più spesso riferito a Kubernetes. Un cluster Kubernetes è un insieme di servizi (o workloads) che vengono eseguiti nei loro containers, di solito su macchine diverse. L’insieme di tutti questi servizi containerizzati, collegati su una rete, rappresentano un cluster. Quali problematiche affronta Il software che è in esecuzione su un singolo computer presenta un singolo punto di vulnerabilità: se quel computer si blocca, o qualcuno accidentalmente ne scollega il cavo di alimentazione, parte del sistema critico di business potrebbe andare offline...

Come Contribuire

I contenuti del Glossario Cloud Native sono disponibili in questo repository di GitHub, dove troverai una lista di issue, PR, e discussion riguardanti il glossario. Ci sono tre modi in cui puoi contribuire: Proporre nuove voci Migliorare quelle esistenti Aiutare nella traduzione del glossario Entra nella Glossary community Valuta di entrare anche tu nei nostri meeting mensili del Glossary Working Group, se hai intenzione di contribuire regolarmente. Puoi trovare i dettagli del meeting nel calendario della CNCF...

Container Orchestration

Cos’è Per orchestrazione dei container si intende la gestione e l’automazione del ciclo di vita delle applicazioni containerizzate in ambienti dinamici. L’orchestrazione dei container viene effettuata tramite l’utilizzo di un orchestratore di container (nella maggior parte dei casi Kubernetes), che consente di eseguire i processi di deployment (distribuzione), (auto)scaling (scalabilità), auto-healing (riparazione) e monitoraggio. Il concetto di orchestrazione è preso in prestito dal mondo musicale ed utilizzato come una metafora: lo strumento di orchestrazione dirige i container come un direttore d’orchestra musicale, assicurandosi che ogni container (o musicista) faccia ciò che dovrebbe fare...

Containers

Cos’è Un container è un processo in esecuzione con vincoli di risorse e capacità gestiti dal sistema operativo di un computer. I file disponibili per il processo del container vengono compressi in una “immagine” del container. I container vengono eseguiti in spazi di memoria adiacenti sulla stessa macchina, ma in genere il sistema operativo impedisce ai processi container separati di interagire tra loro. Quali problematiche affronta Prima che i container fossero disponibili, erano necessarie macchine separate per eseguire le applicazioni...

Continuous Delivery (CD)

Cos’è La Continuous Delivery (rilascio continuo), spesso abbreviata in CD, è un insieme di pratiche in cui le modifiche al codice vengono automaticamente implementate in un ambiente di accettazione (oppure, nel caso di distribuzione continua, in produzione). Parte integrante della CD sono le procedure per garantire che il software sia adeguatamente testato prima della distribuzione, nonché le modalità di ripristino in caso di necessità. L’integrazione continua (CI - da Continuous Integration) è il primo passo verso la distribuzione continua (vale a dire, le modifiche devono essere raggruppate in modo pulito prima di essere testate e implementate)...

Continuous Deployment (CD)

Cos’è Il Continuous deployment, o Distribuzione Continua, spesso abbreviato CD, è il passo successivo di continuous delivery, o ed esegue l’installazione del sofware finito direttamente in produzione. Il continuous deployment (CD) va di pari passo con la continuous integration (CI), e il processo nel suo insieme viene spesso indicato come CI/CD. La fase di CI verifica se le modifiche apportate a una determinata applicazione sono valide, ed la fase CD distribuisce automaticamente le modifiche al codice attraverso i vari ambienti di un’organizzazione, dai test alla produzione...

Continuous integration (CI)

Cos’è Continuous integration, spesso abbreviato CI, è la pratica di integrare le modifiche al codice il più regolarmente possibile. La CI è il prerequisito per la continuous delivery (CD). Tradizionalmente, il processo di CI inizia quando le modifiche al codice vengono committate in un sistema di controllo del codice sorgente (Git, Mercurial o Subversion) e termina con un artefatto testato pronto per essere consumato da un sistema di CD. Quali problematiche affronta I software sono spesso estesi e complessi, con numerosi sviluppatori che li mantengono e aggiornano...

Data center

Cos’è Un data center è un edificio o una struttura specializzata appositamente progettata per ospitare più computer, spesso server. I data center sono abitualmente collegati a linee internet ad alta velocità, soprattutto quando sono focalizzati sul cloud computing. Gli edifici che ospitano i data center sono attrezzati per mantenere il servizio anche durante eventi avversi, inclusi generatori che forniscono energia durante le interruzioni e potenti sistemi di aria condizionata che mantengono una temperatura controllata, proteggendo i computer dal calore che producono lavorando...

DevOps

Cos’è DevOps è una metodologia in cui i team sono responsabili dell’intero processo: dallo sviluppo delle applicazioni fino alle attività di installazione, configurazione e manutenzione in produzione, da cui DevOps. Il concetto va oltre l’implementazione di una serie di tecnologie e richiede un cambiamento completo nella cultura e nei processi. DevOps richiede gruppi di ingegneri che lavorano su piccoli componenti (invece di un’intera feature), diminuendo i passaggi di mano - una fonte comune di errori...

DevSecOps

Cos’è Il termine DevSecOps si riferisce alla combinazione culturale delle responsabilità di sviluppo, operative e di sicurezza. Estende l’approccio DevOps per includere le priorità in materia di sicurezza con un’interruzione minima o nulla del flusso di lavoro degli sviluppatori e degli operatori. Come DevOps, DevSecOps è un cambiamento culturale, spinto dalle tecnologie adottate, con metodi di adozione unici. Quali problematiche risolve Le pratiche DevOps includono continuous integration e continuous deployment e accelerano i cicli di sviluppo e rilascio delle applicazioni...

eBPF

Cos’è eBPF, per esteso “Berkeley Packet Filter”, è una tecnologia che consente di eseguire piccoli programmi o script in sandbox nello spazio kernel di un sistema Linux, senza dover modificare il codice sorgente del kernel o caricare moduli del kernel Linux specifici. Un sistema Linux ha due spazi di esecuzione dei processi: il kernel e lo spazio utente. Il kernel rappresenta il nucleo del sistema operativo ed è l’unica parte con accesso illimitato all’hardware...

Event Streaming

Cos’è L’event streaming è un approccio nel quale un software invia i dati di un evento da un’applicazione a un’altra per comunicare costantemente cosa stanno facendo. Si immagini un servizio che trasmetta ogni cosa che faccia a tutti gli altri servizi. Ogni attività intrapresa da un servizio è chiamata evento, da cui event streaming. Per esempio, NASDAQ ottiene aggiornamenti sui prezzi di azioni e materie prime ogni secondo. Se si ha un’applicazione che monitora uno specifico insieme di azioni, ci si aspetta di ricevere quelle informazioni in tempo quasi reale...

Function as a Service (FaaS)

Cos’è Function as a Service (FaaS) è un tipo di servizio di cloud computing serverless che consente l’esecuzione di codice in risposta agli eventi senza mantenere la complessa infrastruttura tipicamente associata alla creazione e all’avvio di applicazioni a microservizi. Con FaaS, gli utenti gestiscono solo funzioni e dati mentre il provider cloud gestisce l’applicazione. Ciò consente agli sviluppatori di ottenere le funzioni di cui hanno bisogno senza pagare per i servizi quando il codice non è in esecuzione...

Glossario Cloud Native

Glossario Cloud Native Il Glossario Cloud Native è un progetto guidato dal Business Value Subcommittee (BVS) della CNCF con cui la community si propone di spiegare concetti del mondo cloud native con un linguaggio semplice e diretto che non presupponga conoscenze tecniche pregresse. Contribuire L’invito a suggerire modifiche, aggiunte e migliorie al Glossario Cloud Native è aperto a chiunque abbia voglia di contribuire. Il processo che adottiamo per lo sviluppo e l’arricchimento di questo dizionario condiviso è guidato dalla community e governato dalla CNCF...

Guida di Stile

Questa guida ti aiuterà a comprendere chi sono i destinatari del Glossario, la struttura delle definizioni, il livello di dettaglio richiesto e come mantenere uno stile coerente. Il Glossario Cloud Native rispetta la Guida di Stile del repository CNCF, ma si è posto regole aggiuntive e specifiche: Usa un linguaggio semplice, accessibile e che eviti tecnicismi spinti e buzzwords Evita un linguaggio eccessivamente colloquiale Usa un linguaggio concreto ed espressioni letterali Fai attenzione agli accenti, alla correlazione dei tempi verbali e alla punteggiatura Prediligi la forma attiva Utilizza preferibilmente la forma affermativa Non eccedere con le parentesi Non esagerare Evita le ripetizioni Sii concisə Usa pure termini e diciture in inglese se sono largamente utilizzati in ambito tecnico, ma aggiungi comunque una traduzione italiana per chiarire...

Idempotenza

In matematica o in informatica, l’idempotenza descrive un’operazione che conduce sempre al medesimo risultato, indipendentemente dal numero di volte che viene eseguita. Se i parametri sono gli stessi, un’operazione idempotente non avrà ripercussioni sull’applicazione chiamata...

Infrastructure as a Service (IaaS)

Cos’è Infrastructure as a service (Infrastruttura come Servizio), o IaaS, è un modello di servizio di cloud computing che offre risorse di elaborazione, archiviazione e network fisiche o virtualizzate su richiesta e secondo un modello di pagamento basato sul consumo effettivo. I Cloud provider rimangono i proprietari di hardware e software, e sono coloro che ci intervengono fattivamente. Quali problematiche affronta Nelle tradizionali configurazioni on-premise, le organizzazioni incontrano spesso difficoltà nell’utilizzare in modo efficace le risorse di elaborazione...

Infrastructure as Code

Cos’è Con infrastructure as code (IaC - Infrastruttura come Codice) si intende il processo di gestione e provisioning dell’infrastruttura attraverso file di definizione leggibili da una macchina: tratta la configurazione dell’infrastruttura alla stregua di software di programmazione. Questo sostituisce il modello tradizionale in cui l’infrastruttura come servizio viene creata manualmente, in genere tramite script di shell o altri strumenti di configurazione. Quali problematiche affronta La creazione di applicazioni native sul cloud richiede che l’infrastruttura sia a perdere e riproducibile...

Infrastruttura immutabile

Un’Infrastruttura immutabile si riferisce a un’infrastruttura informatica (macchine virtuali, container, apparecchiature di rete) che non può essere cambiata dopo essere stata deployata. Questo può essere imposto da un processo automatico che sovrascrive le modifiche non autorizzate o tramite un sistema che non consente di apportare modifiche. I container sono un buon esempio di infrastruttura immutabile, perché cambiamenti persistenti ai container possono essere apportati solamente creando una nuova versione del container o ricreando il container esistente dalla sua immagine...

Kubernetes

Che cos’è Kubernetes, spesso abbreviato in K8s, è un orchestratore di container open source. Automatizza il ciclo di vita delle applicazioni containerizzate su infrastrutture moderne, fungendo da “sistema operativo per datacenter” che gestisce applicazioni su un sistema distribuito. Kubernetes esegue i container sui nodi all’interno di un cluster, raggruppando diverse risorse di infrastruttura come i load balancer, archiviazione persistente, ecc. per eseguire applicazioni containerizzate. Kubernetes abilita automazione ed estensibilità, permettendo agli utenti di rilasciare applicazioni in modo dichiarativo (vedi sotto) in maniera riproducibile...

Macchina Bare Metal

Cos’è Bare metal (puro metallo) si riferisce a un computer fisico, più specificamente un server, che ha uno e un solo sistema operativo. Nell’informatica moderna questa distinzione è importante perché molti, se non la maggior parte, dei server sono macchine virtuali. Un server fisico è tipicamente un computer di grandi dimensioni con un hardware potente. Installare un sistema operativo ed eseguire le applicazioni direttamente su quell’hardware fisico senza virtualizzazione, si definisce come in esecuzione su “bare metal”...

Macchina virtuale (VM)

Cos’è Una macchina virtuale (VM) è un computer e il suo sistema operativo che non è legato a un particolare componente hardware. Le macchine virtuali si basano sulla virtualizzazione per suddividere un singolo computer fisico in più computer virtuali. Questa separazione consente alle organizzazioni e ai fornitori di infrastrutture di creare e distruggere VM senza influire sull’hardware sottostante. Quali problematiche affronta Le macchine virtuali sfruttano la virtualizzazione. Quando una macchina bare metal è vincolata a un singolo sistema operativo (OS), il modo in cui le risorse della macchina possono essere utilizzate è alquanto limitato...

Microservizi

Cos’è I microservizi sono un approccio moderno allo sviluppo di applicazioni che sfrutta le tecnologie native del cloud. Sebbene le applicazioni moderne, come Netflix, sembrino essere un’unica app, in realtà sono una raccolta di servizi più piccoli, tutti in stretta collaborazione. Ad esempio, una singola pagina che ti consente di accedere, cercare e visualizzare in anteprima i video è probabilmente alimentata da servizi più piccoli che ne gestiscono ciascuno un aspetto (ad esempio ricerca, autenticazione ed esecuzione di anteprime nel browser)...

Multitenancy

Cos’è Multitenancy (o multi-tenancy) si riferisce a una singola installazione software che serve più tenant. Un tenant può essere un utente, un’applicazione o un gruppo di utenti/applicazioni che utilizzano il software per operare sul proprio set di dati. Questi tenant non condividono dati (a meno che non siano espressamente istruiti in tal modo dal proprietario) e possono non essere a conoscenza l’uno dell’altro. Un tenant può essere piccolo come un utente indipendente con un singolo ID di accesso — si pensi ai software di produttività personale — o tanto estesi quanto un’intera azienda con migliaia di ID di accesso, ciascuno con i suoi permessi e comunque correlati in molti modi...

Mutual Transport Layer Security (mTLS)

Cos’è Il Mutual TLS (mTLS) è una tecnica utilizzata per autenticare e criptare i messaggi inviati tra due servizi. Il Mutual TLS è il protocollo Transport Layer Security (TLS) standard, che permette la validazione dell’identità di entrambi gli estremi della connessione. Quali problematiche affronta I microservizi comunicano tramite una rete e, proprio come in una rete Wi-Fi domestica, le comunicazioni in transito su quella rete possono essere violate. Il mTLS assicura che nessun soggetto non autorizzato possa mettersi in ascolto o impersonare richieste legittime...

Nodi

Cos’è Un nodo è un computer che lavora insieme ad altri computer, o nodi, per realizzare un compito comune. Prendi per esempio il tuo portatile, il modem e la stampante. Sono tutti collegati alla tua rete wireless che comunicano e collaborano: ognuno rappresenta un nodo. Nel cloud computing, un nodo può essere un computer fisico, un computer virtuale (chiamato VM) o anche un container. Quali problematiche affronta Un’applicazione potrebbe (e in molti casi è così) girare su una singola macchina, ma ci sono alcuni rischi legati a questo...

Osservabilità

Cos’è L’osservabilità è la capacità di generare e scoprire continuamente spunti di intervento sulla base dei segnali provenienti dal sistema osservato. In altre parole, l’osservabilità permette agli utenti di comprendere lo stato di un sistema dai suoi risultati esterni e intervenire di conseguenza (correggendo). Quali problematiche affronta I sistemi informatici vengono misurati osservando sia segnali di basso livello, come la CPU, la memoria e lo spazio su disco, sia segnali di più alto livello e di business, come i tempi di risposta delle API, gli errori, il numero di transazioni per secondo, ecc...

Pod

Cos’è In un ambiente Kubernetes, un pod è la più piccola unità di base di un’applicazione; rappresenta un blocco di costruzione essenziale per l’installazione e la gestione di applicazioni containerizzate. Ogni pod contiene una singola istanza applicativa, e può contenere uno o più container. Kubernetes gestisce i pod come parte di un deployment e se necessario può eseguire lo scaling verticale o orizzontale dei pod. Quali problematiche affronta Sebbene i container agiscano generalmente come unità indipendenti che eseguono e controllano un particolare carico di lavoro, ci sono casi in cui i container devono interagire ed essere controllati in modo strettamente accoppiato...

Policy as Code (PaC)

Cos’è Policy as code è la pratica che consente di memorizzare la definizione delle policy in uno o più file in formato leggibile e processabile da macchine. Questa metodologia sostituisce il modello tradizionale in cui le policy sono documentate in formato leggibile da umani in documenti esterni al sistema. Quali problematiche affronta La costruzione di applicazioni e infrastrutture è spesso vincolata a molte policy che un’organizzazione definisce, ad esempio policy di sicurezza che vietano di memorizzare segreti nel codice sorgente, di eseguire un container con autorizzazioni di superutente o di memorizzare alcuni dati al di fuori di una specifica regione geografica...

Portabilità

Caratteristica del software, la portabilità è una forma di riutilizzabilità che aiuta a evitare il “lock-in” in determinati ambienti operativi, ad esempio in ambito di Cloud Provider, sistemi operativi o fornitori vari. Tradizionalmente, si tende a realizzare software per ambienti specifici (quali, ad esempio, AWS o Linux). Il software portabile, invece, funziona in ambienti operativi diversi senza bisogno di grandi modifiche. Un’applicazione è considerata portabile se lo sforzo necessario per adattarla a un nuovo ambiente è entro limiti ragionevoli...

Reliability

Da una prospettiva cloud native, la reliability (affidabilità) si riferisce a quanto positivamente un sistema reagisce a problemi. Per semplificare al massimo, se un sistema distribuito continua a funzionare nonostante eventuali modifiche all’infrastruttura e al malfunzionamento di alcuni componenti, questo viene definito affidabile. Al contrario, se smette di funzionare correttamente e gli operatori devono intervenire manualmente per mantenerlo in funzione, il sistema è definito inaffidabile. L’obiettivo delle applicazioni cloud native è costruire sistemi intrinsecamente affidabili...

Role-Based Access Control (RBAC)

Cos’è Il Role-based access control (RBAC - Controllo degli accessi basato sul ruolo) è un metodo per regolare l’accesso a sistemi e risorse basato sui ruoli dei singoli utenti all’interno di un’organizzazione. Ogni funzione aziendale ha un ruolo specifico e determinati permessi. Per esempio, un membro del team di marketing potrebbe avere i permessi per vedere le trattative in corso (permesso di lettura), ma non sarà in grado di modificarle (permesso di scrittura)...

Runtime

Cos’è Un runtime, in generale, esegue un software. È un’astrazione del sistema operativo sottostante che traduce i comandi del programma in azioni corrispondenti perché siano utili al sistema operativo stesso. Nel contesto cloud native, il termine runtime si riferisce generalmente al runtime dei container. Un container runtime è un implementazione che segue le specifiche Open Container Initiative per garantire una gestione coerente dei container nelle differenti tecnologie di orchestrazione degli stessi...

Scalabilità

La scalabilità si riferisce alla capacità di un sistema di estendersi, o altrimenti detto di aumentare la propria capacità di fare qualsiasi cosa il sistema debba fare. Ad esempio, un cluster Kubernetes è scalabile perché vi si possono aumentare o ridurre il numero delle applicazioni containerizzate. La scalabilità dipende, però, da diversi fattori. Quanti nodi ha, quanti containers può gestire ogni nodo e quanti “record” e operazioni può supportare il pannello di controllo...

Scalabilità verticale

Cos’è La scalabilità verticale, è una tecnica in cui la capacita del sistema viene aumentata aggiungendo CPU e memoria sui singoli nodes quando il carico di lavoro aumenta. Ad esempio, nel caso in cui ci sia un computer con 4GB RAM e si voglia incrementare la sua capacità a 16GB RAM, Scalabilità verticale significa portare a 16GB RAM la memoria del sistema. (Si prega di fare riferimento a horizontal scaling per una differente modalità di scalabilità...

Security Chaos Engineering

Cos’è Security Chaos Engineering o SCE è una disciplina basata sul Chaos Engineering. SCE esegue proattivamente test di sicurezza su un sistema distribuito per assicurarsi che questo sia in grado di resistere a condizioni di instabilità e malevole. I security chaos engineers utilizzano cicli di metodi scientifici per raggiungere questo obiettivo, tra cui lo stato stazionario (steady state), ipotesi, verifica continua, lessons learned e implementazione delle mitigazioni. Quali problematiche affronta La priorità principale per i site reliability engineers (SRE) e gli ingegneri della sicurezza informatica è ripristinare il servizio il più velocemente possibile con l’obiettivo di annullare il disservizio e ridurre al minimo l’impatto sul business...

Self Healing

Un sistema self-healing (auto rigenerante) è capace di risolvere alcuni tipi di errore senza alcun intervento umano. È caratterizzato da un loop di “convergenza” o “controllo” che osserva attivamente lo stato attuale del sistema e lo confronta con lo stato che l’operatore desiderava inizialmente. Se riscontra una differenza (ad esempio sono in esecuzioni meno istanze di un’applicazione rispetto a quelle desiderate), intraprenderà delle azioni correttive (ad esempio creare nuove istanze)...

Serverless

Cos’è Il serverless è un modello di sviluppo cloud native che permette di costruire ed eseguire applicazioni senza la necessità di gestire i server. I server sono comunque presenti nel serverless, ma sono astratti dallo sviluppo dell’applicazione. Un cloud provider gestisce regolarmente il provisioning, la manutenzione e la scalabilità dell’infrastruttura server. I team di sviluppo possono semplicemente impacchettare codice incontainer per la distribuzione. Una volta distribuite, le applicazioni serverless rispondono alla domanda e scalano automaticamente in base alle necessità...

Service Discovery

Che cos’è Il service discovery è il processo di individuazione delle singole istanze che compongono un servizio. Uno strumento di service discovery tiene traccia dei vari nodi o endpoint che compongono un servizio. Quali problematiche affronta Le architetture cloud native sono dinamiche e fluide, ossia sono in costante cambiamento. Un’applicazione containerizzata probabilmente partirà e si fermerà più volte durante il suo ciclo di vita. Ogni volta che ciò accadrà, l’applicazione avrà un nuovo indirizzo: qualunque altra applicazione che vorrà individuarla avrà bisogno di un servizio che possa fornire le informazioni circa il suo nuovo indirizzo...

Service Mesh

Cos’è In un mondo costituito da microservizi, le applicazioni sono spacchettate in diversi servizi che comunicano tra loro attraverso una rete. Proprio come una qualunque rete Wi-Fi, le reti di computer sono intrinsecamente inaffidabili, hackerabili e spesso lente. Le service mesh rispondono a questo nuovo set di sfide gestendo il traffico (cioè la comunicazione) tra i servizi e conferendo in modo uniforme affidabilità, osservabilità e sicurezza a tutti i servizi...

Service Proxy

Cos’è Un service proxy intercetta il traffico verso o proveniente da un determinato servizio, vi applica delle logiche, e in seguito inoltra quel traffico a un altro servizio. Essenzialmente si comporta come un intermediario che raccoglie informazioni riguardo il traffico di rete e/o applica delle regole su di esso. Quali problematiche affronta Per tenere traccia delle comunicazioni tra servizi, ovvero di ciò che viene definito traffico di rete, e potenzialmente trasformarlo o reindirizzarlo, è evidentemente necessario raccogliere dati...

Servizio

Bisogna notare che nel campo dell’informatica, l’uso della parola “servizio” può avere molteplici significati. In questa sezione, ci concentreremo sulla definizione tradizionale: il servizio come un microservizio. Se i servizi differiscono dai microservizi, possono registrarsi delle sfumature di significato e persone diverse possono avere opinioni diverse a riguardo. Abbiamo deciso che per proporre una spiegazione ad alto livello, li accumuneremo in un’unica definizione. Si prega di fare riferimento alla definizione dei microservizi...

Shift Left

Cos’è Left in Shift Left (letteralmente “spostamento a sinistra”) si riferisce alle fasi precedenti di un ciclo di vita dello sviluppo del software, se si immagina il ciclo di vita come una linea lungo la quale le fasi si susseguono da sinistra a destra. Shift Left è l’approccio per il quale l’implementazione di test, di pratiche di sicurezza o di altre accorgimenti viene anticipata nelle prime fasi del ciclo di vita dello sviluppo piuttosto che integrata solo alla fine dello stesso...

Site Reliability Engineering

Cos’è Site Reliability Engineering o SRE è una disciplina che combina operations e ingegneria del software. Quest’ultima viene applicata specificamente a problemi infrastrutturali e operativi. In altre parole, invece di creare funzionalità di prodotto, i SRE realizzano i sistemi su cui le applicazioni sono in esecuzione. Esistono somiglianze con DevOps, ma mentre DevOps si concentra sul portare il codice in produzione, SRE garantisce che il codice in produzione funzioni correttamente...

Stateful Apps

Cos’è Quando parliamo di applicazioni stateful (letteralmente “a pieno stato”) e stateless (letteralmente “senza stato”), il concetto di stato si riferisce a tutti i dati da salvare affinché l’applicazione funzioni come previsto. Qualsiasi tipo di esperienza di acquisto online che ti ricorda a che punto sta il tuo carrello è, ad esempio, un’applicazione stateful. Quali problematiche affronta L’utilizzo di un’applicazione generalmente prevede più richieste. Durante le attività di online banking, per esempio, ti autentichi tramite l’inserimento della la tua password (richiesta n...

Sviluppo Agile del Software

Cos’è Un insieme di pratiche che enfatizzano i cicli di sviluppo iterativi e i team auto-organizzati. In contrasto con i progetti waterfall (a cascata) in cui il valore è generato solo alla fine del progetto, lo sviluppo agile del software si concentra su una consegna continua e incrementale del valore e sul miglioramento evolutivo del processo stesso. Quali problematiche affronta Definire, comunicare e comprendere i requisiti per tutti gli stakeholder (interessati) in un progetto di sviluppo software è molto difficile, se non impossibile...

Tecnologia Cloud Native

Cos’è Le tecnologie cloud native, a cui ci si riferisce anche con il termine cloud native stack, sono le tecnologie utilizzate per la creazione di applicazioni cloud native. Consentendo alle organizzazioni di implementare e gestire applicazioni scalabili in contesti moderni e dinamici quali le piattaforme cloud (pubbliche, private o ibride), mantengono la “promessa del cloud” e sfruttano al massimo i benefici del cloud computing. Sono progettate da zero con l’intento di impiegare le funzionalità di cloud computing e container...

TLS

Cos’è Il Transport Layer Security (TLS) è un protocollo progettato per fornire maggiore sicurezza alla comunicazione su una rete. Garantisce la consegna sicura dei dati inviati su Internet, evitando possibili monitoraggi e/o alterazioni dei dati stessi. Questo protocollo è ampiamente utilizzato in applicazioni come messaggistica, e-mail, ecc. Quali problematiche affronta Senza TLS, le informazioni sensibili come le abitudini di navigazione, la corrispondenza e-mail, le chat online e le chiamate in conferenza possono essere facilmente rintracciate e modificate da altri durante la trasmissione...

Virtualizzazione

Cos’è La virtualizzazione, nell’ambito del cloud native computing (calcolo nativo su cloud), si riferisce alla pratica per la quale a un computer fisico, talvolta denominato server, viene consentito di eseguire più sistemi operativi isolati. Tali sistemi operativi isolati e le risorse di calcolo ad essi dedicate (CPU, memoria e rete) vengono chiamati macchine virtuali o VM. Quando si parla di macchine virtuali, si fa riferimento a un computer definito da un software...