SlideShare a Scribd company logo
1 of 75
Download to read offline
Dove ti trovi nel processo di
trasformazione verso Cloud
Native con Kubernetes?
Come ti “senti” ad usare
Kubernetes anche per gestire i
tuoi database PostgreSQL?
Cloud Native
PostgreSQL
in Italiano
Gabriele Bartolini, Leonardo Cecchi
15 Aprile 2021 – Versione 1.2.1
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Gabriele e Leonardo
Leonardo
• Luogo: Prato
• Utente di PostgreSQL dal ~1998
• 2ndQuadrant, dal 2015 al 2020
• Sviluppatore PostgreSQL
• Sviluppatore di Barman
• Lead Developer di Cloud Native PostgreSQL
• Adesso in EDB
• Architect
• Lead Developer di Cloud Native PostgreSQL
4
Gabriele
• Luogo: Prato
• Utente PostgreSQL dal ~2000
• Membro della Comunità dal 2006
• Cofondatore di PostgreSQL Europe e ITPUG
• 2ndQuadrant, dal 2008 al 2020
• Co-fondatore
• Head of Global Support
• Leader Cloud Native
• Fondatore di Barman
• Adesso in EDB
• Vice President of Cloud Native Postgres
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
La più grande azienda dedicata a PostgreSQL
5
EDB acquisisce 2ndQuadrant a Settembre 2020
● Più clienti: di ogni altra azienda dedicata a PostgreSQL
● Più esperti: leading contributor di PostgreSQL
● Più innovazione: posizionare per guidare PostgreSQL a livello
enterprise e cloud ibrido
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
EDB e Kubernetes
6
KCSP
Kubernetes Certified
Service Provider
Silver Member
CNCF e Linux Foundation
Operatori certificati per
RedHat OpenShift
La prima azienda su PostgreSQL a diventare KCSP
Sviluppatore Go per Kubernetes (Prato/remoto)
SRE per Kubernetes (Prato/remoto)
Stiamo
assumendo in
Italia
Info e domande: http://enterprisedb.com/careers
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Agenda
• DevOps e Cloud Native
• PostgreSQL e Kubernetes
• Introduzione a Cloud Native PostgreSQL
• Demo in diretta
• Kubernetes, Storage e PostgreSQL
• Conclusioni
DevOps e
Cloud Native
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Container: un cambio epocale ...
10
‘90s > ~2000 > ~2015 >
Server fisici Macchine virtuali Container applicativi
Hardware
Operating Systems
App
App
App
Hardware
OS Kernel
Hypervisor
Virtual machine
App
App
Libraries
OS Kernel
Virtual machine
App
App
Libraries
OS Kernel
Container
App
Libraries
Container
App
Libraries
Hardware
OS Kernel
Container Runtime
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
… richiede un cambio di mentalità
11
Scorciatoie
(Quello che vediamo nel modo di pensare corrente)
Cambio di
mentalità
Mentalità
“Container”
Azioni Risultati
Container
App
Libraries
Container
App
Libraries
Hardware
OS Kernel
Container Runtime
Mentalità
“Macchine
virtuali”
Azioni Risultati
1 VM = 1 istanza
Postgres
Hardware
OS Kernel
Hypervisor
Virtual machine
App
App
Libraries
OS Kernel
Virtual machine
App
App
Libraries
OS Kernel
Mentalità
“Server fisici” Azioni
Risultati
Multiple istanze Postgres su
porte differenti
Hardware
Operating Systems
App
App
App
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Esempio di “scorciatoia”
12
Application container vs System container
Mentalità
“Container”
Application container
1 container = 1 applicazione
Mentalità
“Macchine
virtuali”
System container
1 container = N applicazioni
(container come macchina virtuale)
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Cultura DevOps e mentalità “container”
13
DevOps
• L’apparenza inganna
• Non ci fermiamo al nome
• Evoluzione di varie discipline, fra cui:
• Lean
• Agile
• Leadership
• Alcuni concetti chiave:
• Version Control
• Trunk-based development
• Continuous Integration (CI)
• Test automation
• Automated deployment
• Shift left on security
• Continuous Delivery (CD)
Container e Kubernetes
• Mezzi per raggiungere degli obiettivi
• Espressioni e risultati di azioni intraprese
nella mentalità DevOps
• Modi diversi di sviluppare software e
distribuirlo
L’importanza dei “perché” e degli obiettivi
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
5 ideali
1. Locality and simplicity
2. Focus, Flow, Joy
3. Improvement of daily work
4. Psychological safety
5. Customer focus
The Unicorn Project (2019)
14
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
merge on
main branch
dev branch
container
repository
end user
container
image
Automated
testing and
static code
analysis
Developer
Reviewer
Reviewer
E2E testing
using
Kubernetes
release
policy
Continuous Integration (CI)
Version Control
Trunk-based development
Continuous Delivery (CD)
Automated deployment
Test automation
Shift left on security
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Immutable Application Container
16
Container image
Pacchetto binario che in esecuzione
diventa un container.
Basati sul modello a micro servizi
Application container
Container pensato per una singola
applicazione come entrypoint
(processo con PID 1).
Non mutabile
Un container non viene modificato
durante la sua esistenza.
No “yum update” o “apt upgrade”.
Come aggiornare le applicazioni?
Deployment di una nuova immagine del
container.
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Il significato di Cloud Native
17
Cultura DevOps e la Persona
Immutable Application
Container
Orchestrazione con
Kubernetes
Le tre colonne portanti secondo la nostra interpretazione e esperienza
“
Principi, modelli e strumenti per
automatizzare la gestione di micro servizi
basati su container in larga scala
Ibryam e Huß in “Kubernetes Patterns” da O’Reilly
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Come diventare Cloud Native
19
Non basta usare Kubernetes
Aggiungere competenze
verticali su Kubernetes, con
anche certificazioni CNCF
(CKA, CKS e CKAD)
Non basta usare container
Produrre Immutable
Application Container
Contesto organizzativo
Pensare “Cloud Native” in
tutta la filiera produttiva,
dallo sviluppo del software
fino alla distribuzione
Alcuni consigli e rischi da evitare
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Kubernetes (k8s)
20
La versione 1.0 è del luglio 2015
● Parola di origine greca che significa timoniere
● Sistema di orchestrazione di container
● Automatizza il deployment, l’amministrazione e la scalabilità di applicazioni Cloud Native
● Scritto in Go
● Open Source (Apache Licence 2.0)
● Il ruolo di Google e del progetto Borg
● Il ruolo di Cloud Native Computing Foundation (CNCF)
● Esistono distribuzioni di Kubernetes supportate da aziende, come:
○ OpenShift (RedHat), Rancher (Rancher Labs/SUSE), Tanzu (VMWare)
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Architettura di base di Kubernetes
21
Control Plane
Node Node
...
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Il concetto di stato in Kubernetes
22
Il ruolo del controller in Kubernetes
● Definizione dello stato desiderato di un oggetto e della infrastruttura come configurazione
● Cicli di riconciliazione, continui:
○ Lo stato corrente dell’infrastruttura è uguale a quello desiderato?
■ Se no, il controller reagisce per ripristinare lo stato desiderato
● Fondamenta del concetto di self-healing
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
PostgreSQL e
Kubernetes
“
Posso usare PostgreSQL dentro
Kubernetes?
Sì … ma devi conoscere bene sia
PostgreSQL che Kubernetes
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Popolarità di PostgreSQL
Sorgente: DB-Engines.com, 2021
Sorgente: Stack Overflow Developer Survey, 2020
PostgreSQL vince
26
2017
2018
2020
Database più amati
Scommetti su PostgreSQL
Database più popolari
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
“Postgres, perdonami” … (decenni di evoluzione)
27
Linux : Sistema Operativo = Postgres : Database
● Replica nativa in streaming, sia fisica che logica, asincrona e sincrona, in cascata
● Backup continuo online e Point In Time Recovery
● Partizionamento dichiarativo
● Estensibilità ed estensioni (e.g. PostGIS)
● Query parallele
● Supporto a JSON
● Indici funzionali e “covering index”
● INSERT .. ON CONFLICT DO UPDATE
● Supporto TLS, compresa autenticazione con certificati x509
● Standard SQL (2016)
● DDL transazionale
● Ricerca full text nativa
● Tablespace
● ...
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Un cenno all’architettura di PostgreSQL
28
Primario e replica nativa fisica in streaming
● PostgreSQL supporta nativamente l’architettura primario/standby (opzionali, multipli)
○ Evoluzione di Crash Recovery e Point-In-Time Recovery
○ Introdotta in PostgreSQL 8.2 con WAL shipping e Warm Standby
○ Migliorata in PostgreSQL 9.0 con WAL streaming e Hot Standby (replica in sola lettura)
● Ulteriori migliorie:
○ Replica sincrona
○ Replica in cascata
○ Replica logica
● Robustezza e affidabilità, con ottimi risultati in termini di RPO e RTO
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Imperativo vs Dichiarativo
29
Dichiarativo
C’è un cluster PostgreSQL 13 con 2 repliche
Imperativo
• Crea una istanza PostgreSQL 13
• Configurala per la replica
• Clona una seconda istanza
• Impostala come replica
• Clona una terza istanza
• Impostala come replica
Dichiarativo in Kubernetes
C’è un cluster PostgreSQL 13 con 2 repliche ...
in ogni istante
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
I due approcci in Kubernetes
Operatore (con replica nativa)
• Pattern che estende il controller di
Kubernetes, definendo il modo di lavorare
di un’applicazione complessa
• PostgreSQL è un’applicazione complessa
• Deployment e configurazione
• Rilevamento di fallimento e failover
• Aggiornamenti e switchover
• Backup e Recovery
• Monitoraggio
• …
• Sfrutta le potenzialità native di Kubernetes:
• Self-healing, alta disponibilità (HA),
scalabilità, controllo delle risorse e
dell’accesso, …
• Dichiarativo e automatizzato
30
Container (senza replica nativa)
• Pod con PostgreSQL in esecuzione
• Nessuna replica nativa
• Volume collegato all’istanza
• Spesso in rete
• Replica/backup a livello di file system
• Kubernetes si preoccupa di:
• far ripartire il Pod in caso di problema
• eventualmente spostarlo su un altro nodo
• Limiti:
• Storage è il Single Point of Failure (SPoF)
• Possibile elevato RTO
• Possibile elevato RPO
• Dipende da strategie di backup di Postgres
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Stato desiderato Stato corrente
RW RW
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Nasce
Cloud Native PostgreSQL
Introduzione a
Cloud Native
PostgreSQL
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Operatore scritto interamente in Go, come Kubernetes
Progettato per Kubernetes
34
● Integrato con Kubernetes API server
○ Non richiede alcun tool esterno per la gestione di HA
■ i.e. Repmgr, Patroni, Stolon
● Immutable Application Container
○ Soltanto PostgreSQL è in esecuzione
○ Molto leggeri
● Configurazione dichiarativa
○ Basato su “kubectl” - lo strumento da linea di comando ufficiale di Kubernetes
○ Manifesto di deployment in YAML
○ Infrastructure as Code (IaC)
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Immagini di container
35
Basate su RedHat UBI 8
● Ospitate su Quay.io
● Immagine dell’operatore
○ distribuita con licenza “EDB Limited Use”
● Immagini degli operandi (applicazione PostgreSQL)
○ PostgreSQL:
■ The Postgres License (PostgreSQL)
■ GNU GPL 3 (Barman Cloud)
○ EDB Postgres Advanced Server:
■ EDB Limited Use License
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Ambienti supportati
36
Obiettivo: far girare Postgres ovunque Kubernetes giri
● Self-managed e cloud privati:
○ Kubernetes 1.16+
○ OpenShift 4.5+
● Gestiti dal provider e cloud pubblici:
○ AKS (Azure)
○ EKS (Amazon - Q2/2021)
○ GKE (Google - Q2/2021)
Architetture
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Estremo 1: Nodo condiviso con PostgreSQL
38
Control Plane
Node Node
Node
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Estremo 2: Nodo dedicato a PostgreSQL
39
Control Plane
K8s Node =
PostgreSQL
node
K8s Node =
PostgreSQL
node
K8s Node =
PostgreSQL
node
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Conoscere Kubernetes
40
“Solo quando sarai stanco di ripetere il messaggio, le persone cominceranno a sentirlo” - A. Grove
● Vi sono infinite possibilità e combinazioni fra questi due estremi
● Sono tutte giuste e tutte sbagliate
○ Misurare sempre: non ci scordiamo che veniamo dalla terra di Galilei!
● PostgreSQL necessita SEMPRE che il sistema sottostante sia configurato in modo ottimale
○ Macchine fisiche
○ Macchine virtuali
○ Container con Kubernetes
● Lo storage è critico
● Se vogliamo usare PostgreSQL in un contesto Cloud Native:
○ Dobbiamo sapere tutto ciò che era necessario in VM e macchine fisiche
○ Dobbiamo aggiungere conoscenze su Kubernetes
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Applicazioni esterne a
Kubernetes
41
• Applicazioni legacy
• Applicazioni non ancora in formato container
• Applicazioni su VM
• PostgreSQL esposto fuori da K8s
• Ingress
• TLS
Approccio ibrido
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Applicazioni e database
in Kubernetes
Vero approccio Cloud Native
42
• Applicazioni come deployment:
• Rolling upgrade
• ReplicaSet per scalabilità e HA
• Immagini di applicazioni custom
• Go, Django, Java, Python, C, C++, …
• Database con Cloud Native PostgreSQL:
• Incorpora la logica primario/standby
• Servizio per operazioni RW e RO
• Rolling upgrade, scalabilità, HA, …
• “Cluster” CRD
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Architettura del cluster PostgreSQL
Con Cloud Native PostgreSQL
43
● Un PostgreSQL primario
● Zero o più server hot standby:
○ Replica nativa fisica di PostgreSQL in streaming
■ Async (default) e Sync (basato su quorum)
○ Required for HA
○ Supporto trasparente per pg_rewind
● Fornisce 3 servizi Kubernetes alle applicazioni:
○ suffisso -rw (carichi lettura-scrittura)
○ suffisso -ro (carichi solo lettura)
○ suffisso -r (carichi lettura)
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Servizio “-rw” (lettura e scrittura)
Kubernetes service for the PostgreSQL Primary
App App App
PostgreSQL Primary PostgreSQL Standby PostgreSQL Standby
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Servizio “-ro” (solo lettura)
Kubernetes service for the PostgreSQL Read-Only operations
App App App
PostgreSQL Primary PostgreSQL Standby PostgreSQL Standby
Random
Funzionalità
principali
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Gestione del cluster PostgreSQL
47
● Self-healing
○ Sonde di liveness e readiness
○ Failover del server primario
○ Creazione automatica di una replica
● Switchover pianificato del server primario
○ Promozione di un server di replica scelto dall’utente
● Gestione dei “rolling update”
○ Applicazione degli aggiornamenti con zero-downtime
● Gestione scalabilità verticale
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Gestione dello Storage
48
● Gestione dei Persistent Volume Claims (PVC)
○ Generazione automatica
○ Supporto per i template dei PVC
○ Riuso dello storage per i Pod nello stesso cluster
● Storage class
● Supporto per diversi tipi di storage
○ Storage locale
○ Storage di rete
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Gestione degli aggiornamenti
49
● Aggiornamento di un deployment senza downtime:
○ Update incrementale delle istanze nei Pod con le nuove immagini
■ Prima vengono aggiornati gli standby
■ Poi viene fatto uno switchover e quindi aggiornato il primario (che segue il nuovo)
● supervised / unsupervised
● Quando vengono lanciati:
○ In caso di aggiornamento dell’operatore
○ In caso di un aggiornamento di sicurezza dell’immagine UBI
○ In caso di aggiornamento di minor version di Postgres
○ In caso di cambio nella configurazione che richieda un restart di Postgres
● Una delle ragioni per cui non abbiamo usato ReplicaSets o Statefulsets
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Sicurezza
50
● Modello 4C
○ Cloud, Cluster, Container, Code
● Pod Security Policy e Security Context
○ Non è richiesto l’accesso privilegiato (root) per i containers
○ Non è richiesto l’accesso privilegiato (root) per l’accesso ai volumi
● Connessioni cifrate con uso di TLS
● Creazione dei secret per l’accesso a PostgreSQL
● Analisi statica del codice
○ Linter e Coverity Scan
● Analisi statica delle immagini
○ Dockle e Clair
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Backup fisico continuo
51
● Programmato e on-demand
● Supporto per gli object storage (compatibili con l’API di S3)
○ Cloud pubblici
○ Cloud privati (ad esempio usando MinIO)
● Uso della tecnologia Barman Cloud
○ barman-cloud-wal-archive
○ barman-cloud-backup
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Ripristino dati
52
● Permette di creare un nuovo Cluster a partire da un backup
● Recuperando l’area dati
○ È possibile affidarsi al Point-In-Time recovery se si desidera lavorare su una porzione temporale dei dati.
● Download and replay degli files WAL precedentemente archiviati
● Uso della tecnologia Barman Cloud
○ barman-cloud-restore
○ barman-cloud-wal-restore
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Livelli di funzionalità (secondo RedHat / Operator SDK)
53
CNP è compliant Level III (Level IV/V nel Q2 2021)
Defined by Operator SDK (RedHat) - source sdk.operatorframework.io/docs/
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Custom Resource Definition (CRD)
54
● Risorsa di tipo “Cluster”
○ L’operatore implementa un controller di Kubernetes
○ È responsabile per la creazione e manutenzione del cluster PostgreSQL
● parametro “instances”
○ numero di istanze PostgreSQL all’interno di un cluster
○ repliche hot standby = instances - 1
■ Supporta sia la replica sincrona che asincrona, per ottenere RPO=0
2021 Copyright © EnterpriseDB Corporation All Rights Reserved 55
2021 Copyright © EnterpriseDB Corporation All Rights Reserved 56
Demo in diretta
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
“Convention over configuration”
58
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: myapp-db
spec:
instances: 3
imageName: quay.io/enterprisedb/postgresql:13.2
storage:
size: 10Gi
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Deployment dichiarativo
59
# Install the operator in the cluster
kubectl apply -f <OPERATOR_MANIFEST_URL>
# Deploy the cluster (declarative)
kubectl apply -f myapp-cluster.yaml
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Configurazione di PostgreSQL
60
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
postgresql:
parameters:
work_mem: "8MB"
# …
# ...
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Plugin di kubectl
61
kubectl cnp status cluster-example
Cluster in healthy state
Name: cluster-example
Namespace: default
PostgreSQL Image: quay.io/enterprisedb/postgresql:13
Primary instance: cluster-example-1
Instances: 3
Ready instances: 3
Instances status
Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay
paused Pending restart
-------- ----------- ------------ ---------- --------- ------- -----------
------------- ---------------
cluster-example-1 0/6000060 6927251808674721812 ✓ ✗ ✗
✗
cluster-example-2 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗
✗
cluster-example-3 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗
✗
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Replica sincrona
62
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
minSyncReplicas: 1
maxSyncReplicas: 2
storage:
size: 1Gi
Kubernetes,
Storage e
PostgreSQL
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Storage e database Postgres
64
Aspettative e requisiti per la componente più critica
● Disponibilità: storicamente associata al sistema operativo
● Scalabilità: storicamente affidata ai tablespace oppure a FS resizing (e.g. LVM)
● In PostgreSQL spesso ci siamo concentrati su:
○ Prestazioni
○ Consistenza
○ Durabilità
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Architetture di storage (semplificate) in K8s
65
Storage locale (nodo)
• Accesso diretto a storage del sistema
operativo
• Locale al nodo K8s del Pod
• Quello che le persone di database vogliono
• Anti-pattern in Kubernetes
• Shared nothing architecture
• K8s sta cambiando:
• “local” persistent volumes (1.14+)
• OpenEBS Local PV, topoLVM, …
• Pro:
• Prestazioni
• Consistenza
• Contro:
• Scalabilità
• Disponibilità **
• K8s e l’operatore entrano in gioco
Storage di rete
• Accesso tramite rete
• Spesso condiviso da più nodi
• Pattern comune in Kubernetes
• Opzioni su posizione dello storage:
• Fuori K8s
• Dentro K8s
• Opzioni di replica dati:
• Livello di file (comune in K8s)
• Livello applicativo (Postgres)
• Pro:
• Scalabilità
• Disponibilità
• Contro:
• Banda di trasferimento dati
• Latenza
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
La nostra preferita su Kubernetes
Storage locale con replica dati applicativa (Postgres)
66
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Architettura Shared-Nothing
67
La preferita da chi ama PostgreSQL
● IMPORTANTE: è un caso limite, ma possibile soprattutto per VLDB e database critici
● Si affida a storage dedicato al nodo Kubernetes
○ Dischi locali, DAS dedicato o SAN dedicata
● L’unica condivisione è rappresentata dalla rete
● La più robusta e affidabile per un cluster Postgres
● Le istanza Postgres sono sparse su nodi Kubernetes multipli (Node Affinity)
○ Anche in differenti availability zone della stessa regione
● Il Pod usa storage locale dal nodo Kubernetes su cui gira
● Occorre considerare la latenza con le applicazioni
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Benchmark, benchmark, benchmark ...
68
Galileo!!!
● Misurate sempre il vostro storage
○ fio
● In particolare letture sequenziali e scritture sequenziali
● Se non lo potete fare voi, assicuratevi che il vostro fornitore di storage lo faccia per voi
● Misurate sempre il vostro database
○ pgbench
● Conoscete le performance massimali del vostro sistema
○ Se non volete variabilità nei risultati, non usate storage condiviso
● La scelta è unicamente vostra:
○ Estremo 1: storage condiviso di rete
○ Estremo 2: storage dedicate locale con SAN
2021 Copyright © EnterpriseDB Corporation All Rights Reserved 69
Conclusioni
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Cosa abbiamo in programma per CNP
71
Roadmap
● Raggiungere il livello 5 di Operator Capability Level
○ Migliorare l’exporter nativo per Prometheus
○ Log direttamente in output JSON, con supporto per audit
● Bootstrap di un cluster da pg_basebackup
○ Facilitare migrazioni dentro Kubernetes
● Modalità replica
○ Unita a boostrap da pg_basebackup o da backup abilita il “replica cluster”
■ Cross Kubernetes cluster replication
● Major upgrade di Postgres
○ offline (pg_dump)
○ online (replica logica, 0 cutover)
● Supporto per pgBouncer
● Supporto per Barman
● Supporto per BDR
● Kubernetes federation
○ Gestione di cluster Postgres su più cluster Kubernetes
2021 Copyright © EnterpriseDB Corporation All Rights Reserved
Prova subito Cloud Native PostgreSQL!
72
Operatore con EDB Postgres
Advanced
• Chiave di licenza trial necessaria
• Scadenza = 60 giorni dalla richiesta
• Dopo la scadenza, nessun ciclo di
riconciliazione
Operatore con PostgreSQL
• Non è necessario una licenza trial
• Viene creata una licenza implicita per ogni
cluster PostgreSQL
• Ideale per utilizzo in pipeline CI/CD
• Durata di default 30 giorni
• Dopo la scadenza, nessun ciclo di
riconciliazione
Segui le istruzioni da enterprisedb.com/docs
Sviluppatore Go per Kubernetes (Prato/remoto)
SRE per Kubernetes (Prato/remoto)
Stiamo
assumendo in
Italia
Info e domande: http://enterprisedb.com/careers
2021 Copyright © EnterpriseDB Corporation All Rights Reserved 74
The Cloud Native
Computing
Foundation’s flagship
conference gathers
leading technologists
from leading open
source and cloud native
communities to further
the education and
advancement of cloud
native computing.
2021 Copyright © EnterpriseDB Corporation All Rights Reserved

More Related Content

What's hot

Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...azuredayit
 
SQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWSSQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWSGianluca Hotz
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1MongoDB
 
SQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseSQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseGianluca Hotz
 
SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Gianluca Hotz
 

What's hot (13)

Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
 
SQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWSSQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWS
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1
 
PoC IoT in 1 ora
PoC IoT in 1 oraPoC IoT in 1 ora
PoC IoT in 1 ora
 
HP software defined storage
HP software defined storageHP software defined storage
HP software defined storage
 
SQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseSQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybase
 
SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
 
SQL Server in AWS
SQL Server in AWSSQL Server in AWS
SQL Server in AWS
 
Domino Backup, Restore E Disaster Recovery
Domino Backup, Restore E Disaster RecoveryDomino Backup, Restore E Disaster Recovery
Domino Backup, Restore E Disaster Recovery
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
 
TOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in DominoTOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in Domino
 

Similar to Cloud Native PostgreSQL - Italiano

Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLEDB
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetesdotnetcode
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSNucleode Srl
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetesblexin
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxGiuliano Latini
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
Azure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkAzure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkNicolò Carandini
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...azuredayit
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Romualdo Gobbo
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018Yefry Figueroa
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesGiulio Roggero
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesSpeck&Tech
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss CloudJBug Italy
 

Similar to Cloud Native PostgreSQL - Italiano (20)

Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACS
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
 
Containerized Liferay
Containerized LiferayContainerized Liferay
Containerized Liferay
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Azure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkAzure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET Framework
 
Google File System - GFS
Google File System - GFSGoogle File System - GFS
Google File System - GFS
 
The Google File System
The Google File SystemThe Google File System
The Google File System
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web Services
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 

More from EDB

Cloud Migration Paths: Kubernetes, IaaS, or DBaaS
Cloud Migration Paths: Kubernetes, IaaS, or DBaaSCloud Migration Paths: Kubernetes, IaaS, or DBaaS
Cloud Migration Paths: Kubernetes, IaaS, or DBaaSEDB
 
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr Unternehmen
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr UnternehmenDie 10 besten PostgreSQL-Replikationsstrategien für Ihr Unternehmen
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr UnternehmenEDB
 
Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube EDB
 
EFM Office Hours - APJ - July 29, 2021
EFM Office Hours - APJ - July 29, 2021EFM Office Hours - APJ - July 29, 2021
EFM Office Hours - APJ - July 29, 2021EDB
 
Las Variaciones de la Replicación de PostgreSQL
Las Variaciones de la Replicación de PostgreSQLLas Variaciones de la Replicación de PostgreSQL
Las Variaciones de la Replicación de PostgreSQLEDB
 
NoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLNoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLEDB
 
Is There Anything PgBouncer Can’t Do?
Is There Anything PgBouncer Can’t Do?Is There Anything PgBouncer Can’t Do?
Is There Anything PgBouncer Can’t Do?EDB
 
Data Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLData Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLEDB
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresEDB
 
A Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINA Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINEDB
 
IOT with PostgreSQL
IOT with PostgreSQLIOT with PostgreSQL
IOT with PostgreSQLEDB
 
A Journey from Oracle to PostgreSQL
A Journey from Oracle to PostgreSQLA Journey from Oracle to PostgreSQL
A Journey from Oracle to PostgreSQLEDB
 
Psql is awesome!
Psql is awesome!Psql is awesome!
Psql is awesome!EDB
 
EDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesEDB
 
New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13EDB
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLEDB
 
Cloud Native PostgreSQL - APJ
Cloud Native PostgreSQL - APJCloud Native PostgreSQL - APJ
Cloud Native PostgreSQL - APJEDB
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLEDB
 
EDB Postgres & Tools in a Smart City Project
EDB Postgres & Tools in a Smart City ProjectEDB Postgres & Tools in a Smart City Project
EDB Postgres & Tools in a Smart City ProjectEDB
 

More from EDB (20)

Cloud Migration Paths: Kubernetes, IaaS, or DBaaS
Cloud Migration Paths: Kubernetes, IaaS, or DBaaSCloud Migration Paths: Kubernetes, IaaS, or DBaaS
Cloud Migration Paths: Kubernetes, IaaS, or DBaaS
 
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr Unternehmen
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr UnternehmenDie 10 besten PostgreSQL-Replikationsstrategien für Ihr Unternehmen
Die 10 besten PostgreSQL-Replikationsstrategien für Ihr Unternehmen
 
Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube
 
EFM Office Hours - APJ - July 29, 2021
EFM Office Hours - APJ - July 29, 2021EFM Office Hours - APJ - July 29, 2021
EFM Office Hours - APJ - July 29, 2021
 
Las Variaciones de la Replicación de PostgreSQL
Las Variaciones de la Replicación de PostgreSQLLas Variaciones de la Replicación de PostgreSQL
Las Variaciones de la Replicación de PostgreSQL
 
NoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLNoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQL
 
Is There Anything PgBouncer Can’t Do?
Is There Anything PgBouncer Can’t Do?Is There Anything PgBouncer Can’t Do?
Is There Anything PgBouncer Can’t Do?
 
Data Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLData Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQL
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
A Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINA Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAIN
 
IOT with PostgreSQL
IOT with PostgreSQLIOT with PostgreSQL
IOT with PostgreSQL
 
A Journey from Oracle to PostgreSQL
A Journey from Oracle to PostgreSQLA Journey from Oracle to PostgreSQL
A Journey from Oracle to PostgreSQL
 
Psql is awesome!
Psql is awesome!Psql is awesome!
Psql is awesome!
 
EDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJ
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos données
 
New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13New enhancements for security and usability in EDB 13
New enhancements for security and usability in EDB 13
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQL
 
Cloud Native PostgreSQL - APJ
Cloud Native PostgreSQL - APJCloud Native PostgreSQL - APJ
Cloud Native PostgreSQL - APJ
 
Best Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQLBest Practices in Security with PostgreSQL
Best Practices in Security with PostgreSQL
 
EDB Postgres & Tools in a Smart City Project
EDB Postgres & Tools in a Smart City ProjectEDB Postgres & Tools in a Smart City Project
EDB Postgres & Tools in a Smart City Project
 

Recently uploaded

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 

Recently uploaded (9)

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 

Cloud Native PostgreSQL - Italiano

  • 1. Dove ti trovi nel processo di trasformazione verso Cloud Native con Kubernetes?
  • 2. Come ti “senti” ad usare Kubernetes anche per gestire i tuoi database PostgreSQL?
  • 3. Cloud Native PostgreSQL in Italiano Gabriele Bartolini, Leonardo Cecchi 15 Aprile 2021 – Versione 1.2.1
  • 4. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Gabriele e Leonardo Leonardo • Luogo: Prato • Utente di PostgreSQL dal ~1998 • 2ndQuadrant, dal 2015 al 2020 • Sviluppatore PostgreSQL • Sviluppatore di Barman • Lead Developer di Cloud Native PostgreSQL • Adesso in EDB • Architect • Lead Developer di Cloud Native PostgreSQL 4 Gabriele • Luogo: Prato • Utente PostgreSQL dal ~2000 • Membro della Comunità dal 2006 • Cofondatore di PostgreSQL Europe e ITPUG • 2ndQuadrant, dal 2008 al 2020 • Co-fondatore • Head of Global Support • Leader Cloud Native • Fondatore di Barman • Adesso in EDB • Vice President of Cloud Native Postgres
  • 5. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved La più grande azienda dedicata a PostgreSQL 5 EDB acquisisce 2ndQuadrant a Settembre 2020 ● Più clienti: di ogni altra azienda dedicata a PostgreSQL ● Più esperti: leading contributor di PostgreSQL ● Più innovazione: posizionare per guidare PostgreSQL a livello enterprise e cloud ibrido
  • 6. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved EDB e Kubernetes 6 KCSP Kubernetes Certified Service Provider Silver Member CNCF e Linux Foundation Operatori certificati per RedHat OpenShift La prima azienda su PostgreSQL a diventare KCSP
  • 7. Sviluppatore Go per Kubernetes (Prato/remoto) SRE per Kubernetes (Prato/remoto) Stiamo assumendo in Italia Info e domande: http://enterprisedb.com/careers
  • 8. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Agenda • DevOps e Cloud Native • PostgreSQL e Kubernetes • Introduzione a Cloud Native PostgreSQL • Demo in diretta • Kubernetes, Storage e PostgreSQL • Conclusioni
  • 10. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Container: un cambio epocale ... 10 ‘90s > ~2000 > ~2015 > Server fisici Macchine virtuali Container applicativi Hardware Operating Systems App App App Hardware OS Kernel Hypervisor Virtual machine App App Libraries OS Kernel Virtual machine App App Libraries OS Kernel Container App Libraries Container App Libraries Hardware OS Kernel Container Runtime
  • 11. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved … richiede un cambio di mentalità 11 Scorciatoie (Quello che vediamo nel modo di pensare corrente) Cambio di mentalità Mentalità “Container” Azioni Risultati Container App Libraries Container App Libraries Hardware OS Kernel Container Runtime Mentalità “Macchine virtuali” Azioni Risultati 1 VM = 1 istanza Postgres Hardware OS Kernel Hypervisor Virtual machine App App Libraries OS Kernel Virtual machine App App Libraries OS Kernel Mentalità “Server fisici” Azioni Risultati Multiple istanze Postgres su porte differenti Hardware Operating Systems App App App
  • 12. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Esempio di “scorciatoia” 12 Application container vs System container Mentalità “Container” Application container 1 container = 1 applicazione Mentalità “Macchine virtuali” System container 1 container = N applicazioni (container come macchina virtuale)
  • 13. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Cultura DevOps e mentalità “container” 13 DevOps • L’apparenza inganna • Non ci fermiamo al nome • Evoluzione di varie discipline, fra cui: • Lean • Agile • Leadership • Alcuni concetti chiave: • Version Control • Trunk-based development • Continuous Integration (CI) • Test automation • Automated deployment • Shift left on security • Continuous Delivery (CD) Container e Kubernetes • Mezzi per raggiungere degli obiettivi • Espressioni e risultati di azioni intraprese nella mentalità DevOps • Modi diversi di sviluppare software e distribuirlo L’importanza dei “perché” e degli obiettivi
  • 14. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved 5 ideali 1. Locality and simplicity 2. Focus, Flow, Joy 3. Improvement of daily work 4. Psychological safety 5. Customer focus The Unicorn Project (2019) 14
  • 15. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved merge on main branch dev branch container repository end user container image Automated testing and static code analysis Developer Reviewer Reviewer E2E testing using Kubernetes release policy Continuous Integration (CI) Version Control Trunk-based development Continuous Delivery (CD) Automated deployment Test automation Shift left on security
  • 16. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Immutable Application Container 16 Container image Pacchetto binario che in esecuzione diventa un container. Basati sul modello a micro servizi Application container Container pensato per una singola applicazione come entrypoint (processo con PID 1). Non mutabile Un container non viene modificato durante la sua esistenza. No “yum update” o “apt upgrade”. Come aggiornare le applicazioni? Deployment di una nuova immagine del container.
  • 17. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Il significato di Cloud Native 17 Cultura DevOps e la Persona Immutable Application Container Orchestrazione con Kubernetes Le tre colonne portanti secondo la nostra interpretazione e esperienza
  • 18. “ Principi, modelli e strumenti per automatizzare la gestione di micro servizi basati su container in larga scala Ibryam e Huß in “Kubernetes Patterns” da O’Reilly
  • 19. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Come diventare Cloud Native 19 Non basta usare Kubernetes Aggiungere competenze verticali su Kubernetes, con anche certificazioni CNCF (CKA, CKS e CKAD) Non basta usare container Produrre Immutable Application Container Contesto organizzativo Pensare “Cloud Native” in tutta la filiera produttiva, dallo sviluppo del software fino alla distribuzione Alcuni consigli e rischi da evitare
  • 20. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Kubernetes (k8s) 20 La versione 1.0 è del luglio 2015 ● Parola di origine greca che significa timoniere ● Sistema di orchestrazione di container ● Automatizza il deployment, l’amministrazione e la scalabilità di applicazioni Cloud Native ● Scritto in Go ● Open Source (Apache Licence 2.0) ● Il ruolo di Google e del progetto Borg ● Il ruolo di Cloud Native Computing Foundation (CNCF) ● Esistono distribuzioni di Kubernetes supportate da aziende, come: ○ OpenShift (RedHat), Rancher (Rancher Labs/SUSE), Tanzu (VMWare)
  • 21. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Architettura di base di Kubernetes 21 Control Plane Node Node ...
  • 22. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Il concetto di stato in Kubernetes 22 Il ruolo del controller in Kubernetes ● Definizione dello stato desiderato di un oggetto e della infrastruttura come configurazione ● Cicli di riconciliazione, continui: ○ Lo stato corrente dell’infrastruttura è uguale a quello desiderato? ■ Se no, il controller reagisce per ripristinare lo stato desiderato ● Fondamenta del concetto di self-healing
  • 23. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved
  • 25. “ Posso usare PostgreSQL dentro Kubernetes? Sì … ma devi conoscere bene sia PostgreSQL che Kubernetes
  • 26. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Popolarità di PostgreSQL Sorgente: DB-Engines.com, 2021 Sorgente: Stack Overflow Developer Survey, 2020 PostgreSQL vince 26 2017 2018 2020 Database più amati Scommetti su PostgreSQL Database più popolari
  • 27. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved “Postgres, perdonami” … (decenni di evoluzione) 27 Linux : Sistema Operativo = Postgres : Database ● Replica nativa in streaming, sia fisica che logica, asincrona e sincrona, in cascata ● Backup continuo online e Point In Time Recovery ● Partizionamento dichiarativo ● Estensibilità ed estensioni (e.g. PostGIS) ● Query parallele ● Supporto a JSON ● Indici funzionali e “covering index” ● INSERT .. ON CONFLICT DO UPDATE ● Supporto TLS, compresa autenticazione con certificati x509 ● Standard SQL (2016) ● DDL transazionale ● Ricerca full text nativa ● Tablespace ● ...
  • 28. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Un cenno all’architettura di PostgreSQL 28 Primario e replica nativa fisica in streaming ● PostgreSQL supporta nativamente l’architettura primario/standby (opzionali, multipli) ○ Evoluzione di Crash Recovery e Point-In-Time Recovery ○ Introdotta in PostgreSQL 8.2 con WAL shipping e Warm Standby ○ Migliorata in PostgreSQL 9.0 con WAL streaming e Hot Standby (replica in sola lettura) ● Ulteriori migliorie: ○ Replica sincrona ○ Replica in cascata ○ Replica logica ● Robustezza e affidabilità, con ottimi risultati in termini di RPO e RTO
  • 29. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Imperativo vs Dichiarativo 29 Dichiarativo C’è un cluster PostgreSQL 13 con 2 repliche Imperativo • Crea una istanza PostgreSQL 13 • Configurala per la replica • Clona una seconda istanza • Impostala come replica • Clona una terza istanza • Impostala come replica Dichiarativo in Kubernetes C’è un cluster PostgreSQL 13 con 2 repliche ... in ogni istante
  • 30. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved I due approcci in Kubernetes Operatore (con replica nativa) • Pattern che estende il controller di Kubernetes, definendo il modo di lavorare di un’applicazione complessa • PostgreSQL è un’applicazione complessa • Deployment e configurazione • Rilevamento di fallimento e failover • Aggiornamenti e switchover • Backup e Recovery • Monitoraggio • … • Sfrutta le potenzialità native di Kubernetes: • Self-healing, alta disponibilità (HA), scalabilità, controllo delle risorse e dell’accesso, … • Dichiarativo e automatizzato 30 Container (senza replica nativa) • Pod con PostgreSQL in esecuzione • Nessuna replica nativa • Volume collegato all’istanza • Spesso in rete • Replica/backup a livello di file system • Kubernetes si preoccupa di: • far ripartire il Pod in caso di problema • eventualmente spostarlo su un altro nodo • Limiti: • Storage è il Single Point of Failure (SPoF) • Possibile elevato RTO • Possibile elevato RPO • Dipende da strategie di backup di Postgres
  • 31. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Stato desiderato Stato corrente RW RW
  • 32. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Nasce Cloud Native PostgreSQL
  • 34. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Operatore scritto interamente in Go, come Kubernetes Progettato per Kubernetes 34 ● Integrato con Kubernetes API server ○ Non richiede alcun tool esterno per la gestione di HA ■ i.e. Repmgr, Patroni, Stolon ● Immutable Application Container ○ Soltanto PostgreSQL è in esecuzione ○ Molto leggeri ● Configurazione dichiarativa ○ Basato su “kubectl” - lo strumento da linea di comando ufficiale di Kubernetes ○ Manifesto di deployment in YAML ○ Infrastructure as Code (IaC)
  • 35. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Immagini di container 35 Basate su RedHat UBI 8 ● Ospitate su Quay.io ● Immagine dell’operatore ○ distribuita con licenza “EDB Limited Use” ● Immagini degli operandi (applicazione PostgreSQL) ○ PostgreSQL: ■ The Postgres License (PostgreSQL) ■ GNU GPL 3 (Barman Cloud) ○ EDB Postgres Advanced Server: ■ EDB Limited Use License
  • 36. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Ambienti supportati 36 Obiettivo: far girare Postgres ovunque Kubernetes giri ● Self-managed e cloud privati: ○ Kubernetes 1.16+ ○ OpenShift 4.5+ ● Gestiti dal provider e cloud pubblici: ○ AKS (Azure) ○ EKS (Amazon - Q2/2021) ○ GKE (Google - Q2/2021)
  • 38. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Estremo 1: Nodo condiviso con PostgreSQL 38 Control Plane Node Node Node
  • 39. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Estremo 2: Nodo dedicato a PostgreSQL 39 Control Plane K8s Node = PostgreSQL node K8s Node = PostgreSQL node K8s Node = PostgreSQL node
  • 40. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Conoscere Kubernetes 40 “Solo quando sarai stanco di ripetere il messaggio, le persone cominceranno a sentirlo” - A. Grove ● Vi sono infinite possibilità e combinazioni fra questi due estremi ● Sono tutte giuste e tutte sbagliate ○ Misurare sempre: non ci scordiamo che veniamo dalla terra di Galilei! ● PostgreSQL necessita SEMPRE che il sistema sottostante sia configurato in modo ottimale ○ Macchine fisiche ○ Macchine virtuali ○ Container con Kubernetes ● Lo storage è critico ● Se vogliamo usare PostgreSQL in un contesto Cloud Native: ○ Dobbiamo sapere tutto ciò che era necessario in VM e macchine fisiche ○ Dobbiamo aggiungere conoscenze su Kubernetes
  • 41. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Applicazioni esterne a Kubernetes 41 • Applicazioni legacy • Applicazioni non ancora in formato container • Applicazioni su VM • PostgreSQL esposto fuori da K8s • Ingress • TLS Approccio ibrido
  • 42. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Applicazioni e database in Kubernetes Vero approccio Cloud Native 42 • Applicazioni come deployment: • Rolling upgrade • ReplicaSet per scalabilità e HA • Immagini di applicazioni custom • Go, Django, Java, Python, C, C++, … • Database con Cloud Native PostgreSQL: • Incorpora la logica primario/standby • Servizio per operazioni RW e RO • Rolling upgrade, scalabilità, HA, … • “Cluster” CRD
  • 43. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Architettura del cluster PostgreSQL Con Cloud Native PostgreSQL 43 ● Un PostgreSQL primario ● Zero o più server hot standby: ○ Replica nativa fisica di PostgreSQL in streaming ■ Async (default) e Sync (basato su quorum) ○ Required for HA ○ Supporto trasparente per pg_rewind ● Fornisce 3 servizi Kubernetes alle applicazioni: ○ suffisso -rw (carichi lettura-scrittura) ○ suffisso -ro (carichi solo lettura) ○ suffisso -r (carichi lettura)
  • 44. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Servizio “-rw” (lettura e scrittura) Kubernetes service for the PostgreSQL Primary App App App PostgreSQL Primary PostgreSQL Standby PostgreSQL Standby
  • 45. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Servizio “-ro” (solo lettura) Kubernetes service for the PostgreSQL Read-Only operations App App App PostgreSQL Primary PostgreSQL Standby PostgreSQL Standby Random
  • 47. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Gestione del cluster PostgreSQL 47 ● Self-healing ○ Sonde di liveness e readiness ○ Failover del server primario ○ Creazione automatica di una replica ● Switchover pianificato del server primario ○ Promozione di un server di replica scelto dall’utente ● Gestione dei “rolling update” ○ Applicazione degli aggiornamenti con zero-downtime ● Gestione scalabilità verticale
  • 48. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Gestione dello Storage 48 ● Gestione dei Persistent Volume Claims (PVC) ○ Generazione automatica ○ Supporto per i template dei PVC ○ Riuso dello storage per i Pod nello stesso cluster ● Storage class ● Supporto per diversi tipi di storage ○ Storage locale ○ Storage di rete
  • 49. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Gestione degli aggiornamenti 49 ● Aggiornamento di un deployment senza downtime: ○ Update incrementale delle istanze nei Pod con le nuove immagini ■ Prima vengono aggiornati gli standby ■ Poi viene fatto uno switchover e quindi aggiornato il primario (che segue il nuovo) ● supervised / unsupervised ● Quando vengono lanciati: ○ In caso di aggiornamento dell’operatore ○ In caso di un aggiornamento di sicurezza dell’immagine UBI ○ In caso di aggiornamento di minor version di Postgres ○ In caso di cambio nella configurazione che richieda un restart di Postgres ● Una delle ragioni per cui non abbiamo usato ReplicaSets o Statefulsets
  • 50. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Sicurezza 50 ● Modello 4C ○ Cloud, Cluster, Container, Code ● Pod Security Policy e Security Context ○ Non è richiesto l’accesso privilegiato (root) per i containers ○ Non è richiesto l’accesso privilegiato (root) per l’accesso ai volumi ● Connessioni cifrate con uso di TLS ● Creazione dei secret per l’accesso a PostgreSQL ● Analisi statica del codice ○ Linter e Coverity Scan ● Analisi statica delle immagini ○ Dockle e Clair
  • 51. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Backup fisico continuo 51 ● Programmato e on-demand ● Supporto per gli object storage (compatibili con l’API di S3) ○ Cloud pubblici ○ Cloud privati (ad esempio usando MinIO) ● Uso della tecnologia Barman Cloud ○ barman-cloud-wal-archive ○ barman-cloud-backup
  • 52. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Ripristino dati 52 ● Permette di creare un nuovo Cluster a partire da un backup ● Recuperando l’area dati ○ È possibile affidarsi al Point-In-Time recovery se si desidera lavorare su una porzione temporale dei dati. ● Download and replay degli files WAL precedentemente archiviati ● Uso della tecnologia Barman Cloud ○ barman-cloud-restore ○ barman-cloud-wal-restore
  • 53. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Livelli di funzionalità (secondo RedHat / Operator SDK) 53 CNP è compliant Level III (Level IV/V nel Q2 2021) Defined by Operator SDK (RedHat) - source sdk.operatorframework.io/docs/
  • 54. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Custom Resource Definition (CRD) 54 ● Risorsa di tipo “Cluster” ○ L’operatore implementa un controller di Kubernetes ○ È responsabile per la creazione e manutenzione del cluster PostgreSQL ● parametro “instances” ○ numero di istanze PostgreSQL all’interno di un cluster ○ repliche hot standby = instances - 1 ■ Supporta sia la replica sincrona che asincrona, per ottenere RPO=0
  • 55. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved 55
  • 56. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved 56
  • 58. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved “Convention over configuration” 58 apiVersion: postgresql.k8s.enterprisedb.io/v1 kind: Cluster metadata: name: myapp-db spec: instances: 3 imageName: quay.io/enterprisedb/postgresql:13.2 storage: size: 10Gi
  • 59. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Deployment dichiarativo 59 # Install the operator in the cluster kubectl apply -f <OPERATOR_MANIFEST_URL> # Deploy the cluster (declarative) kubectl apply -f myapp-cluster.yaml
  • 60. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Configurazione di PostgreSQL 60 apiVersion: postgresql.k8s.enterprisedb.io/v1 kind: Cluster metadata: name: cluster-example spec: instances: 3 postgresql: parameters: work_mem: "8MB" # … # ...
  • 61. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Plugin di kubectl 61 kubectl cnp status cluster-example Cluster in healthy state Name: cluster-example Namespace: default PostgreSQL Image: quay.io/enterprisedb/postgresql:13 Primary instance: cluster-example-1 Instances: 3 Ready instances: 3 Instances status Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart -------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- cluster-example-1 0/6000060 6927251808674721812 ✓ ✗ ✗ ✗ cluster-example-2 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗ cluster-example-3 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗
  • 62. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Replica sincrona 62 apiVersion: postgresql.k8s.enterprisedb.io/v1 kind: Cluster metadata: name: cluster-example spec: instances: 3 minSyncReplicas: 1 maxSyncReplicas: 2 storage: size: 1Gi
  • 64. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Storage e database Postgres 64 Aspettative e requisiti per la componente più critica ● Disponibilità: storicamente associata al sistema operativo ● Scalabilità: storicamente affidata ai tablespace oppure a FS resizing (e.g. LVM) ● In PostgreSQL spesso ci siamo concentrati su: ○ Prestazioni ○ Consistenza ○ Durabilità
  • 65. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Architetture di storage (semplificate) in K8s 65 Storage locale (nodo) • Accesso diretto a storage del sistema operativo • Locale al nodo K8s del Pod • Quello che le persone di database vogliono • Anti-pattern in Kubernetes • Shared nothing architecture • K8s sta cambiando: • “local” persistent volumes (1.14+) • OpenEBS Local PV, topoLVM, … • Pro: • Prestazioni • Consistenza • Contro: • Scalabilità • Disponibilità ** • K8s e l’operatore entrano in gioco Storage di rete • Accesso tramite rete • Spesso condiviso da più nodi • Pattern comune in Kubernetes • Opzioni su posizione dello storage: • Fuori K8s • Dentro K8s • Opzioni di replica dati: • Livello di file (comune in K8s) • Livello applicativo (Postgres) • Pro: • Scalabilità • Disponibilità • Contro: • Banda di trasferimento dati • Latenza
  • 66. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved La nostra preferita su Kubernetes Storage locale con replica dati applicativa (Postgres) 66
  • 67. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Architettura Shared-Nothing 67 La preferita da chi ama PostgreSQL ● IMPORTANTE: è un caso limite, ma possibile soprattutto per VLDB e database critici ● Si affida a storage dedicato al nodo Kubernetes ○ Dischi locali, DAS dedicato o SAN dedicata ● L’unica condivisione è rappresentata dalla rete ● La più robusta e affidabile per un cluster Postgres ● Le istanza Postgres sono sparse su nodi Kubernetes multipli (Node Affinity) ○ Anche in differenti availability zone della stessa regione ● Il Pod usa storage locale dal nodo Kubernetes su cui gira ● Occorre considerare la latenza con le applicazioni
  • 68. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Benchmark, benchmark, benchmark ... 68 Galileo!!! ● Misurate sempre il vostro storage ○ fio ● In particolare letture sequenziali e scritture sequenziali ● Se non lo potete fare voi, assicuratevi che il vostro fornitore di storage lo faccia per voi ● Misurate sempre il vostro database ○ pgbench ● Conoscete le performance massimali del vostro sistema ○ Se non volete variabilità nei risultati, non usate storage condiviso ● La scelta è unicamente vostra: ○ Estremo 1: storage condiviso di rete ○ Estremo 2: storage dedicate locale con SAN
  • 69. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved 69
  • 71. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Cosa abbiamo in programma per CNP 71 Roadmap ● Raggiungere il livello 5 di Operator Capability Level ○ Migliorare l’exporter nativo per Prometheus ○ Log direttamente in output JSON, con supporto per audit ● Bootstrap di un cluster da pg_basebackup ○ Facilitare migrazioni dentro Kubernetes ● Modalità replica ○ Unita a boostrap da pg_basebackup o da backup abilita il “replica cluster” ■ Cross Kubernetes cluster replication ● Major upgrade di Postgres ○ offline (pg_dump) ○ online (replica logica, 0 cutover) ● Supporto per pgBouncer ● Supporto per Barman ● Supporto per BDR ● Kubernetes federation ○ Gestione di cluster Postgres su più cluster Kubernetes
  • 72. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved Prova subito Cloud Native PostgreSQL! 72 Operatore con EDB Postgres Advanced • Chiave di licenza trial necessaria • Scadenza = 60 giorni dalla richiesta • Dopo la scadenza, nessun ciclo di riconciliazione Operatore con PostgreSQL • Non è necessario una licenza trial • Viene creata una licenza implicita per ogni cluster PostgreSQL • Ideale per utilizzo in pipeline CI/CD • Durata di default 30 giorni • Dopo la scadenza, nessun ciclo di riconciliazione Segui le istruzioni da enterprisedb.com/docs
  • 73. Sviluppatore Go per Kubernetes (Prato/remoto) SRE per Kubernetes (Prato/remoto) Stiamo assumendo in Italia Info e domande: http://enterprisedb.com/careers
  • 74. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved 74 The Cloud Native Computing Foundation’s flagship conference gathers leading technologists from leading open source and cloud native communities to further the education and advancement of cloud native computing.
  • 75. 2021 Copyright © EnterpriseDB Corporation All Rights Reserved