Skip to main content

Does this scale down? ๐Ÿ“‰

The tech giants often publish the tools and processes they build for the world to see.
And we regular developers love to follow their lead.

  • Netflix does microservices? I should do that too!
    (Never mind I only have a single five-man team developing the application.)
  • Google uses Kubernetes for orchestration? I should do that too!
    (Never mind I only have two Docker containers.)
  • Facebook uses React to develop their applications? I should do that too!
    (Never mind my application is mostly a static web page.)
  • Amazon uses eventual-consistency storage? I should do that too!
    (Never mind my database write capacity is not even remotely saturated.)

The list goes on. Many times, these technologies are used without much critical thinking. Do I really need that stuff? Are the problems I solve on a daily basis similar to those of Netflix, Google, Facebook or Amazon?

Scaling, scaling, scaling #

In particular, people often worry about scaling. Whether a certain solution will scale up to some large amount of users. Why are people so obsessed with scaling? If your users are measured in the thousands, why do you look at tech built for billions?

Comic 'White lies' by Work Chronicles.
I love Work Chronicles’ comic “White lies” on this subject.

How come people never worry about whether it scales down to a low number? Why do people never ask “is this technology suitable for us since we only have 1000 users” or “isย it appropriate for us to include this technology since we only have 10 developers”?

Why are people not more worried about complexity, the learning curve, and the cost of maintenance? Technology built for a large corporation may not be suitable for a small.

Keep it simple #

“But, it does not hurt to future-proof”, you say. Well, yes it does. Using technology which is overdimensioned for your needs makes your system unnecessarily large, slow, complex and hard to understand. It means you need to spend more time on technology that could have been spent on improving your application (or taking a break).

And if you have a system that is working, it is almost always more effective to tweak what you have than to throw it out and replace it with new unproven technology.1

Sometimes the hype is so strong that a particular technology seems like the only sensible option. “Everybody” does it, and it has become “the way it is done”. It can even be hard to find good alternatives. But there are. You can still build a monolithic well-modularized system deployed with a few containers (or not) and a shell script, serving a mostly-static web app with some simple JS magic, backed by a traditional relational database.

Conclusion #

When looking at technology choices, don’t blindly adopt the latest hot technology.
Ask yourself if you really have the problems which the technology was built to solve. Are you internet-scale?

What are your favorite alternatives to internet-scale technology?

Lars-Christian: I couldn't agree more. It feels like this is a (signficant) symptom of a bigger trend brought on by the advent of tech giants. "Everything must be built with world domination in mind!" But, at the same time, I'm seeing more and more examples of counter-movements. Which is great.