When we are talking about scalability, we're in most cases referring to performance and effectiveness of the applications which we choose to deploy or build. New features are added, bugs is resolved and issues with performance gets fixed. With every release, things get better. (or not?) This is all good, except..

Scalability is not just performance, nor effectiveness.

Generally applications don't just crash, they don't just stop working. In 9 of 10 cases when problems occur, it's because a human did something stupid.

And it gets even more stupid if you design your system with single point of failures, things are always gonna fail. It's not a question if, it's when. Either by it selfe, or by a human.

Comercial vs Open Source applications

Is Open Source based applications more stable? Maybe
Does Open Source based applications tend to scale better? Yes

One of the golden rules for stable open source operations is to never upgrade to the latest major version of the software. This applies on commercial applications as well, but in the world of Open Source upgrading to a brand new major release for no reason is a big NO NO.

In my honest opinion, open source applications scale better. In the term of failures and effectiveness. Performance is not always the case, it kinda depends actually. Applications that is "cloud scale-out", does often scale very well. Add more containers and VMs and your capacity is grown x times.

I'm still convinced that commercial software-defined storage is more efficient that opensource based is today. This will however change.. Ceph, is an Open Source scale-out storage. Ceph is used a lot by the OpenStack community, and has a very good reputation.

Storage is however something that you don't want to mess with.

Built in a modular way

Modular by design = fallibility = scalability

Open source tend to be modular by design. A product serves one purpose. Have you ever heard of the Unix-principles? One principle is to write applications for one purpose and make it do its purpose well. Don't use applications which solves more than one purpose. They tend to integrate very poorly with other applications.

I like to referee to Icinga, it's a monitoring system that does monitoring. Nothing more. Icinga outputs data towards other systems in a "lean way". Which makes it easy to integrate and scale output components individually.

So in order to build a monitoring stack, we need more applications and tools to achieve this. We probably need InfluxDB for time series data, MySQL for transactional data, Puppet for automation, ELK for logs, Grafana to visualise all this. SNMP-traps? Don't even think about it. I literally hate it. (My opinion)

But hey, I can just buy OP5! Right?

When you deploy an out-of-box solution, like OP5. You looses on your own flexibility. It sounds odd, but for 95% of all IT companies OP5 will solve the monitoring issues. But, when you are managing a NOC which acts a NOC for customers, things will get complicated, and you need to have all the flexibility in the world. Choose Open Source instead.

And if you are one of the 95% companies, running Icinga as an out-of-box solution is really easy to setup for a somewhat experience sysadmin. If you manage to operate OP5, you will manage Icinga as well.

Remember, expect failures to happen. Because they will.