What does it mean?
In Computer Science, the CAP theorem states that if you have distributed data (i.e. constituted of multiple nodes distributed over a network), only a maximum of two of the following three conditions can ever be satisfied:
- Consistency: Every request is guaranteed to return the most recent version of the data
- Availability: Every request returns a non-error response (that is, the requested data, even if that data may not be consistent across all nodes)
- Partition Tolerance: The system will not be affected by network partition (i.e. a disruption of communication between several nodes of the distributed data)
A more pragmatic way of looking at the CAP Theorem is to recognise and make design decisions based on the fact that since network partitions are unavoidable, delivering digital scale experiences for customers leads to making a decision between either consistency of data (all nodes agree on the data) or availability of data (all nodes have data available to work with, even if the data versions may be inconsistent or eventually consistent) being guaranteed.
Why do we believe it’s important?
The CAP theorem is a key design and technology consideration, fundamentally affecting customer experiences such as speed, reliability and integrity of digital apps and service.
We find a critical success factor in ensuring digital experience at scale requires a conscious decision of the “C” and “A” trade-off.
How do we put into practice?
Being fully aware that a choice must be made between availability and consistency, we make the conscious choice across the microservices landscape, in the context of the Jobs to Be Done for both customers and business operations:
- We tend to choose Availability over Consistency for customer-facing services where transactions can be taken (e.g. place an order including payment details) but their processing can be done at a second stage (e.g. execute on the financial transaction; go back to the customer if an issue)
- We tend to choose Consistency over Availability when an “at a moment in time” consistent view of data is needed (for example, make a payment or check balance)
- For example, while designing and developing a transformational retail solution for a Global Entertainment company, we chose Availability over Consistency for new customer onboarding and Consistency over Availability for services related to customer digital wallet, ensuring the highest possible customer and staff experience matched with operational integrity based on the specific Jobs to Be Done