Jump to: navigation, search

BasicDesignTenets

Revision as of 21:26, 18 July 2010 by RickClark (talk)

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 and use it everywhere you can.
  8. Test everything.
    • a) We require tests with submitted code. (We will help you if you need it)