Created by Christopher Reedijk (@creedijk) and Gary Stewart (@Gaz_GandA)
Dev Engineers, ING Netherlands
ING Nederland (@ingnl)
Short introduction
Christopher Reedijk | Gary Stewart |
|
|
challenge 1
challenge 2
today | tomorrow |
source: bradfrostweb.com |
challenge 3
Cache is bad, when used incorrectly
Need for locking (transaction) everywhere
Every domain for themselves
Improve availability
Aim to be scalable
Adopt new ways of thinking
fact 1
Proof
No outages in contrast to master-slave architecture
This does make C* chatty
Replication factor is configurable per keyspace
Increasing nodes does not mean higher availability
Increasing the replication factor does
fact 2
Proof
De-normalization is acceptable for solving reads
Large partitions will hurt!
Adding nodes will increase your throughput through sharding
fact 3
Focus on the data model and the flow of data is key
noSQL versus SQL
Consistency (all nodes see the same data at the same time)
Availability (a guarantee that every request receives a response about whether it was successful or failed)
Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)
C* v2.0 reduces the complexity by using lightweight transactions (paxos)
Availability is easier | challenge 1: availability & consistency
Performance is easier | challenge 2 easier scalable
Consistency is harder | challenge * availability & consistency, easier scalable, new way of thinking
question 1
Who wins? Neither side knows the other side!
Use QUORUM but risk availability
when there are issues with the WAN link
Arrange a third DC... €€€
Applications apply DC stickiness
whilst processing data which increases complexity
question 2
NTP must be set-up correctly
Know your flow of data
Model as idem-potent-ly as possible
question 3
Performance and availability are tuneable based on needs and costs
Consistency is solved by design and knowing the flow of data
Going from SQL to noSQL is a paradigm shift
Skills are not readily available
Some issues are better solved by relational databases
Thank you
...graceful bow