1. 1

Howdy fellow crustaceans,

Most days I wear a security hat but previously I’ve worn Windows/Unix system administrator hats so I’m used to writing small programs with little outside exposure.

Lately though I’ve been asked to investigate issues where apps were overwhelmed with traffic and went unresponsive (my employer basically giving away money due to a human malware drove most of the traffic).

I’ve been looking for platform agnostic guidelines for designing inherently scalable apps, something touching on everything from the web front-end to the back-end database. Does anyone have recommendations?



  2. 1

    Compartmentalizing state is important. Any time you handle state, you better know why.

    After that either the scalability jumps out at you or you realise your various local state matters far too much and you are in trouble.

    If you can run two instances of your app and not care about which instance you hit at any given request, you are in a place you can probably get to many more. Scale City.

    If you can run two separate instances of your app but not with the same data, time to try sharding! This trick also works if your state management system (database) is getting overwhelmed, but only works where your data/ users can be sharded.