Skip to content

Instantly share code, notes, and snippets.

@tmountain
Created August 10, 2016 15:28
Show Gist options
  • Save tmountain/78ba23d0c7878a9086ab0b9e9e83f057 to your computer and use it in GitHub Desktop.
Save tmountain/78ba23d0c7878a9086ab0b9e9e83f057 to your computer and use it in GitHub Desktop.
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