Sistem Tasarımı Mülakatlarında En Çok Sorulan 30 Soru ve Cevap (2026)

Sistem Tasarımı Mülakat Soruları ve Cevapları

Sistem tasarımı mülakatına hazırlanmak, mülakatçıların baskı altında mimari düşünmeyi nasıl değerlendireceğini öngörmek anlamına gelir. Sistem Tasarımı Mülakat Soruları Yapılandırılmış tartışmalar yoluyla derinliği, ödünleşmeleri, ölçeklenebilirlik değerlendirmesini ve iletişimi ortaya koymak.

Güçlü bir hazırlık, bulut platformları, dağıtık sistemler ve veri mühendisliği alanlarında çeşitli rollerin kapılarını açar ve gerçek analizler yoluyla teknik uzmanlığı kanıtlar. Bu alanda çalışan profesyoneller, pratik beceriler geliştirir, ekipleri destekler, yöneticilerin karar vermesine yardımcı olur ve yeni mezunlardan kıdemli seviyelere kadar uzanan, ileri düzey, temel ve teknik bakış açılarını içeren yaygın soruları ve cevapları küresel ölçekte ele alırlar.
Daha fazla oku…

👉 Ücretsiz PDF İndir: Sistem Tasarımı Mülakat Soruları ve Cevapları

En Popüler Sistem Tasarımı Mülakat Soruları ve Cevapları

1) Sistem tasarımının ne olduğunu ve yazılım mühendisliğinde neden önemli olduğunu açıklayın.

Sistem tasarımı şudur: Bir sistemin mimarisini, bileşenlerini, arayüzlerini ve verilerini tanımlama süreci. Belirli gereksinimleri ölçeklenebilir, güvenilir ve sürdürülebilir bir şekilde karşılamak için tasarlanmıştır. Yüksek seviyeli hedefleri (sistemin neyi başarması gerektiği) teknoloji, protokoller ve mimari kalıplar hakkındaki somut kararlarla birleştirir. Güçlü bir sistem tasarımı, bir uygulamanın yük altında iyi performans göstermesini, hataya dayanıklı kalmasını ve tamamen yeniden yazılmadan zaman içinde gelişebilmesini sağlar.

Mülakatlarda bu, denge kurma yeteneğinizi gösterir. işlevsel gereksinimler 'da işlevsel olmayan kısıtlamalar Ölçeklenebilirlik, gecikme süresi, tutarlılık ve kullanılabilirlik gibi özellikler. Tüm büyük teknoloji şirketleri, gerçek dünya mühendislik yargısını ölçmek için bir adayın sistem tasarım becerilerini değerlendirir.


2) Sistem mimarisinde Yüksek Seviye Tasarım (HLD) ile Düşük Seviye Tasarım (LLD) arasındaki farkı nasıl açıklarsınız?

Üst Düzey Tasarım (HLD) şunlara odaklanır: mimari genel bakış ve ana bileşenler Uygulama detaylarına girmeden. Sistemlerin nasıl etkileşimde bulunduğunu gösterir — örneğin, web sunucusu, veritabanı, önbellek, API ağ geçidi, ve mesajlaşma sistemleri.

Düşük Seviyeli Tasarım (LLD) daha derine iner. sınıf tanımları, metotlar, veri yapıları ve ayrıntılı mantık Her bir bileşen içinde. Yüksek seviye tasarım (HLD), hangi bileşenleri kullanacağınız ve bunların nasıl etkileşimde bulunacağıyla ilgilidir; düşük seviye tasarım (LLD) ise bu etkileşimleri nasıl uygulayacağınızla ilgilidir. Her ikisini de anlamak, mülakatçıların genel düşünme yeteneğinizi ve detaylı mühendislik becerilerinizi değerlendirmesine yardımcı olur.


3) Bir sistem tasarlarken dikkate almanız gereken temel performans ölçütleri nelerdir ve neden?

Performans ölçütleri, bir sistemin kullanıcı ve işletme ihtiyaçlarını ne kadar iyi karşıladığını ölçmeye yardımcı olur. Başlıca ölçütler şunlardır:

  • gecikme: Tek bir isteğin işlenmesi için geçen süre. Daha düşük gecikme süresi, daha hızlı yanıtlar anlamına gelir.
  • Üretilen: Belirli bir süre içinde işlenen iş miktarı (örneğin, saniyedeki istek sayısı). Daha yüksek işlem hacmi, yük altında verimliliği gösterir.
  • Durumu: Bir sistemin çalışır durumda olduğu sürenin oranı. Yüksek kullanılabilirlik, küresel hizmetler için çok önemlidir.

Bu ölçütler, tasarımcıların dengeyi kurmasına yardımcı olur. Örneğin, önbellekleme gecikmeyi azaltır ancak veri tutarlılığını zorlaştırır. Bunlara aşina olmak, gerçek dünya sistem kalitesine önem verdiğinizi gösterir.

metrik Tanım Önem
Gecikme İstek başına süre Kullanıcı deneyimi
çıktı Birim zaman başına talep sayısı ölçeklenebilirlik
Uygunluk Çalışma süresi ile arıza süresi arasındaki fark Güvenilirlik

4) Yük dengelemesini ve dağıtık sistemlerde neden kritik öneme sahip olduğunu açıklayın.

Yük dengeleme, şu süreçtir: Gelen istekleri birden fazla sunucu veya hizmete dağıtmak Tek bir düğümün darboğaz haline gelmesini önlemek için, kapasitenin en iyi şekilde kullanılmasını sağlar, yanıt sürelerini iyileştirir ve trafiği sağlıksız örneklerden uzaklaştırarak sistem güvenilirliğini artırır.

Farklı tipte yük dengeleyiciler mevcuttur. A Katman 4 (L4) Dengeleyici, taşıma katmanında (IP/port) çalışırken, bir Katman 7 (L7) Yük dengeleyici, HTTP/S semantiğini anlayarak uygulama katmanında çalışır. Yük dengeleme, üretim sistemlerinde hata toleransı, kesintisiz ölçeklendirme ve kademeli güncellemeler için kritik öneme sahiptir. Bu soruyu iyi yanıtlamak, dağıtık sistemlerde performans, tutarlılık ve maliyet arasındaki temel dengeyi anladığınızı gösterir.


5) TinyURL servisini nasıl tasarlardınız? Temel bileşenleri ve adımları açıklayın.

TinyURL hizmeti tasarlamak hem işlevsel gereksinimleri (URL'leri kısaltma, kullanıcıları yönlendirme) hem de işlevsel olmayan gereksinimleri (ölçeklenebilirlik, benzersizlik, performans) kapsar.

Öncelikle, açıklayıcı sorular kısıtlamaları belirlemeye yardımcı olur: beklenen hacim, son kullanma tarihi politikaları, analitik ihtiyaçlar vb. Ana bileşenler şunlardır:

  • API katmanı: Kısaltma/yönlendirme isteklerini alır ve işler.
  • Veritabanı ve önbellekleme: Orijinal ↔ kısaltılmış URL eşleştirmelerini saklar; önbelleğe alma okuma performansını artırır.
  • Kısa kimlik oluşturucu: Benzersiz kimlikler için karma algoritması veya taban kodlaması kullanır.

Benzersiz anahtarları verimli bir şekilde oluşturmak için şunları yapabilirsiniz:

  • Kullanım base-62 kodlaması Sıralı bir kimlik numarası (örneğin, 1 → a, 2 → b, vb.).
  • Kullanmak Çarpışma çözümlemeli karma fonksiyonu.

Ayrıca, yükü azaltmak için analitik araçları, hız sınırlamalarını ve yoğun URL'leri önbellekleme veya CDN katmanlarıyla ele almayı da göz önünde bulundurmalısınız. Bu ödünleşmeleri açıklamak, hem tasarım kalıplarında hem de ölçeklenebilirlik hususlarında derinlik gösterir.


6) Önbellekleme nedir ve sistem performansını nasıl iyileştirir?

Önbellekleme depoları sık erişilen veya hesaplanması pahalı olan veriler Tekrarlanan hesaplamaları ve veritabanı yükünü azaltmak için daha hızlı bir depolama ortamında (bellek, dağıtılmış önbellek) çalışır. Popüler istekleri hızlı bir şekilde karşılayarak gecikmeyi ve verimliliği önemli ölçüde artırır.

Önbellekleme birden fazla katmanda gerçekleşebilir: uygulama belleği, Redis/EhcacheCDN uç sunucuları veya tarayıcı yerel depolaması gibi yerlerde önbellekleme kullanılabilir. Önbellekleme yanıt sürelerini azaltırken, tasarım aşamasında ele almanız gereken eski veriler ve geçersizleştirme sorunları da ortaya çıkarır. Örneğin, temel veriler değiştiğinde yaşam süresi (TTL) politikaları veya önbellek geçersizleştirme stratejileri kullanabilirsiniz. İyi cevaplar, hem CDN uç sunucularını hem de tarayıcı yerel depolamasını anladığınızı gösterir. faydalar ve tuzaklar önbelleğe alma.


7) CAP Teoremini ve bunun dağıtık sistem tasarımına etkilerini açıklayın.

CAP Teoremi, dağıtık bir sistemde aşağıdaki üç garantiden en fazla ikisini seçebileceğinizi belirtir:

  1. Tutarlılık: Tüm düğümler aynı anda aynı veriyi görür.
  2. Durumu: Her istek bir yanıt alır (doğruluğu garanti edilmese de).
  3. Bölme toleransı: Ağ arızalarına rağmen sistem çalışmaya devam ediyor.

Ağ bölümlenmeleri söz konusu olduğunda, hiçbir pratik dağıtılmış sistem bu üçünü aynı anda başaramaz. Örneğin, bir bölümlenme sırasında sistemler, eski verileri sunmak (erişilebilirlik) veya tutarlılık yeniden sağlanana kadar istekleri reddetmek (tutarlılık) arasında seçim yapmak zorundadır. CAP'ı anlamak, operasyonel önceliklere dayalı olarak bilinçli tercihler yapabileceğinizi gösterir; bu da sistem tasarımı mülakatlarında önemli bir beceridir.


8) WhatsApp benzeri bir mesajlaşma servisini genel hatlarıyla nasıl tasarlardınız?

Büyük ölçekli bir sohbet sistemi tasarlamak için öncelikle temel gereksinimleri belirlemek gerekir: gerçek zamanlı mesaj iletimi, kalıcılık, mesaj sıralaması, çevrimdışı destek ve ölçeklenebilirlik.

Yüksek düzeyde:

  • Müşteriler Ağ geçidi sunucularına web/mobil üzerinden bağlanın.
  • Mesaj yönlendiricileri Gelen mesajları işleyin ve alıcılara iletin (WebSocket gibi kalıcı bağlantılar aracılığıyla).
  • veritabanları Mesaj geçmişini, geniş kullanıcı tabanları için uygun bölümlendirme ile saklayın.

Ek bileşenler arasında son sohbetler için önbellekler, eşzamansız teslimat için kuyruklar ve çevrimdışı kullanıcılar için bildirim hizmetleri yer almaktadır. Bunları görüşmelisiniz. Mesajların nasıl saklandığı, sıralandığı ve kullanıcı başına birden fazla cihaza nasıl iletildiği ve arıza durumunda devreye girme ve hata toleransını nasıl ele aldığınız.


9) Sharding nedir ve veritabanlarının ölçeklendirilmesine nasıl yardımcı olur?

Parçalama bir türdür yatay ölçeklendirme Burada büyük bir veri kümesi, her biri farklı bir veritabanı düğümünde depolanan, parça adı verilen daha küçük, bağımsız bölümlere ayrılır. Bu, verileri ve sorgu yükünü tek bir örneği ölçeklendirmek yerine birden fazla makineye dağıtarak performansı ve ölçeklenebilirliği artırır.

Veriler müşteri kimliğine, coğrafi bölgeye veya karma algoritmasına göre parçalara ayrılabilir. Parçalara ayırma, düğüm başına yükü azaltırken, düğüm ekleme veya çıkarma sırasında parçalar arası sorgularda ve yeniden dengelemede karmaşıklık yaratır. Mülakatçılar, bu ödünleşmeleri ve tutarlı karma algoritmasının veya parça yöneticilerinin işlemleri nasıl kolaylaştırabileceğini anlamanızı bekler.


10) API'lerin ve mikroservislerin monolitik mimariden nasıl farklı olduğunu açıklayın.

A Monolithic architecture Tüm uygulama bileşenlerini tek bir dağıtılabilir birim halinde bir araya getirir. Bu, başlangıçta geliştirmeyi basitleştirebilir, ancak zamanla ölçeklendirmeyi, bakımı ve güncellemeyi zorlaştırır.

Microservices sistemi bozmak küçük, bağımsız olarak konuşlandırılabilir hizmetlerHer biri belirli bir iş yeteneğinden sorumlu olan bu hizmetler arasında iletişimi sağlayan API'ler (Uygulama Programlama Arayüzleri) bulunur.

Görünüş yekpare Microservices
açılma Tek ünite Bağımsız hizmetler
ölçeklenebilirlik Sınırlı Hizmet başına ölçeklendirme
Arıza izolasyonu Çok Zayıf Güçlü
karmaşa Başlangıçta daha basit Daha karmaşık işlemler

Mikroservisler ölçeklenebilirliği ve dağıtım esnekliğini artırır ancak gelişmiş operasyonel araçlar (servis keşfi, izleme ve hata toleransı) gerektirir. Bunu tartışmak, mimari evrimi ve basitlik ile esneklik arasındaki dengeyi kavrayabildiğinizi gösterir.


11) İçerik Dağıtım Ağı (CDN) nasıl çalışır ve avantajları nelerdir?

A İçerik Dağıtım Ağı (CDN) Çeşitli coğrafi bölgelere stratejik olarak yerleştirilmiş dağıtılmış bir proxy sunucu ağıdır. Başlıca amacı şudur: Kullanıcılara minimum gecikmeyle içerik sunmak En yakın sunucudan (uç düğüm olarak bilinir) sunarak.

Kullanıcı bir web kaynağı (örneğin, resim, video veya statik dosya) istediğinde, CDN içeriği önbelleğe alır ve doğrudan bir uç sunucudan teslim eder. İçerik önbellekte yoksa, onu kaynak sunucudan alır ve sonraki istekler için saklar.

CDN'lerin avantajları:

faktör Avantajları
Gecikme İçeriği kullanıcılara daha yakın bir konumda sunarak yanıt süresini azaltır.
Bant genişliği Kaynak sunuculardan bant genişliği kullanımını azaltır.
Güvenilirlik Dağıtılmış düğümlerle hata toleransı sağlar.
ölçeklenebilirlik Yüksek trafik hacimlerini verimli bir şekilde yönetir.

CDN'ler, aşağıdakiler gibi küresel sistemler için hayati öneme sahiptir: Netflix, YouTubeYüksek performans ve erişilebilirliği sağlayan e-ticaret platformları da dahil olmak üzere.


12) Hız sınırlama nedir ve API tasarımında neden önemlidir?

Hız sınırlayıcı Bir istemcinin belirli bir süre içinde bir API'ye yapabileceği istek sayısını sınırlandırır. Bu, aşağıdakiler için çok önemlidir: istismarı önlemek, adil kullanımın sürdürülmesi, ve arka uç hizmetlerini korumak Aşırı yüklenme veya hizmet reddi (DoS) saldırılarından.

Hız sınırlama için kullanılan yaygın algoritmalar şunlardır:

  • Sabit Pencere Tezgahı — Basit ama pencere sınırlarında ani artışlara neden olabilir.
  • Sürgülü Kütük / Sürgülü Pencere — Taleplerin daha sorunsuz işlenmesini sağlar.
  • Jeton Kovası / Sızıntılı Kova — Belirli sınırlar dahilinde ani artışlara izin verir ve istikrarlı bir istek akışı sağlar.

Örneğin, GitHub, kullanıcı başına saatte 5000 API çağrısıyla sınırlama getiriyor. Hız sınırlamalarının uygulanması, sistem istikrarını sağlar ve genel hizmet kalitesini artırır.


13) Dağıtılmış sistemlerde veri tutarlılığını nasıl sağlarsınız?

Dağıtılmış sistemlerde tutarlılığı sağlamak, çoğaltma ve ağ gecikmesi nedeniyle zordur. Tutarlılık ve kullanılabilirlik arasında gereken dengeye bağlı olarak çeşitli stratejiler mevcuttur:

Tutarlılık Türü Açıklama Kullanım çantası
Güçlü Tutarlılık Tüm müşteriler aynı verileri anında görür. Bankacılık sistemleri
Nihai Tutarlılık Güncellemeler eşzamansız olarak yayılır; geçici farklılıklara izin verilir. Sosyal medya beslemeleri
Nedensel Tutarlılık Sebep-sonuç sırasını korur. İşbirlikçi uygulamalar

gibi teknikler yazma öncesi günlükleri, vektör saatleri, Konsensus algoritmaları (Raft, Paxos), ve iki aşamalı taahhüt (2PC) Senkronizasyonun korunmasına yardımcı olun. Mülakatçılar sizden bunu açıklamanızı bekliyor. when Performans ve ölçeklenebilirlik kazanımları için tutarlılıktan ödün vermek.


14) Yatay ve dikey ölçeklendirme arasındaki farkı açıklayın.

Ölçeklendirme, bir sistemin daha fazla yükü kaldırabilme kapasitesini artırmayı ifade eder. İki ana türü vardır:

Ölçekleme Türü Yöntem Avantajlar Dezavantajlar
Dikey Ölçeklendirme (Büyütme) Tek bir makineye daha fazla kaynak (CPU, RAM) ekleyin. Uygulaması daha basit Donanım sınırlamaları, tek arıza noktası
Yatay Ölçeklendirme (Genişletme) Yükü dağıtmak için daha fazla makine ekleyin. Yüksek bulunabilirlik, uygun maliyet Yönetilmesi ve koordinasyonu karmaşık

Örneğin, bir web sunucusunun 2 CPU'dan 8 CPU'ya ölçeklendirilmesi dikey ölçeklendirme iken, yük dengeleyicinin arkasına birden fazla sunucu eklemek yatay ölçeklendirmedir. Kubernetes gibi modern dağıtık sistemler bunu destekler. yatay ölçeklendirme esneklik için.


15) Mesaj kuyrukları nedir ve dağıtık mimarilerde neden kullanılırlar?

A mesaj kuyruğu Mesajları işlenene kadar geçici olarak depolayarak üreticiler ve tüketiciler arasındaki bağlantıyı koparır. Bu, eşzamansız iletişimDağıtılmış sistemlerde dayanıklılığı ve ölçeklenebilirliği artırmak.

Popüler mesaj aracıları şunlardır: RabbitMQ, Kafka, Amazon SQS, ve Google Yayınla/Abone Ol.

Faydaları:

  • Trafik yoğunluğunu azaltır.
  • Hizmetleri birbirinden ayırır
  • Yeniden deneme ve kalıcılık mekanizmalarını etkinleştirir.
  • Hata toleransını artırır.

Örnek: Bir e-ticaret platformunda, sipariş hizmeti, envanter ve faturalama hizmetlerinin bağımsız olarak tüketebileceği ve doğrudan bağımlılıkları önleyebileceği bir mesaj ("Sipariş Verildi") yayınlayabilir.


16) Ölçeklenebilir bir dosya depolama sistemini nasıl tasarlardınız? Google Drive or Dropbox?

Bulut tabanlı bir dosya depolama sistemi tasarlamak için, onu temel bileşenlere ayırın:

  • Ön Uç Hizmeti: REST API'leri aracılığıyla dosya yükleme/indirme işlemlerini yönetir.
  • Meta Veri Hizmeti: Dosya sahipliğini, erişim izinlerini ve sürüm geçmişini saklar.
  • Depolama Hizmeti: Dağıtılmış depolama alanlarındaki (örneğin, S3, HDFS) dosya parçalarını yönetir.
  • Kümeleme: Dosyalar, verimli depolama ve iletim için daha küçük parçalara (örneğin, 4 MB) bölünür.

Zorluklar arasında şunlar yer alır: veri tekilleştirme, tutarlılık, ve senkronizasyon değişiklikleri Cihazlar arası kullanımda, blok düzeyinde senkronizasyon ve içerik karma algoritmasının uygulanması bant genişliği verimliliğini ve bütünlüğünü sağlar.


17) Ölçeklenebilir bir veritabanı şeması tasarlarken dikkate alınması gereken temel faktörler nelerdir?

Ölçeklenebilir bir şema, performans, esneklik ve sürdürülebilirlik arasında denge kurar. Önemli hususlar şunlardır:

  • Veri bölümleme (Büyümeyi yönetmek için parçalama).
  • Normalizasyon ve Denormalizasyon: Bütünlük için normalleştirin; yoğun okuma performansı için normalleştirmeyi kaldırın.
  • Endeksleme stratejisi Hızlı aramalar için.
  • Önbellekleme ve çoğaltma Yoğun trafiği idare etmek için.

Örnek: Sosyal medya uygulamalarında, kullanıcı verileri ve gönderiler, bağımlılığı azaltmak ve sorgu performansını iyileştirmek için ayrı ayrı saklanabilir. Şema tasarım kararları şunlarla uyumlu olmalıdır: erişim kalıpları ve sorgu sıklığı.


18) Mikro hizmet mimarisinin avantajları ve dezavantajları nelerdir?

Mikro hizmetler modern bulut uygulamalarının omurgası haline geldi, ancak beraberinde bazı dezavantajlar da getiriyorlar.

Avantajlar Dezavantajlar
Bağımsız dağıtım ve ölçeklendirme Artan operasyonel karmaşıklık
Arıza izolasyonu ve dayanıklılık Dağıtılmış hata ayıklama daha zordur.
Teknolojinin daha kolay benimsenmesi Güçlü bir DevOps kültürü gerektirir.
Daha iyi kod bakımı Ağ atlamaları nedeniyle daha yüksek gecikme süresi

Mikroservisler, büyük ve sürekli gelişen sistemler için idealdir ancak sağlam izleme, API ağ geçitleri ve servisler arası iletişim stratejileri gerektirir.


19) Büyük ölçekli bir sistemde veritabanı çoğaltmayı nasıl ele alırdınız?

Veritabanı çoğaltma Veri kullanılabilirliğini ve okuma performansını artırmak için birincil veritabanından bir veya daha fazla kopyaya veri kopyalamayı içerir. İki ana türü vardır:

Çoğaltma Türü Açıklama Kullanım çantası
Syncküstah Değişiklikler kopyalara anında yazılır. Güçlü tutarlılık
eşzamanlı olmayan Birincil sunucu, çoğaltma sunucuları güncellenmeden önce yazma işlemini onaylar. Daha iyi performans

Çoğaltma geliştirir hata toleransı, sağlar coğrafi dağılımve destekler okuma ölçeklendirmesi (kopyaları okuyun). Ancak, çoğaltma gecikmesi ve çakışma çözümü gibi zorluklar ortaya çıkarır. Araçlar gibi MySQL Grup Çoğaltma, MongoDB Replika Setleri, ve PostgreSQL akışlı çoğaltma Bunlar standart çözümlerdir.


20) Olay odaklı mimari nedir ve en çok nerede kullanışlıdır?

Olay odaklı mimari (EDA), bileşenlerin olaylar aracılığıyla iletişim kurduğu bir tasarım paradigmasıdır. olaylar — Durum değişikliklerini veya eylemleri bildiren mesajlar. Doğrudan istekler yerine, hizmetler olayları eşzamansız olarak yayınlar ve bunlara abone olur.

Bu tasarım şunlar için idealdir: gevşek bağlı sistemlerNesnelerin interneti (IoT) platformları, e-ticaret ve gerçek zamanlı analiz sistemleri gibi.

Faydaları:

  • Yüksek ölçeklenebilirlik
  • Ayrıştırılmış bileşenler
  • Gerçek zamanlı yanıt verme

Örnek: Uber'in mimarisinde, bir yolculuk rezervasyonu yapıldığında, fiyatlandırma, sürücü eşleştirme ve bildirim sistemlerinde eş zamanlı olarak güncellemeler tetiklenir; bunların hepsi sıkı bir bağlantı olmaksızın gerçekleşir.


21) Sistem tasarımında idempotansiyel nedir ve neden önemlidir?

İdempotenslik Bu, aynı işlemi birden fazla kez gerçekleştirmenin şu anlama geldiği demektir: bir kez yapmanın etkisiyle aynıBu, arızalar veya ağ gecikmeleri nedeniyle isteklerin yeniden denenebileceği dağıtılmış sistemlerde güvenilirliği sağlar.

Örneğin:

  • GET ve SİL İstekler doğal olarak idempotenttir (tekrarlanmaları durumu değiştirmez).
  • POST İstekler (örneğin işlem oluşturma gibi) özel olarak tasarlanmadıkça idempotent değildir.

İdempotansiyel özelliği uygulamak için:

  • Kullanım benzersiz istek kimlikleri Yinelenen gönderimleri takip etmek için.
  • Sürdürmek işlem günlüğü Tekrarlanan işlemleri göz ardı etmek.

Bu ilke son derece önemlidir. ödeme ağ geçitleri, sipariş düzenleniyor, ve e-posta sistemleri Burada tekrarlanan işlemler ciddi tutarsızlıklara yol açabilir.


22) Nihai tutarlılık kavramını bir örnekle açıklayın.

Nihai tutarlılık Dağıtılmış veritabanlarında güncellemelerin tüm düğümlere anında görünür olmadığı bir modeldir, ancak Sistem zamanla tutarlı bir duruma yakınsar..

Örnek:

In Amazon'S DynamoDBBir bölgede bir öğe güncellendiğinde, diğer bölgelerdeki kopyalar geçici olarak eski verilere sahip olabilir. Ancak, arka plan çoğaltma işlemi sayesinde sonunda senkronize olurlar.

Bu model, önceliklendirme sistemlerinde faydalıdır. kullanılabilirliği tekrar sıkı tutarlılık, Örneğin:

  • Sosyal medya zaman çizelgeleri
  • Önbellekleme sistemleri
  • DNS kayıtları

Temel denge noktası şunlar arasında yatmaktadır: bayatlık toleransı ve tepki hızı.


23) Birden fazla kanalı (e-posta, SMS, anlık bildirim) destekleyen bir bildirim sistemini nasıl tasarlardınız?

Ölçeklenebilir bir bildirim sistemi tasarlamak, modülerlik ve esneklik gerektirir.

Archidoku:

  1. Bildirim API – Uygulamalardan gelen bildirim isteklerini alır.
  2. Kuyruk/Mesaj Veri Yolu – Olayları depolar ve dağıtır (Kafka, SQS).
  3. İşçi Hizmetleri – Kanala özgü işlemciler (E-posta, SMS, Anlık Bildirim).
  4. Teslimat Sağlayıcıları – Twilio veya Firebase gibi harici API'lerle entegre olun.
  5. Kullanıcı Tercihleri ​​Veritabanı – Katılım/katılım dışı bırakma ayarlarını ve sıklık tercihlerini saklar.

Kilit hususlar:

  • Başarısız teslimatları geri çekilme stratejileriyle yeniden deneyin.
  • Tutarlılık sağlamak için şablonlar kullanın.
  • Önceliklendirmeyi destekleyin (acil ve düşük öncelikli mesajlar).

Bu modüler tasarım, yeni bildirim kanalları ortaya çıktıkça güvenilirlik ve genişletilebilirlik sağlar.


24) Veritabanı indeksleme nedir ve performansı nasıl etkiler?

A veritabanı dizini Veritabanının taradığı kayıt sayısını azaltarak sorgu hızını artıran bir veri yapısıdır (genellikle B-ağacı veya karma tablo).

Örneğin, bir kullanıcı tablosundaki e-posta sütununu indekslemek, veritabanı motorunun tüm tabloyu taramadan kullanıcıları e-postalarına göre hızlı bir şekilde bulmasını sağlar.

Görünüş İndeks ile İndekssiz
Sorgu hızı Hızlı aramalar Yavaş ardışık taramalar
yazma hızı Daha yavaş (dizin güncellemeleri gerekiyor) Daha hızlı yazma
Depolama Daha fazla disk alanı Less hafızası

İndeksler okuma performansını artırır ancak yavaşlatabilecekleri için dikkatli kullanılmalıdır. yazma ağırlıklı bakım maliyetleri nedeniyle sistemler.


25) Büyük ölçekli dağıtık bir sistemde hata toleransını nasıl sağlarsınız?

Arıza toleransı Bu, bir sistemin bileşenler arızalandığında bile çalışmaya devam etmesi anlamına gelir. Bu, yedeklilik, izleme ve otomatik kurtarma yoluyla sağlanır.

Stratejiler şunları içerir:

  • çoğaltma: Bölgeler arasında yinelenen veriler veya hizmetler.
  • Yedekleme mekanizmaları: İstekleri otomatik olarak sağlıklı düğümlere yönlendirin.
  • Sağlık kontrolleri ve yük dengeleyiciler: Hatalı örnekleri tespit edin ve izole edin.
  • Devre kesiciler: Bağımlı hizmetler arasında zincirleme arızaların önlenmesi.

Örnek: Netflix"Chaos Monkey" adlı yazılım, dayanıklılığı test etmek amacıyla üretim ortamındaki örnekleri kasıtlı olarak kapatıyor; bu, hata toleransı prensiplerinin gelişmiş bir uygulamasıdır.


26) Dağıtılmış sistemlerde senkron ve asenkron iletişim arasındaki fark nedir?

Özellikler SyncKronik İletişim Eşzamansız İletişim
Bağımlılık Gönderici yanıt bekliyor. Gönderici bağımsız olarak hareket eder.
Örnekler HTTP REST API çağrıları Mesaj kuyrukları, Kafka
Gecikme Daha yüksek (engelleme) Algılanan gecikme süresinin düşük olması
Güvenilirlik Başarısızlıklar altında düşüş Daha yüksek (mesajlar kalıcı olabilir)

SyncZamansal sistemler daha basittir ancak birbirine sıkıca bağlıdır, oysa asenkron sistemler ölçeklenebilirliği ve hata izolasyonunu iyileştirir.

Örneğin, bir e-ticaret sisteminde sipariş işleme süreci eşzamansız olabilir, ancak anında kullanıcı geri bildirimi sağlamak için ödeme onayının eşzamanlı kalması gerekir.


27) Dağıtılmış bir API sistemi için hız sınırlayıcıyı nasıl tasarlardınız?

Dağıtılmış hız sınırlayıcı, birden fazla sunucu arasında adil API kullanımını sağlar.

Yaklaşımlar:

  1. Jeton Kovası Algoritması – Her kullanıcıya zamanla yenilenen jetonlar verilir.
  2. Sızdıran Kova Algoritması – Talepler istikrarlı bir hızda işlenmektedir.
  3. Merkezi Sayaç (örneğin, Redis) – Kullanıcı başına istek sayısını tutar.

Uygulama örneği:

  • Redis atomik sayaçlarını TTL ile kullanın.
  • Kullanıcı anahtarına göre istek zaman damgalarını takip edin.
  • Eşik değerlerini aşan istekleri reddedin.

Hız sınırlaması engeller taciz, DoS saldırıları, ve beklenmedik maliyet artışlarıBu sayede, tüm müşterilerde tutarlı hizmet kalitesi sağlanmaktadır.


28) Dağıtılmış uzlaşma algoritması nedir ve neden gereklidir?

Dağıtılmış uzlaşma algoritmaları, bir sistemdeki birden fazla düğümün aynı fikirde olmasını sağlar. tek bir veri değeri üzerinde anlaşmakHatta arızalar meydana geldiğinde bile.

Yaygın algoritmalar:

  • Paxos
  • Raft
  • not: (ZooKeeper'da kullanılır)

Bunlar, sürdürülebilirlik için gereklidir. lider seçimi, durum çoğaltma, ve veri tutarlılığı Dağıtılmış veritabanlarında ve Kubernetes gibi küme yöneticilerinde.

Örnek: Raft, düğümlerin çökmesi durumunda bile güvenilirliği garanti altına alarak, tüm düğümlerin durum makinelerine uygulamadan önce günlük kayıtları üzerinde anlaşmasını sağlar.


29) Mikro hizmetler için bir günlük kaydı ve izleme sistemini nasıl tasarlardınız?

Dağıtılmış sistemlerin izlenmesi, sorunları tespit etmek ve çözmek için merkezi gözlemlenebilirliğe ihtiyaç duyar.

Ana bileşenler:

  • Kerestecilik: Aşağıdaki gibi araçlar kullanarak tüm servislerden günlük kayıtlarını toplayın. Fluentd or Logstash.
  • Metrik: Performans göstergelerini (CPU, bellek, istek gecikmesi) izlemek için Prometheus veya Datadog kullanın.
  • İzleme: Servisler arası istek yollarını izlemek için dağıtılmış izleme (Jaeger, Zipkin) uygulayın.
  • uyarı: PagerDuty'de uyarıları tetiklemek için eşik değerleri ayarlayın veya Slack.

En iyi pratik:

Kullanım korelasyon kimlikleri Üretim sorunlarını gidermek için çok önemli olan, tek bir kullanıcı isteğinin birden fazla mikro hizmet genelinde izlenmesi.


30) Yüksek kullanılabilirlik (HA) sistemi oluşturmak için temel tasarım hususları nelerdir?

A Yüksek Kullanılabilirlik (HA) Sistem, arıza sürelerini en aza indirir ve kesintisiz hizmet sağlar.

Ana Tasarım Faktörleri:

  1. fazlalık: Her bileşen için birden fazla sunucu kullanın.
  2. Tek hata noktalarını (SPOF) ortadan kaldırın.
  3. Otomatik yük devretme: Kesintiler sırasında trafiği yeniden yönlendirin.
  4. Veri çoğaltma: Bölgeler genelinde veri kalıcılığını sağlayın.
  5. Sağlık izleme: Sağlıksız düğümleri otomatik olarak tespit edin ve değiştirin.
  6. Olağanüstü durum kurtarma (DR): Yedeklemeleri ve coğrafi çoğaltmayı uygulayın.

Örnek: AWS, hizmetlerini Kullanılabilirlik Bölgeleri (AZ'ler) genelinde dağıtır ve otomatik arıza durumunda devreye girme için Elastik Yük Dengeleyiciler kullanır; bu da %99.99 çalışma süresi SLA'larını garanti eder.


🔍 Sistem Tasarımı Mülakatlarında En Sık Sorulan Sorular, Gerçek Dünya Senaryoları ve Stratejik Yanıtlar

1) Büyük ölçekli dağıtık bir sistemi sıfırdan tasarlamaya nasıl yaklaşırsınız?

Adaydan beklenenler: Mülakatçı, yapılandırılmış düşünme biçiminizi, gereksinimleri netleştirme yeteneğinizi ve karmaşık sorunları yönetilebilir bileşenlere nasıl ayırdığınızı anlamak istiyor.

Örnek cevap: “Öncelikle ölçeklenebilirlik, kullanılabilirlik ve gecikme süresi gibi işlevsel ve işlevsel olmayan gereksinimleri netleştirerek başlıyorum. Ardından üst düzey bir mimari taslağı oluşturuyor, temel bileşenleri belirliyor, veri akışını tanımlıyor ve uygun teknolojileri seçiyorum. Bundan sonra, tasarımı iyileştirmeden önce darboğazları, arıza senaryolarını ve ödünleşmeleri değerlendiriyorum.”


2) Yatay ve dikey ölçeklendirme arasındaki farkı ve hangisini ne zaman kullanacağınızı açıklayabilir misiniz?

Adaydan beklenenler: Mülakatçı, ölçeklenebilirlik konusundaki temel bilginizi ve doğru stratejiyi gerçek dünya sistemlerinde uygulama yeteneğinizi test ediyor.

Örnek cevap: “Dikey ölçeklendirme, tek bir makineye daha fazla kaynak eklemeyi içerirken, yatay ölçeklendirme yükü karşılamak için daha fazla makine eklemeyi içerir. Dikey ölçeklendirme daha basittir ancak sınırlıdır, yatay ölçeklendirme ise daha karmaşıktır ancak daha iyi hata toleransı ve uzun vadeli ölçeklenebilirlik sunar.”


3) Bir sistem tasarımında yüksek kullanılabilirliği nasıl sağlarsınız?

Adaydan beklenenler: Mülakatçı, yedeklilik, arıza durumunda devreye girme mekanizmaları ve sistem dayanıklılığı konusundaki anlayışınızı değerlendirmek istiyor.

Örnek cevap: “Önceki görevimde, yük dengeleyiciler kullanarak, hizmetleri birden fazla kullanılabilirlik bölgesine dağıtarak, sağlık kontrolleri uygulayarak ve mümkün olan yerlerde durumsuz hizmetler tasarlayarak yüksek kullanılabilirliği sağladım. Bu stratejiler, tek hata noktalarını azalttı.”


4) Tutarlılık ve erişilebilirlik arasında bir denge kurmak zorunda kaldığınız bir durumu anlatın.

Adaydan beklenenler: Mülakatçı, CAP teoremi hakkındaki anlayışınızı ve kısıtlamalar altında karar verme yeteneğinizi değerlendiriyor.

Örnek cevap: “Önceki görevimde, düşük gecikme süresinin kritik önem taşıdığı bir sistem üzerinde çalıştım. Ağ kesintileri sırasında kullanılabilirliği korumak için güçlü tutarlılık yerine nihai tutarlılığı tercih ettik; bu da iş kullanım senaryosu için kabul edilebilirdi.”


5) Belirli bir sistem için hangi veritabanını kullanacağınıza nasıl karar veriyorsunuz?

Adaydan beklenenler: Mülakatçı, veri depolama tercihlerinizi sistem gereksinimleriyle nasıl uyumlu hale getirdiğinizi görmek istiyor.

Örnek cevap: “Veri erişim modellerini, tutarlılık gereksinimlerini, ölçeklenebilirlik ihtiyaçlarını ve sorgu karmaşıklığını değerlendiriyorum. İlişkisel veritabanları yapılandırılmış veriler ve işlemler için iyi çalışırken, NoSQL veritabanları yüksek verimlilik ve esnek şemalar için daha uygundur.”


6) Ani trafik yoğunluğunu yönetmek için nasıl bir sistem tasarlardınız?

Adaydan beklenenler: Mülakatçı, ölçeklenebilirlik ve öngörülemeyen yük durumlarına yönelik tasarım yeteneğinizi test ediyor.

Örnek cevap: “Otomatik ölçeklendirme grupları, yük dengeleyiciler ve bellek içi depolama gibi önbellekleme katmanları kullanırdım. Önceki görevimde bu teknikler, sistemin performansı etkilemeden trafik artışlarını absorbe etmesini sağladı.”


7) Önbellekleme sistem tasarımında ne gibi bir rol oynar ve nerede uygulardınız?

Adaydan beklenenler: Mülakatçı, performansı nasıl optimize ettiğinizi ve temel hizmetler üzerindeki yükü nasıl azalttığınızı anlamak istiyor.

Örnek cevap: “Önbellekleme, yanıt süresini iyileştirir ve veritabanı yükünü azaltır. Kullanım senaryosuna bağlı olarak istemci tarafı, CDN, uygulama düzeyi ve veritabanı sorgu önbelleklemesi dahil olmak üzere birden fazla katmanda uygulanabilir.”


8) Veri bölümleme ve parçalama işlemlerini nasıl yönetiyorsunuz?

Adaydan beklenenler: Mülakatçı, verileri yatay olarak ölçeklendiren sistemler tasarlama yeteneğinizi değerlendiriyor.

Örnek cevap: “Verileri eşit şekilde dağıtan ve bölümler arası sorguları en aza indiren bir bölümleme anahtarı seçiyorum. Ayrıca, sistem büyüdükçe darboğazlardan kaçınmak için yeniden bölümlemeyi planlıyor ve veri dağıtımını izliyorum.”


9) Sistem izlemenin bir tasarım kararını etkilediği bir durumu açıklayın.

Adaydan beklenenler: Mülakatçı, gözlemlenebilirlik yöntemini sistem güvenilirliğini ve performansını artırmak için nasıl kullandığınızı görmek istiyor.

Örnek cevap: "Gecikme ve hata oranları gibi ölçümleri izlemek, bir API hizmetinde darboğaz olduğunu ortaya çıkardı. Bu bulguya dayanarak, hizmeti eşzamansız olacak şekilde yeniden tasarladım ve bu da verimliliği önemli ölçüde artırdı."


10) Karmaşık sistem tasarımlarını teknik olmayan paydaşlara nasıl iletiyorsunuz?

Adaydan beklenenler: Mülakatçı, iletişim becerilerinizi ve teknik kararları iş hedefleriyle uyumlu hale getirme yeteneğinizi değerlendiriyor.

Örnek cevap: “Yüksek seviyeli kavramlara odaklanıyorum, diyagramlar kullanıyorum ve teknik bileşenleri iş sonuçlarıyla ilişkilendiriyorum. Bu yaklaşım, paydaşların teknik ayrıntılarda kaybolmadan tasarımın değerini ve etkisini anlamalarına yardımcı oluyor.”

Bu yazıyı şu şekilde özetleyin: