distributed-systemcap-theorem

Using CAP Theorem in customer negotiations


Our company develops a software for electronic turnstiles. One of the highly stressed requirements from the customer was that turnstiles should work offline. For auditing purposes, a turnstile also should send each pass attempt to our main server. Virtually, my task is to make sure that two distributed tables, one on the turnstile machine, running Windows and SQLite, and the other on server, running Linux and Oracle, are always consistent w\r\t each other.

Turnstiles (the clients) communicate with the server via highly unreliable wireless network, using SOAP over HTTP.

In our next negotiation with the customer, we'll discuss what a turnstile should do when a network partition occurs. Since we clearly can't sacrifice Availability here, we're losing Consistency.

So, my question is: Is it a good strategy to use CAP theorem to convince our customer that it's OK that we won't guarantee Consistency when a network partition occurs? Is it good to say to them: You can't use a turnstile offline and audit pass attempt because... CAP theorem?


Solution

  • We were able to explain to our customer why they can't have both consistency and availability. Answering my own question: yes, you can mention CAP during negotiations, you just need to translate its' implication back to the language of customers' business domain.