You might have noticed your favorite site down last week – Netflix, Instagram, Pinterest, Heroku, to name a few. Underlying reason was a storm in Virginia knocking down power in AWS datacenters, thereby bringing down their region – US-East-1 (which is only one of the 7 regions(8 if you include GovCloud) that AWS currently operates in). This resulted in interesting headlines, one claiming that AWS outage brings internet down:). Many a traditional pundits used this opportunity to claim how unreliable cloud is, and more so cloud vendors marketing their various disaster recovery/ high availability solutions.
This also reminds us that cloud is not a panacea, but only provides various alternatives/ principles when correctly used, might provide a panacea. This post lists some basic tenets while architecting solutions on/ using cloud. These tenets essentially exemplify ‘designing for failure’.
1) Thou shall load balance across more than one region
2) Thou shall load balance across more than one zone in a region
3) Thou shall backup your data periodically in more than one region
4) Thou shall plan to use services from more than one region
5) Thou shall always monitor your entities
6) Thou shall have your disaster recovery plans ready
7) Thou shall own your SLA, not the cloud provider
8) Thou shall not build a private cloud in order to work around above reasons
9) Thou shall not rely on only one provider
10) Thou shall expect that Murphy’s law overrides all of the above.
If you want a good reading on architecture patterns for high availability on cloud, please check this out.