This blog post is almost entirely a re-hash of http://highscalability.com/blog/2016/1/11/a-beginners-guide-...
The primary difference is that this post tries to be more generic, whereas the original is specific to AWS.
The original, for what it is worth, is far more detailed than this one.