Sistem Tasarımına Giriş: Bir Kod Parçası Nasıl Gerçek Bir Ürüne Dönüşür?

Bu yazıda basit bir kodun nasıl gerçek bir ürüne dönüştüğünü, insanların onu nasıl kullandığını ve bu süreçte sistem tasarımının neden kritik olduğunu öğreneceksin. Ayrıca ölçeklenebilirlik, sunucu yapısı ve performans gibi temel kavramları da sade bir şekilde anlayacaksın.

Basit Bir Kod Nasıl Servise Dönüşür?

Şimdi şöyle bir düşün… bilgisayarında bir algoritma yazdın. Bu algoritma bir input alıyor ve sana bir output veriyor. Yani klasik bir fonksiyon gibi çalışıyor.

Ama bir süre sonra insanlar bunu kullanmak istiyor.

Burada kritik bir problem var:
Sen bilgisayarını herkese veremezsin.

İşte burada devreye API giriyor.

API (Application Programming Interface), senin yazdığın kodu internet üzerinden erişilebilir hale getirir.

Yani şöyle düşün:
Birisi sana “şu input’u işleyip sonucu ver” diye bir mesaj gönderiyor (request), sen de sonucu geri gönderiyorsun (response).

Bu noktada sen artık sadece kod yazan biri değilsin, bir servis sunuyorsun.


Bu Servisi Nerede Çalıştıracaksın?

Şimdi şöyle bir problem var… bu sistemi kendi bilgisayarında mı çalıştıracaksın?

Aslında bu çok mantıklı değil. Çünkü:

  • Bilgisayar kapanabilir
  • Elektrik kesilebilir
  • İnternet kopabilir

Bu yüzden sistemler genelde cloud üzerinde çalıştırılır.

Cloud (bulut) dediğimiz şey aslında başkasına ait bilgisayarları kiralamaktır.

Yani şöyle düşün:
Sen kendi bilgisayarın yerine, dünyanın başka bir yerindeki güçlü bir bilgisayara bağlanıyorsun ve kodunu orada çalıştırıyorsun.

Örneğin Amazon Web Services gibi servisler sana bu altyapıyı sağlar.

Böylece:

  • Sistem daha stabil olur
  • Kesinti ihtimali azalır
  • Teknik yükün bir kısmını başkası üstlenir

Trafik Artarsa Ne Olur?

Senin servisin çok kullanılmaya başladı diyelim.

Başta her şey güzel çalışıyordu ama şimdi sistem yavaşladı.

Sen de fark etmişsindir ki… tek bir bilgisayarın kapasitesi sınırlıdır.

İşte burada “scalability” yani ölçeklenebilirlik devreye girer.

Scalability, sistemin daha fazla kullanıcıyı kaldırabilme yeteneğidir.


İki Farklı Ölçekleme Yöntemi
1. Vertical Scaling (Dikey Ölçekleme)

Daha güçlü bir makine alırsın.

Yani şöyle düşün:
Küçük bir bilgisayar yerine daha büyük, daha hızlı bir bilgisayar kullanıyorsun.

Avantajları:

  • Daha hızlı işlem (aynı makine içinde iletişim)

Dezavantajları:

  • Bir noktadan sonra daha büyüğü yok
  • Tek makine olduğu için çökerse sistem gider

2. Horizontal Scaling (Yatay Ölçekleme)

Tek makine yerine birden fazla makine kullanırsın.

Yani şöyle düşün:
Tek kasiyer yerine 5 kasiyer açıyorsun.

Avantajları:

  • Daha fazla kullanıcıya hizmet edebilir
  • Bir makine çökse diğerleri devam eder

Dezavantajları:

  • Sistem karmaşıklaşır
  • Makinalar arası iletişim yavaştır (network)

Peki Gerçek Hayatta Hangisi Kullanılıyor?

Cevap: İkisi birlikte.

Aslında bu çok basit:
Her makineyi mümkün olduğunca güçlü yaparsın (vertical),
sonra da bunlardan birden fazla kullanırsın (horizontal).

Yani şöyle hayal edebilirsin:
Güçlü bilgisayarlardan oluşan bir ordu kuruyorsun.

Bu yaklaşım sayesinde:

  • Sistem hem hızlı olur
  • Hem de çökmelere karşı dayanıklı olur

Sistem Tasarımında Asıl Denge

Burada kritik nokta şu:
Her şeyin bir trade-off’u (bedeli) var.

Örneğin:

  • Çok hızlı sistem → pahalı olabilir
  • Çok tutarlı veri → yavaş olabilir
  • Çok ölçeklenebilir sistem → karmaşık olabilir

Yani sistem tasarımı aslında şu soruya cevap verir:

“Benim ihtiyacım ne ve buna en uygun denge ne?”


Özet

Aslında sistem tasarımı, basit bir kodun gerçek dünyada çalışabilecek bir ürüne dönüşme sürecidir. Önce kodunu API ile dışarı açarsın, sonra bunu güvenilir bir ortamda (cloud) çalıştırırsın. Kullanıcı sayısı arttıkça sistemi büyütmen gerekir ve burada dikey ve yatay ölçekleme seçenekleri devreye girer. Ama hiçbir çözüm kusursuz değildir; her zaman performans, maliyet ve karmaşıklık arasında bir denge kurman gerekir. İşte bu dengeyi kurma işi, sistem tasarımının özüdür.


Bu yazı System Design BASICS: Horizontal vs. Vertical Scaling videosundan ilham alınarak yazılmıştır.


Kaynakça:

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir