Scaling Software
NOTE: THis is MY vision of DevOps and scaling.
Scaling software isn’t about adding Kubernetes to the mix or burning cloud credits.
Scaling can be done in multiple ways. Treating this in a purely DevOps (which for some companies means) engineering way ca be a problem.
THe classical way to think abhout is vertical or horizontal scaling., Vertical scaling is making the computer faster, adding more CPU, ram, faster drives etc.
Or you can scale horizontally, by adding multiple computers to the equation.
But this creates a problem if the programming language or libraries we’re using are SLOW and expensive, think of AI LLM processing which is SUPER SLOW. We burn a lot of resources.
Therefore there is another form of scaling, which had been in vogue in the 60’s.. That’s making the app more efficient;).
Now, premature optimizationm is the root of all evil, however. By changing the programming language or paradign, we can most of the times solve the complexities which scaling requires. Or we can eliminate
I recommend Elixir, ERlang or Golang
For example, by using Elixir or Erlang with OTP you can interconnect nodes (multiple pc’s or servers) at the level of the programming language. Which means that all your kubernetes clusters will no longer be necessary;). However, tHere are people using Elixir with Kubernetes and I fail to understand why they can’t follow the OTP paradigms.
I’ll give one single example, however I can give tens of examples;). Whatsapp had 50 employees before it was acquired by Facebook, yet they managed to scale to ONE BILLION 1.000.000.000 users by simply using Erlang and FreeBSD. One sever had 2 million open connections at a time;). Had they chosen something else (php, node javascript, or whatever) they would have probably never scaled (this was before kubernetes even existed). This means they would have probably needed many more server, many more engineers and much more complexity;)
Making important and correct design decisions is very important early on and should not be left to Solution Architects which don’t have experience in multiple programming languages and paradigms.
Choosing the RIGHT tool for the job is very important.
So in DevOps or software developmkent if you let’s say beign building your prototype in javascript/typescrypt/python.. and then want to make it scale, ask yourself if a rewrite in a different programming language