Should I upgrade the server or add another one?

When you think about scaling your architecture in a Vertical or Horizontal way (see my post Horizontal and vertical scalability), maybe you could find yourself wondering what the heck you should do. I’ll try to give you some scenarios where you should opt for one or another.

  1. So, you would need to upgrade your server, or even buy a bigger one (do a Vertical scaling) when:
    • You have some processing that can’t be splitted in more than one machine, or can’t be parallelized like:
      • Images rendering
      • Legacy batch processing
      • Transactions
      • Any other big process that is like a “atom”, can’t be divided (well… actually an atom can, but…)
    • You realized that your performance issues are just a lack of:
      • Memory
      • CPU
      • Storage
      • Networking
      • etc
  2. Then, you would need to add a new server to your architecture (do a Horizontal scaling) when:
    • You already has a cluster up and running but the servers are all working close to the limit:
      • Free tip: don’t ever, EVER, let this happening. If your cluster is working close to the limit and one of the servers fails, guess what? Yes, all the others will fail right after like a domino.
    • Your cluster is ok but you are foreseeing a growth in its load;
    • You have many things running in one server and they can easily (or not) be distributed like:
      • Services that are not related: database, e-mail server, applications, etc
      • The layers of your application (if it was right designed for it):
        • Web layer
        • Business layer
        • Data layer
        • Integration layer
        • Whatever layer
    • You already use micro services and one or more services need to be clustered or load balanced.

Of course, these are only some examples! If you know some others feel free to tell me at the comments bellow.

Leave a Reply

Your email address will not be published. Required fields are marked *