Programmazione in ambito distribuito e Cloud Computing
22/10/2024
Parte 2
yuribacciarini.com
Sempre lo stesso
Telegram group
| Acronimo | Significato |
|---|---|
| CSP | Cloud service provider |
| Multi AZ | Multi availability zone |
| DR | Disaster recovery |
| RPO | Recovery Point Objective |
| RTO | Recovery Time Objective |
Cloud infrastructure
(fondamenta)
I nostri applicativi
Container
tecnologia più usata per la distribuzione del SW
Un "container" è un pacchetto standardizzato che contiene tutto il necessario per eseguire un'applicazione, rendendola portabile e isolata su diversi ambienti.
Nutella != crema spalmabile alla nocciola
Docker API V2
"nucleo" del sistema operativo.
Nei container, consente l'isolamento delle applicazioni utilizzando funzionalità come namespace e cgroups.
sw responsabile del lifecycle dei container. Interazione con il kernel per garantire isolamento e utilizzo delle risorse.
è un pacchetto che contiene tutto il necessario per eseguire un'applicazione (codice, le librerie, le dipendenze)
Container è un istanza di un immagine.
Container = new ContainerImage()
Esplosione delle vulnerabilità (sopratutto opensource / terze parti)
18 luglio 2013: Apache rilascia Log4J 2.0-beta9 – da questo momento in poi nasce Log4Shell
9 dicembre 2021 vulnerabilità pubblica
28 dicembre 2021 final patch
4 gennaio 2022 Federal Trade Commission (FTC) degli Stati Uniti intende perseguire le aziende vulnerabili a causa di Log4Shell
DevOps è un approccio che unisce sviluppo (Dev) e operazioni (Ops) per migliorare la collaborazione, l'automazione e la velocità di rilascio del software.
Mira a ottimizzare il ciclo di vita del software attraverso pratiche (e tool) come integrazione continua, distribuzione continua e monitoraggio, promuovendo una cultura di comunicazione e feedback tra i team.
CI Code libraries
CI Container image libraries
CD continuous deployment
Runtime
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services.
Prima di avventurarci nella distribuzione del sw su flotte di VMs,
è fondamentale comprendere i "single node patterns".
Il container non è più l'elemento atomico che andremo a distribuire.
Gruppi di containers correlati
(spoiler --> in Kubernetes un gruppo di container è chiamato "pod")
Condividono
networking & storage
Cosa sono
Generici "blueprint" per gestire sistemi distribuiti senza riferirsi ad una specifica tecnologia
Obiettivo
Dare consigli generici per guidare il design architetturale.
Il "VIP" dei patterns
Circuit breaker
Pod
Dynamic configuration
Ambassador container è un "broker" che gestisce le interazioni tra il nostro applicativo ed il mondo esterno.
Using an Ambassador to Shard a Service.
As the figure below shows, when we have a sharded service we need to develop a logic in order to choose which is the elected shard to use.
Using an Ambassador for Service Brokering
Example: Using an Ambassador to Do Experimentation or Request Splitting
Andando oltre i container che collaborano su una singola macchina, i container modulari rendono più facile costruire applicazioni distribuite coordinate su più nodi.
Alcuni esempi:
Leader election pattern
Work queue pattern
Work queue pattern
Scatter/gather pattern
Scatter/gather pattern
Distributed Document Search
Scatter/gather pattern
Sharded Document Search
Scatter/gather pattern
(distillato analcolico)
Bor
Node autoscaling
Horizonatal
Pod autoscaler (HPO)
Vertical
Pod autoscaler (VPO)