App Cloud Native?
E i dati dove li mettiamo?
Azure offre tantissimi servizi per ospitare la applicazioni più disparate, dai monoliti (su VMs), ai micro servizi (grazie al servizio Kubernetes fully-managed - aka AKS) alle Azure Functions.
Tutto molto bello, ma migrare un'applicazione (dal lift-and-shift al refactoring) non è cosa banale. Tal volta si ha la necessità di tenere parte degli asset nei data center aziendali (il cosiddetto on-premise) e un'altra parte (magari più veloce da migrare) sul cloud.
E quindi i dati dove li scriviamo?
Sul cloud o sull'on-premise?
Ad ogni modo, la latenza sarà un problema.
Le performance saranno un problema!
E quindi?
La risposta è dentro Azure, con il suo servizio Azure Cache for Redis Enterprise, che permette di fare il deployment del nostro dataset geo-distribuito, con dati sempre aggiornati e consistenti, in cloud e on-premise.
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
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
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
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