Programmazione in ambito distribuito e Cloud Computing

 

22/10/2024

Parte 2

Chi sono

yuribacciarini.com

Sempre lo stesso

  • Linguaggio
  • Tanti topic + laboratorio
  • Cloud agnostic Aruba Cloud
  • Domande libere
  • 2* (45' + 10' break)  + 40'
  • Alta presenza di MEME

Premesse

Premesse

Topics

  • Intro al Cloud computing
  • Hands-on code
  • (Secured) Container & Kubernetes
  • Design patterns in sistemi distribuiti
  • Lab
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

Container

Un "container" è un pacchetto standardizzato che contiene tutto il necessario per eseguire un'applicazione, rendendola portabile e isolata su diversi ambienti.

Docker != Container

Nutella != crema spalmabile alla nocciola

Lifecycle

Docker API V2

Dissezione

"nucleo" del sistema operativo.

Nei container, consente l'isolamento delle applicazioni utilizzando funzionalità come namespace e cgroups.

 

1

Kernel

sw responsabile del lifecycle dei container.  Interazione con il kernel per garantire isolamento e utilizzo delle risorse. 

2

Container runtime

è un pacchetto che contiene tutto il necessario per eseguire un'applicazione (codice, le librerie, le dipendenze)

3

Container image

Container è un istanza di un immagine.

 

Container = new ContainerImage()

4

Container

JVM

Class

Image

Analogia

(wrap) up

Vantaggi

  • resource isolation;
  • small, focused pieces for each team to own;
  • reusable modules that can be used by many teams;
  • separation of concerns;
  • more reliable rollouts (and rollbacks).

Esplosione delle vulnerabilità (sopratutto opensource / terze parti)

Minecraft injection point

Log4shell attack

 

Log4shell attack

 

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.

DevOps

CI Code libraries

CI Container image libraries

CD continuous deployment

Runtime

Single node patterns

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".

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

Single node patterns

Cosa sono

Generici "blueprint" per gestire sistemi distribuiti senza riferirsi ad una specifica tecnologia

 

Obiettivo

Dare consigli generici per guidare il design architetturale.

Sidecar pattern

Il "VIP" dei patterns

Sidecar pattern

Circuit breaker

Pod

Sidecar pattern

Dynamic configuration

Ambassadors

Ambassador container è un "broker" che gestisce le interazioni tra il nostro applicativo ed il mondo esterno.

Ambassadors

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.

Ambassadors

Using an Ambassador for Service Brokering

Ambassadors

Example: Using an Ambassador to Do Experimentation or Request Splitting

Adapter Pattern

Multi node design patterns

Andando oltre i container che collaborano su una singola macchina, i container modulari rendono più facile costruire applicazioni distribuite coordinate su più nodi.

Multi node design patterns

Alcuni esempi:

  • Leader election pattern
  • Work queue pattern
  • Scatter/gather pattern

Multi node design patterns

Leader election pattern

Multi node design patterns

Work queue pattern

Multi node design patterns

Work queue pattern

Multi node design patterns

Scatter/gather pattern

Multi node design patterns

Scatter/gather pattern

Distributed Document Search

Multi node design patterns

Scatter/gather pattern

Sharded Document Search

Multi node design patterns

Scatter/gather pattern

Multi node design patterns

Kubernetes

(distillato analcolico)

Kubernetes first view

Bor

Obiettivi k8s

  • Node autoscaling
  • Horizonal pod autoscaler (HPA)
  • Vertical pod autoscaler (VPA)

Autoscaling

Autoscaling

Node autoscaling

Horizonatal

Pod autoscaler (HPO)

Vertical

Pod autoscaler (VPO)

DEMO

Voucher

if not arubaUserExist():
    register()

login()
topUpCredit()
addVoucherID()
enjoy()
  • valore di 150€
  • valido per 3 mesi
  • usabile su tutti i servizi
    Aruba cloud
  • attenzione al billing !!!
  • Inglese
  • Mentor
  • "Sporcatevi" le mani

Tips

Da evitare

  • è sempre stato fatto così

Thank You!

Coffee ?

Made with Slides.com