Programmazione in ambito distribuito e Cloud Computing
15/10/2024
Chi sono
yuribacciarini.com

1
2013
<UniFi>
3
2017
Startup(s)
5
2019
</UniFi>
2
2015
Web developer
4
2018
FE/BE Developer
6
2020
DevOps engineer
My path
Legacy code
Cloud native code



- Linguaggio
- Tanti topic
- Cloud agnostic
- Domande libere
- 2* (45' + 10' break) + 40'
- Alta presenza di MEME
Premesse
Telegram group
Premesse

Topics
- Intro al Cloud computing
- Hands-on code
- Container & Kubernetes
- Sistemi distribuiti & design patterns
- Lab
Discussione Aperta
Condividiamo esperienze e opinioni su cloud e containerizzazione.
Piattaforme Cloud
Qualcuno ha già provato qualche piattaforma cloud? Quale e per quale scopo?
Containers
Queste strane creature di cui tutti parlano
Kubernetes
L'orchestratore delle strane creature
Dev(Sec)Ops
La magia nera che salda insieme il lavoro di vari ruoli
Platform Engineering
Questa "nuova" scienza
Cloud computing is the on-demand delivery of IT resources over the internet, with pay-per-use pricing.
Cloud computing

Brief history
https://www.cloudzero.com/blog/history-of-the-cloud/

Credit: The history of the cloud between 1960 and 2005 – CIIT
Brief history
https://www.cloudzero.com/blog/history-of-the-cloud/
Credit: The history of the cloud between 2005 and 2020 – CIIT

Brief history
https://www.cloudzero.com/blog/history-of-the-cloud/

(Alcuni) Ruoli
| Role | Competenze verticali |
|---|---|
| Software engineer | Development |
| DevOps engineer | L5-7, sistemista (unix/windows) + developer (scripting) |
| Site reliable engineer | DevOps + focus sulla reliability |
| Network engineer | L0-5, Firewall, routing |
| ML engineer | AI/ML |
| Data engineer | statistics knowledge, analytical skills |
conoscenza cloud distribuita
"programmazione"
CSP
Cloud service providers
2006: First cloud provider launches services
We all know what followed: 2008, Google Cloud was launched. 2009 Alibaba Cloud. 2010 Microsoft Azure. 2011 IBM Cloud. 2013 Tencent Cloud. 2016 Oracle Cloud.

-
Elaborazione (Compute)
-
Archiviazione (Storage)
-
Rete (Networking)
-
Database
-
Analisi (Analytics)
-
Sicurezza (Security)
-
Strumenti di gestione (Management Tools)
-
Integrazione
Categorie di servizi
Region vs Zones
Concepts

Region vs Zones
Concepts
HA / Multi regions
High availability (HA) solution

| AZ | Availability Zone |
| HA | High availability |
HA / Multi regions
Multi regions solution

Disaster recovery (DR)
HA / Multi regions



HA / Multi regions
Disaster recovery (RPO & RTO)
- recovery point objective
- sfida sulla freschezza del dato
RPO
RTO
- recovery time objective
- sfida sul tempo
HA / Multi regions
Disaster recovery (RPO & RTO)
l'RPO si riferisce alla quantità di dati che può essere persa mentre l'RTO riguarda il tempo massimo necessario per ripristinare l'operatività del sistema.
HA / Multi regions
Disaster recovery

Scalability vs elasticity
Scalability
La scalabilità si riferisce alla capacità di un sistema di aumentare (scaling up) o ridurre (scaling down) le risorse per gestire un aumento o una diminuzione del carico di lavoro.
Esempio: Aumentare la capacità di un database aumentando la potenza del server (scaling up) o aggiungendo altri server per suddividere i dati (scaling out).
Scalability

- Verticale (scaling up/down)
- Orizzontale (scaling out/in)
Elasticity
L'elasticità si riferisce alla capacità di un sistema di adattarsi dinamicamente e in tempo reale alle variazioni del carico di lavoro, aumentando o riducendo automaticamente le risorse in base alla domanda.
Esempio: Un sito web di e-commerce che aumenta automaticamente il numero di server durante una campagna promozionale per gestire il traffico aggiuntivo e poi li riduce quando la campagna termina.
Elasticity

Obiettivi
Elasticity
Obiettivi

Elasticity
Obiettivi

Scalability vs elasticity
In sintesi, la scalabilità è il fondamento per la crescita sostenibile di un sistema, mentre l'elasticità consente una gestione flessibile e immediata delle risorse in base ai cambiamenti istantanei del carico di lavoro.
Cloud Lock-in
Cloud lock-in
Il "cloud lock-in" si riferisce a una situazione in cui un cliente diventa dipendente dagli strumenti, dalle tecnologie o dai servizi di un determinato fornitore di servizi cloud, rendendo difficile o costoso passare a un altro fornitore.

Strategie per evitarlo:
- Standardizzazione (riduzione dipendenza soluzioni proprietarie)
- architettura portabile
- multi-cloud
- containerizzazione
- piani di backup&migrazione
- contratti flessibili
- Monitoraggio
Cloud lock-in
Non sempre però è un punto a sfavore.


- Agilità
- Time to market
- Cloud native features
- Prevenire costi elevati
- Poter sfruttare il meglio di tutti i CSP
- Maggior tempo di progettazione
Modelli di servizio Cloud
Risorse di infrastruttura virtualizzate.
Es. affitto di una VM
IaaS
Infrastracture
piattaforme complete per lo sviluppo, il test e la distribuzione di applicazioni
Es. Heroku, Firebase by GCP
PaaS
Platform
distribuzione software in cui le applicazioni sono ospitate nel cloud e accessibili tramite internet.
Es. Google workspace
SaaS
Software
as a service


(ulteriori)
Modelli di servizio Cloud
eseguire funzioni o microservizi senza gestire l'infrastruttura sottostante.
Es. AWS Lambda, Azure function app
FaaS
Function
ambiente per gestire e distribuire container.
Es. AWS ECS, Azure
CaaS
Container
accesso ai dati e servizi di gestione dei dati tramite il cloud.
Es. Google workspace / dropbox
DaaS
Data
Desktop
gestione desktop remoti
Es. Amz workspace
as a service
Shared responsability model
E cloud security

Shared responsibility model

Cloud Security model
Public or private
.. or hybrid
Modello in cui risorse come server e storage sono fornite da un fornitore terzo (es. AWS, Azure)
Caso d'uso: Hosting di un sito web per una startup
Public cloud

- no investimenti upfront
- time to market
- scalabilità

- dato fisicamente non in-house
Infrastruttura cloud dedicata a una singola organizzazione, ospitata on-premises o in un data center privato. Offre maggiore controllo e sicurezza, ideale per aziende con requisiti di conformità e gestione di dati sensibili.
Private cloud

- sicurezza del dato
- elaborazioni locali
- latenza
- strategia transitoria di migrazione in cloud

- scalabilità
- data center management
Private cloud
Esempi
- Azure stack
- AWS Outposts

Combina cloud pubblico e privato, consentendo di mantenere il controllo sui dati sensibili (cloud privato) e di sfruttare la scalabilità del cloud pubblico per gestire picchi di domanda.
Hybrid cloud

- sicurezza del dato
- elaborazioni locali
- latenza
- strategia transitoria di migrazione in cloud

- data center management
- costo
Pricing model



Computazione
Function as a service
Number of executions X (Lambda memory size/1024) X (Lambda duration in milliseconds/1000) = GB-seconds
Network


Cloud adoptions
Cloud native journey
vs cloud journey
Cloud journey

Come muovere grandi quantità di dati sul cloud

Drivers
- Velocità
- Costi
Cloud (native) journey



Hands on
Proviamo a mettere tutto insieme

Programmazione in ambito distribuito e cloud computing
By Yuri Bacciarini
Programmazione in ambito distribuito e cloud computing
- 226