• Simplified infrastructure. There won’t be millions of customers overnight so this will be built as a monolithic application – one development chain, one product. As there’s minimal developers it removes a lot of overheads allowing rapid prototyping. This can have faster hardware thrown at it as the customer base grows, with horizontal scaling coming later to keep costs low.
  • CI/CD. There would be a dedicated development->testing->demo->staging->production chain, to force the non-technical staff to view the platform while catching any bugs on the way through, saving on testing overheads while doubling as a much needed demo platform.
  • Unified Systems. Each underlying system would be loaded in the same way, with the same libraries, with common proven technologies & languages to keep everything consistent and simplified – allowing for rapid scale while keeping costs extremely low.

What is Horizontal Scaling?

For everyone reading this to learn how a SaaS is built, you would have seen this term mentioned a couple of times. Horizontal scaling refers to the design where if you need to support more users simultaneously, or need something to calculate faster, you can have the application running multiple times alongside eachother so they work concurrently. You can think of horizontal as the servers sitting in a line. If you no longer need to support so many users, remove some servers. This can be achieved dynamically in the cloud in various ways.

The important part to note is most websites are designed this way as they’re simple cases that just need to keep track of the user, but when you have a use case where you need something calculated that may take minutes – such as the video generation – it changes the way the platform is designed underneath so that a process can benefit from this.

Horizontal scaling also exists within a single server by creating threads. An application or parts of an application can run many times simultaneously within the same server – this requires careful consideration to prevent computing the same work more than once, and to prevent conflicts. You also have to take in to account the amount of memory the server has, the speed of the processor, and so on. If you want to keep this all within the same server and it’s struggling, you can make the server more powerful – also called vertical scaling.

It often comes down to complexity and costs. Usually far easier to vertically scale, but then eventually you can’t throw more power at it so you have to horizontally scale.