Created
August 10, 2016 15:28
-
-
Save tmountain/78ba23d0c7878a9086ab0b9e9e83f057 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
A few other small pieces of advice that I'll be applying to any project I ever start from scratch again. | |
1) Think about how the service will scale from day-1, and don't box yourself in with any vertical architectural decisions (think about keys and things like that early). | |
2) Design your service so that any node can fail without consequence to the overall operation of the system. | |
3) Host it somewhere sane ;-). | |
4) Leverage as much existing technology as humanly possible (orchestration, monitoring, deployment, etc... are all "solved" problems). | |
5) Think about reporting from the beginning. If there are reports in you app, design them to scale from the beginning. Have a single pipeline from which rendering and exports happen, and avoid ad-hoc reporting at all costs. | |
6) Don't reinvent authentication... | |
7) Think about localization from day-1 (i.e., use placeholders). | |
8) Put serious thought into how your caching will work and try to build it upon solid architectural concepts (layers, easy expiration, etc). | |
9) Use whatever logger comes standard with your language (don't re-invent logging). | |
10) All this considered, don't waste too much time planning for the future because you'll likely rewrite everything at least once. | |
Also, if you use postgres, I'd start off with this from day-1. | |
http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram | |
Lastly... why wouldn't you use Postgres?! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment