Jump to: navigation, search

Difference between revisions of "BasicDesignTenets"

Line 4: Line 4:
 
# Any feature that limits our main goals must be optional
 
# Any feature that limits our main goals must be optional
 
# Everything should be asynchronous
 
# Everything should be asynchronous
## If you can't do something asynchronous, see #2
+
#* '''a)''' If you can't do something asynchronously, see #2
 
# All required components must be horizontally scalable
 
# All required components must be horizontally scalable
 
# Always use shared nothing architecture [[http://en.wikipedia.org/wiki/Shared_nothing_architecture  (SN)] or [[ http://en.wikipedia.org/wiki/Sharding| sharding]]
 
# Always use shared nothing architecture [[http://en.wikipedia.org/wiki/Shared_nothing_architecture  (SN)] or [[ http://en.wikipedia.org/wiki/Sharding| sharding]]
## If you can't Share nothing/shard, see #2
+
#* '''a)''' If you can't Share nothing/shard, see #2
 +
# Distribute everything
 +
#* '''a)''' Especially logic.  Move logic to where state naturally exists.
 +
# Accept eventual consistency

Revision as of 17:54, 5 July 2010

Basic Design Tenets

  1. Scalability and elasticity are our main goals
  2. Any feature that limits our main goals must be optional
  3. Everything should be asynchronous
    • a) If you can't do something asynchronously, see #2
  4. All required components must be horizontally scalable
  5. Always use shared nothing architecture [(SN) or sharding
    • a) If you can't Share nothing/shard, see #2
  6. Distribute everything
    • a) Especially logic. Move logic to where state naturally exists.
  7. Accept eventual consistency