BasicDesignTenets

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
 * 4) * a) If you can't do something asynchronously, see #2
 * 5) All required components must be horizontally scalable
 * 6) Always use shared nothing architecture (SN) or  sharding
 * 7) * a) If you can't Share nothing/shard, see #2
 * 8) Distribute everything
 * 9) * a) Especially logic. Move logic to where state naturally exists.
 * 10) Accept eventual consistency and use it where it is appropriate.
 * 11) Test everything.
 * 12) * a) We require tests with submitted code. (We will help you if you need it)