Horizantal & Vertical Scaling

August 3, 2025

3 min read

When you're designing a large-scale system, one of the most important considerations is scaling. There are two main ways to do this: horizontal scaling and vertical scaling.

Horizontal scaling, or scaling out

involves adding more machines or nodes to your fleet to share the traffic. Instead of relying on a single machine, you spread the load across multiple resources. This is very common in distributed systems. It provides redundancy and fault tolerance, and it's also very cost-effective in cloud computing because you only pay for what you use. However, it can introduce a lot of complexity because you have to manage multiple machines, worry about data consistency, and latency between nodes.

Vertical scaling, or scaling up

With this, you increase the power of your existing machine, such as adding more RAM or a better CPU. This is usually easier to implement, and there’s no need for data distribution because everything stays on one machine. But this creates a single point of failure; if that machine goes down, the whole system goes down. Also, it can become very expensive as high-end hardware costs rise exponentially.

In general, you go with horizontal scaling when you need to handle massive traffic and want better fault tolerance, or vertical scaling when simplicity and low latency are your top priorities. That said, almost all modern large-scale systems are built with horizontal scaling in mind.

•••

Büyük ölçekli bir sistem tasarlarken dikkat edilmesi gereken en önemli konulardan biri ölçeklenebilirlik. Bu konuda genellikle iki temel yaklaşım var: yatay ölçekleme ve dikey ölçekleme.

Yatay Ölçekleme (Horizontal Scaling) Sisteme yeni makineler ya da düğümler (node) ekleyerek yükü paylaştırmak. Yani her şeyi tek bir makineye yüklemek yerine, yükü birden fazla kaynağa dağıtıyorsun. Bu yaklaşım dağıtık sistemlerde oldukça yaygın. Avantajlarına gelirsek: Hem yedeklilik (redundancy) hem de hata toleransı (fault tolerance) sağlar. Özellikle bulut ortamlarında maliyet açısından oldukça avantajlı çünkü sadece kullandığın kadar ödersin. Ama tabii bu yapı beraberinde bazı zorlukları da getirir: Birden fazla makineyi yönetmek zorundasın. Veri tutarlılığı (consistency) ve düğümler arası gecikme (latency) gibi konulara dikkat etmek gerekir.

Dikey Ölçekleme (Vertical Scaling) Mevcut makinenizin gücünü artırmak demektir, daha fazla RAM eklemek ya da daha güçlü bir işlemci kullanmak gibi. Uygulaması genellikle daha kolaydır çünkü veriler hâlâ tek bir yerde durur, dağıtım gerekmez. Ancak: Tüm sistemin kaderi o tek makineye bağlıdır; eğer o giderse her şey gider. Ayrıca güçlü donanımların maliyeti katlanarak artar, bu da bütçeyi zorlayabilir.

Hangi Durumda Hangisi? Eğer çok yüksek trafik bekliyorsan ve sistemin ayakta kalması kritikse, yatay ölçekleme daha mantıklı. Ama sistem daha sade bir yapıya sahipse ve düşük gecikme (low latency) daha önemliyse, dikey ölçekleme tercih edilebilir. Tabii günümüzde büyük ölçekli sistemlerin hemen hepsi yatay ölçeklemeyi temel alarak tasarlanıyor.