Difference between revisions of "BasicDesignTenets"
m (Text replace - "__NOTOC__" to "") |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | ||
== Basic Design Tenets == | == Basic Design Tenets == | ||
# [[Glossary|Scalability]] and [[Glossary|elasticity]] are our main goals | # [[Glossary|Scalability]] and [[Glossary|elasticity]] are our main goals | ||
Line 6: | Line 6: | ||
#* '''a)''' If you can't do something asynchronously, 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 | + | # Always use shared nothing architecture [http://en.wikipedia.org/wiki/Shared_nothing_architecture (SN)] or [[ http://en.wikipedia.org/wiki/Sharding| sharding]] |
#* '''a)''' If you can't Share nothing/shard, see #2 | #* '''a)''' If you can't Share nothing/shard, see #2 | ||
# Distribute everything | # Distribute everything | ||
#* '''a)''' Especially logic. Move logic to where state naturally exists. | #* '''a)''' Especially logic. Move logic to where state naturally exists. | ||
− | # Accept eventual consistency and use it | + | # Accept eventual consistency and use it where it is appropriate. |
+ | # Test everything. | ||
+ | #* '''a)''' We require tests with submitted code. (We will help you if you need it) |
Latest revision as of 23:29, 17 February 2013
Basic Design Tenets
- Scalability and elasticity are our main goals
- Any feature that limits our main goals must be optional
- Everything should be asynchronous
- a) If you can't do something asynchronously, see #2
- All required components must be horizontally scalable
- Always use shared nothing architecture (SN) or sharding
- 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 and use it where it is appropriate.
- Test everything.
- a) We require tests with submitted code. (We will help you if you need it)