SlideShare a Scribd company logo
1 of 33
Download to read offline
Our Sponsors
2023
App Cloud Native?
E i dati dove li mettiamo?
Luigi Fugaro
Agenda
WeBuild 2023 2023
App Cloud Native? E i dati dove li mettiamo?
Le Applicazioni Cloud Native secondo la CNCF
Da un ambiente On-Premise ad un ambiente Cloud
Latenza, sincronizzazione… tutto qui?
Scritture concorrenti, geo-distribuite!
Conflict-Free Replicated Data Types
Questions and Answers
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
https://github.com/cncf/foundation/blob/main/charter.md#1-mission-of-the-cloud-native-computing-foundation
Cloud native technologies empower organizations to build and run scalable
applications in modern, dynamic environments such as public, private, and
hybrid clouds. Containers, service meshes, microservices, immutable
infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient,
manageable, and observable. Combined with robust automation, they allow
engineers to make high-impact changes frequently and predictably with
minimal toil.
Da un ambiente On-Premise
ad un ambiente Cloud
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Cloud Native App
On-Premise On-Cloud
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Database
On-Premise On-Cloud
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Database
On-Premise On-Cloud
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
On-Premise On-Cloud
Database
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
On-Premise On-Cloud
Database
Latency
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Latency
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Latency
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Latency
Azure Cache for Redis Enterprise
Redis Enterprise for On-Premise
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Active-Active
Deployment
Synchronization
Azure Cache for Redis Enterprise
Redis Enterprise for On-Premise
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
CRDT
Conflict-Free Replicated Data Types
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Scritture Concorrenti
|C|I|A|O|_|M|A|M|M|A|!|_
aggiungi “_MAMMA”
alla posizione 4
|0|1|2|3|4|5|6|7|8|9|0|
|C|I|A|O|!|
|C|I|A|O|!|!|_
|0|1|2|3|4|5|
|0|1|2|3|4|
aggiungi “!”
alla posizione 5
aggiungi “!”
alla posizione 11
aggiungi “_MAMMA”
alla posizione 4
|C|I|A|O|_|M|A|M|M|A|!|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
|C|I|A|O|_|M|A|M|M|A|!|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
|C|I|A|O|_|M|A|M|M|A|!|_
aggiungi “_MAMMA”
alla posizione 4
|0|1|2|3|4|5|6|7|8|9|0|
|C|I|A|O|!|
|C|I|A|O|!|!|_
|0|1|2|3|4|5|
|0|1|2|3|4|
aggiungi “!”
alla posizione 5
aggiungi “!”
alla posizione 5
aggiungi “_MAMMA”
alla posizione 4
|C|I|A|O|_|!|M|A|M|M|A|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
|C|I|A|O|_|M|A|M|M|A|!|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
|C|I|A|O|_|M|A|M|M|A|!|_
aggiungi “_MAMMA”
alla posizione 4
|0|1|2|3|4|5|6|7|8|9|0|
|C|I|A|O|!|
|C|I|A|O|!|!|_
|0|1|2|3|4|5|
|0|1|2|3|4|
aggiungi “!”
alla posizione 5
aggiungi “!”
alla posizione 5
aggiungi “_MAMMA”
alla posizione 4
|C|I|A|O|_|!|M|A|M|M|A|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
|C|I|A|O|_|M|A|M|M|A|!|!|
|0|1|2|3|4|5|6|7|8|9|0|1|
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Algoritmi basati su CRDTs
● LWW - Last Write Wins
○ Ogni mutazione ha il proprio timestamp unico. La
mutazione con il timestamp più alto vince.
● PN-Counters - Positive Negative Counters
○ Somma algebrica degli incrementi, meno, la somma
algebrica dei decrementi.
● OR-Set - Observed Removed-Set
○ Se un elemento è aggiunto e rimosso, l’aggiunta vince
sulla cancellazione.
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Qualcuno ha notato qualcosa di ambiguo?
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Algoritmi basati su CRDTs
● LWW - Last Write Wins
○ Ogni mutazione ha il proprio timestamp unico. La
mutazione con il timestamp più alto vince.
● PN-Counters - Positive Negative Counters
○ Somma algebrica degli incrementi, meno, la somma
algebrica dei decrementi.
● OR-Set - Observed Removed-Set
○ Se un elemento è aggiunto e rimosso, l’aggiunta vince
sulla cancellazione.
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Esempio LWW
Codice Descrizione
1 Spesa
2 Posta
3 Tintoria
Codice Descrizione
1 Spesa
2 Posta
3 Tintoria
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Esempio LWW
Codice Descrizione
1 Spesa
2 Posta
3 Tintoria
Codice Descrizione
1 Spesa
2 Posta
3 Tintoria
Codice Descrizione
1 Tintoria
2 Spesa
3 Posta
Codice Descrizione
1 Spesa
2 Tintoria
3 Posta
Codice Descrizione
1 Tintoria
2 Spesa
3 Posta
Codice Descrizione
1 Tintoria
2 Spesa
3 Posta
LWW
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Sincronizziamo gli orologi
● Gli orologi non sono sincronizzati in un sistema distribuito
asincrono!
● Gli eventi devono essere ordinati per poter essere
processati in modo deterministico.
● Algoritmi di sincronizzazione del tempo:
○ Cristian’s algorithm
○ Berkeley’s algorithm
○ NTP algorithm
● Logical timestamp → Vector Clocks
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
Vector Clocks
R1
R2
R3
(0,0,0)
(0,0,0)
(0,0,0)
(1,0,0) (3,0,0)
(2,2,1) (2,3,1)
(0,0,2)
(4,3,1)
(5,3,3)
(5,3,1)
(2,0,0)
(0,0,1)
(0,1,1)
App Cloud Native? E i dati dove li mettiamo?
WeBuild 2023 2023
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Azure Cache for Redis Enterprise
permette di gestire un’architettura
Active-Active (multi-master)
scritture concorrenti con risoluzione
dei conflitti automatica.
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Strings
Bitmaps
Bit fields
Hashes
Lists
Sets
Sorted Sets
Geospatial
HyperLogLog
Streams
JSON
Search
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Availability: 99.999% (~26s)
gcp
on prem
azure
apps
apps
apps
apps
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Azure Cache for Redis
Enterprise
WeBuild 2023
App Cloud Native? E i dati dove li mettiamo?
2023
Grazie a tutti!
https://www.linkedin.com/in/luigifugaro/
luigi.fugaro@redis.com

More Related Content

Similar to Sharp Coding 2023 - Luigi Fugaro - ACRE.pdf

Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...
Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...
Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...Roberto Loro
 
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...Team per la Trasformazione Digitale
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieriVMUG IT
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazioneXPeppers
 
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on Azure
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on AzureAzure Saturday 2019 - Keep Calm and "Lift&Shift" on Azure
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on AzureDaniele Scrivano
 
"Project Management da mobile" di Luca Cipriani
"Project Management da mobile" di Luca Cipriani"Project Management da mobile" di Luca Cipriani
"Project Management da mobile" di Luca CiprianiToolbox Coworking
 
Microsoft Azure - Passaggio al Cloud
Microsoft Azure - Passaggio al CloudMicrosoft Azure - Passaggio al Cloud
Microsoft Azure - Passaggio al CloudRoberto Stefanetti
 
BigTec web-scale software defined Datacenter
BigTec web-scale software defined DatacenterBigTec web-scale software defined Datacenter
BigTec web-scale software defined DatacenterMauro Suardi
 
Smau Bologna 2015 - Eurocloud
Smau Bologna 2015 - EurocloudSmau Bologna 2015 - Eurocloud
Smau Bologna 2015 - EurocloudSMAU
 
Come il cloud ibrido supporta le strategie di innovazione delle aziende
Come il cloud ibrido supporta le strategie di innovazione delle aziendeCome il cloud ibrido supporta le strategie di innovazione delle aziende
Come il cloud ibrido supporta le strategie di innovazione delle aziendeSergio Patano
 
Plenaria di apertura: AWS in Italia
Plenaria di apertura: AWS in ItaliaPlenaria di apertura: AWS in Italia
Plenaria di apertura: AWS in ItaliaAmazon Web Services
 
Rivoluzione cloud. Come si costruisce valore tra le nuvole?
Rivoluzione cloud. Come si costruisce valore tra le nuvole?Rivoluzione cloud. Come si costruisce valore tra le nuvole?
Rivoluzione cloud. Come si costruisce valore tra le nuvole?Massimo Ficagna
 
Caratterizzazione dei sistemi cloud per la Pubblica Amministrazione
Caratterizzazione dei sistemi cloud per la Pubblica AmministrazioneCaratterizzazione dei sistemi cloud per la Pubblica Amministrazione
Caratterizzazione dei sistemi cloud per la Pubblica AmministrazioneAmmLibera AL
 
La nuova generazione dei gestionali cloud
La nuova generazione dei gestionali cloudLa nuova generazione dei gestionali cloud
La nuova generazione dei gestionali cloudRoberta Fiorucci
 
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - Clouditalia
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - ClouditaliaCloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - Clouditalia
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - ClouditaliaClouditalia Telecomunicazioni
 
Tintri Clouditalia - vmugit 2017 usercon
Tintri Clouditalia - vmugit 2017 userconTintri Clouditalia - vmugit 2017 usercon
Tintri Clouditalia - vmugit 2017 userconVMUG IT
 
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.Team Netuse srl
 

Similar to Sharp Coding 2023 - Luigi Fugaro - ACRE.pdf (20)

Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...
Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...
Zerouno Executive Dinner - Cloud: come realizzare la piena integrazione busin...
 
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...
Uno sguardo sul piano di abilitazione all’utilizzo delle tecnologie cloud, ne...
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri
 
What is cloud - presentazione open day 13 set 2014 | autore Prof. Lorenzo Zimolo
What is cloud - presentazione open day 13 set 2014 | autore Prof. Lorenzo ZimoloWhat is cloud - presentazione open day 13 set 2014 | autore Prof. Lorenzo Zimolo
What is cloud - presentazione open day 13 set 2014 | autore Prof. Lorenzo Zimolo
 
Cloud e innovazione
Cloud e innovazioneCloud e innovazione
Cloud e innovazione
 
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on Azure
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on AzureAzure Saturday 2019 - Keep Calm and "Lift&Shift" on Azure
Azure Saturday 2019 - Keep Calm and "Lift&Shift" on Azure
 
"Project Management da mobile" di Luca Cipriani
"Project Management da mobile" di Luca Cipriani"Project Management da mobile" di Luca Cipriani
"Project Management da mobile" di Luca Cipriani
 
Microsoft Azure - Passaggio al Cloud
Microsoft Azure - Passaggio al CloudMicrosoft Azure - Passaggio al Cloud
Microsoft Azure - Passaggio al Cloud
 
Cloud computing 101
Cloud computing 101Cloud computing 101
Cloud computing 101
 
BigTec web-scale software defined Datacenter
BigTec web-scale software defined DatacenterBigTec web-scale software defined Datacenter
BigTec web-scale software defined Datacenter
 
Smau Bologna 2015 - Eurocloud
Smau Bologna 2015 - EurocloudSmau Bologna 2015 - Eurocloud
Smau Bologna 2015 - Eurocloud
 
Come il cloud ibrido supporta le strategie di innovazione delle aziende
Come il cloud ibrido supporta le strategie di innovazione delle aziendeCome il cloud ibrido supporta le strategie di innovazione delle aziende
Come il cloud ibrido supporta le strategie di innovazione delle aziende
 
Plenaria di apertura: AWS in Italia
Plenaria di apertura: AWS in ItaliaPlenaria di apertura: AWS in Italia
Plenaria di apertura: AWS in Italia
 
Rivoluzione cloud. Come si costruisce valore tra le nuvole?
Rivoluzione cloud. Come si costruisce valore tra le nuvole?Rivoluzione cloud. Come si costruisce valore tra le nuvole?
Rivoluzione cloud. Come si costruisce valore tra le nuvole?
 
Caratterizzazione dei sistemi cloud per la Pubblica Amministrazione
Caratterizzazione dei sistemi cloud per la Pubblica AmministrazioneCaratterizzazione dei sistemi cloud per la Pubblica Amministrazione
Caratterizzazione dei sistemi cloud per la Pubblica Amministrazione
 
La nuova generazione dei gestionali cloud
La nuova generazione dei gestionali cloudLa nuova generazione dei gestionali cloud
La nuova generazione dei gestionali cloud
 
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - Clouditalia
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - ClouditaliaCloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - Clouditalia
Cloud in action "Un ambiente sostenibile" - Alessandro Anzilotti - Clouditalia
 
Tintri Clouditalia - vmugit 2017 usercon
Tintri Clouditalia - vmugit 2017 userconTintri Clouditalia - vmugit 2017 usercon
Tintri Clouditalia - vmugit 2017 usercon
 
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
 

More from Luigi Fugaro

Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...Luigi Fugaro
 
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AI
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AIRed Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AI
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AILuigi Fugaro
 
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdf
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdfUnleashing the Power of Vector Search in .NET - DotNETConf2024.pdf
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdfLuigi Fugaro
 
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdf
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdfUnleashing the Power of Vector Search in .NET - SharpCoding2024.pdf
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdfLuigi Fugaro
 
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23Luigi Fugaro
 
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!Codemotion Milan '22 - Real Time Data - No CRDTs, no party!
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!Luigi Fugaro
 
OpenSlava 2018 - Cloud Native Applications with OpenShift
OpenSlava 2018 - Cloud Native Applications with OpenShiftOpenSlava 2018 - Cloud Native Applications with OpenShift
OpenSlava 2018 - Cloud Native Applications with OpenShiftLuigi Fugaro
 
Redis - Non solo cache
Redis - Non solo cacheRedis - Non solo cache
Redis - Non solo cacheLuigi Fugaro
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017Luigi Fugaro
 
2.5tier Javaday (italian)
2.5tier Javaday (italian)2.5tier Javaday (italian)
2.5tier Javaday (italian)Luigi Fugaro
 

More from Luigi Fugaro (10)

Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
Ottimizzare le performance dell'API Server K8s come utilizzare cache e eventi...
 
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AI
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AIRed Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AI
Red Hat Summit Connect 2023 - Redis Enterprise, the engine of Generative AI
 
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdf
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdfUnleashing the Power of Vector Search in .NET - DotNETConf2024.pdf
Unleashing the Power of Vector Search in .NET - DotNETConf2024.pdf
 
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdf
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdfUnleashing the Power of Vector Search in .NET - SharpCoding2024.pdf
Unleashing the Power of Vector Search in .NET - SharpCoding2024.pdf
 
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23
Caching Patterns for lazy devs for lazy loading - Luigi Fugaro VDTJAN23
 
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!Codemotion Milan '22 - Real Time Data - No CRDTs, no party!
Codemotion Milan '22 - Real Time Data - No CRDTs, no party!
 
OpenSlava 2018 - Cloud Native Applications with OpenShift
OpenSlava 2018 - Cloud Native Applications with OpenShiftOpenSlava 2018 - Cloud Native Applications with OpenShift
OpenSlava 2018 - Cloud Native Applications with OpenShift
 
Redis - Non solo cache
Redis - Non solo cacheRedis - Non solo cache
Redis - Non solo cache
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017
 
2.5tier Javaday (italian)
2.5tier Javaday (italian)2.5tier Javaday (italian)
2.5tier Javaday (italian)
 

Sharp Coding 2023 - Luigi Fugaro - ACRE.pdf

  • 2. App Cloud Native? E i dati dove li mettiamo? Luigi Fugaro
  • 3. Agenda WeBuild 2023 2023 App Cloud Native? E i dati dove li mettiamo? Le Applicazioni Cloud Native secondo la CNCF Da un ambiente On-Premise ad un ambiente Cloud Latenza, sincronizzazione… tutto qui? Scritture concorrenti, geo-distribuite! Conflict-Free Replicated Data Types Questions and Answers
  • 4. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 https://github.com/cncf/foundation/blob/main/charter.md#1-mission-of-the-cloud-native-computing-foundation Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
  • 5. Da un ambiente On-Premise ad un ambiente Cloud WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023
  • 6. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Cloud Native App On-Premise On-Cloud
  • 7. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Database On-Premise On-Cloud
  • 8. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Database On-Premise On-Cloud
  • 9. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 On-Premise On-Cloud Database
  • 10. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 On-Premise On-Cloud Database Latency
  • 11. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Latency
  • 12. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Latency
  • 13. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023
  • 14. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Latency Azure Cache for Redis Enterprise Redis Enterprise for On-Premise
  • 15. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Active-Active Deployment Synchronization Azure Cache for Redis Enterprise Redis Enterprise for On-Premise
  • 16. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 CRDT Conflict-Free Replicated Data Types
  • 17. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Scritture Concorrenti
  • 18. |C|I|A|O|_|M|A|M|M|A|!|_ aggiungi “_MAMMA” alla posizione 4 |0|1|2|3|4|5|6|7|8|9|0| |C|I|A|O|!| |C|I|A|O|!|!|_ |0|1|2|3|4|5| |0|1|2|3|4| aggiungi “!” alla posizione 5 aggiungi “!” alla posizione 11 aggiungi “_MAMMA” alla posizione 4 |C|I|A|O|_|M|A|M|M|A|!|!| |0|1|2|3|4|5|6|7|8|9|0|1| |C|I|A|O|_|M|A|M|M|A|!|!| |0|1|2|3|4|5|6|7|8|9|0|1| App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 19. |C|I|A|O|_|M|A|M|M|A|!|_ aggiungi “_MAMMA” alla posizione 4 |0|1|2|3|4|5|6|7|8|9|0| |C|I|A|O|!| |C|I|A|O|!|!|_ |0|1|2|3|4|5| |0|1|2|3|4| aggiungi “!” alla posizione 5 aggiungi “!” alla posizione 5 aggiungi “_MAMMA” alla posizione 4 |C|I|A|O|_|!|M|A|M|M|A|!| |0|1|2|3|4|5|6|7|8|9|0|1| |C|I|A|O|_|M|A|M|M|A|!|!| |0|1|2|3|4|5|6|7|8|9|0|1| App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 20. |C|I|A|O|_|M|A|M|M|A|!|_ aggiungi “_MAMMA” alla posizione 4 |0|1|2|3|4|5|6|7|8|9|0| |C|I|A|O|!| |C|I|A|O|!|!|_ |0|1|2|3|4|5| |0|1|2|3|4| aggiungi “!” alla posizione 5 aggiungi “!” alla posizione 5 aggiungi “_MAMMA” alla posizione 4 |C|I|A|O|_|!|M|A|M|M|A|!| |0|1|2|3|4|5|6|7|8|9|0|1| |C|I|A|O|_|M|A|M|M|A|!|!| |0|1|2|3|4|5|6|7|8|9|0|1| App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 21. Algoritmi basati su CRDTs ● LWW - Last Write Wins ○ Ogni mutazione ha il proprio timestamp unico. La mutazione con il timestamp più alto vince. ● PN-Counters - Positive Negative Counters ○ Somma algebrica degli incrementi, meno, la somma algebrica dei decrementi. ● OR-Set - Observed Removed-Set ○ Se un elemento è aggiunto e rimosso, l’aggiunta vince sulla cancellazione. App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 22. Qualcuno ha notato qualcosa di ambiguo? App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 23. Algoritmi basati su CRDTs ● LWW - Last Write Wins ○ Ogni mutazione ha il proprio timestamp unico. La mutazione con il timestamp più alto vince. ● PN-Counters - Positive Negative Counters ○ Somma algebrica degli incrementi, meno, la somma algebrica dei decrementi. ● OR-Set - Observed Removed-Set ○ Se un elemento è aggiunto e rimosso, l’aggiunta vince sulla cancellazione. App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 24. Esempio LWW Codice Descrizione 1 Spesa 2 Posta 3 Tintoria Codice Descrizione 1 Spesa 2 Posta 3 Tintoria App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 25. Esempio LWW Codice Descrizione 1 Spesa 2 Posta 3 Tintoria Codice Descrizione 1 Spesa 2 Posta 3 Tintoria Codice Descrizione 1 Tintoria 2 Spesa 3 Posta Codice Descrizione 1 Spesa 2 Tintoria 3 Posta Codice Descrizione 1 Tintoria 2 Spesa 3 Posta Codice Descrizione 1 Tintoria 2 Spesa 3 Posta LWW App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 26. Sincronizziamo gli orologi ● Gli orologi non sono sincronizzati in un sistema distribuito asincrono! ● Gli eventi devono essere ordinati per poter essere processati in modo deterministico. ● Algoritmi di sincronizzazione del tempo: ○ Cristian’s algorithm ○ Berkeley’s algorithm ○ NTP algorithm ● Logical timestamp → Vector Clocks App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 27. Vector Clocks R1 R2 R3 (0,0,0) (0,0,0) (0,0,0) (1,0,0) (3,0,0) (2,2,1) (2,3,1) (0,0,2) (4,3,1) (5,3,3) (5,3,1) (2,0,0) (0,0,1) (0,1,1) App Cloud Native? E i dati dove li mettiamo? WeBuild 2023 2023
  • 28. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Azure Cache for Redis Enterprise permette di gestire un’architettura Active-Active (multi-master) scritture concorrenti con risoluzione dei conflitti automatica.
  • 29. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Strings Bitmaps Bit fields Hashes Lists Sets Sorted Sets Geospatial HyperLogLog Streams JSON Search
  • 30. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023
  • 31. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Availability: 99.999% (~26s) gcp on prem azure apps apps apps apps
  • 32. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Azure Cache for Redis Enterprise
  • 33. WeBuild 2023 App Cloud Native? E i dati dove li mettiamo? 2023 Grazie a tutti! https://www.linkedin.com/in/luigifugaro/ luigi.fugaro@redis.com