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

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