• As your app grows, it gets more complex. • As complexity grows, so do the number of dependencies. • As traffic grows, all of those problems end up getting worse.
allows you to keep your app performing well as your data grows. What do you index? Anything you query or sort on! If you query and sort on different columns in a query, they should be in a compound index! As your data grows, your queries need to get simpler!
wait for things that are slow! Set up a job queue and do hard things in the background! Use reporting as example - pre-generate reports instead of making users wait for them and generating them when they’re requested! Document stores like MongoDB are GREAT for reporting.
that are difficult to generate or things that aren’t time sensitive. See if you can get to one query per request! It’s hard, but that should be the goal.
the job. Is your data relational? Use a relational database! Want to do search? Don’t do it in your relational database! There are search engines for search! Take the time to explore your options - and seek out people who’ve done it before and ask them their opinion.
paranoid - if you use an API, what happens when it goes down? How will your app react? Test it and find out, and then protect yourself from it. Your customers don’t care if your app being down is your fault or not - they’ll blame you!
do when this breaks?” “what are some other ways to do this?” Think about how things will scale - but don’t get caught up future-proofing things. Your primary job is to get things done. Just keep an eye out for problem spots and fix them before they stop everything in its tracks.
data in the browser instead of on the server. Give your users the appearance of performance! Look at local storage for assets, and even the new built-in database options! Lots of fun stuff going on in browsers now!
containers in general - as a way to make virtualization more efficient. Worth keeping an eye on, but feels too early to jump on for mission-critical stuff where your data is important (great for app servers, bad for database servers).
lock-in and closed-source solutions! Build everything in your app as an interface or API so you can replace the underlying implementation when you need to. Default to open source, even if you start out with a SaaS platform!