Bir system design mülakatı çizim sınavı değildir, ama çoğu insan işi sessizce çizimde kaybeder; iyi bir system design mülakatı diyagramı bu yüzden önemlidir. İstemci için düzgün bir kutuyla başlarsın ve otuz dakika sonra tahta kesişen oklardan bir çalılığa, "service" etiketli üç şeye ve iki kez çizdiğin bir veritabanına dönüşür. Mülakatı yapan kişi takip etmeyi bırakır ve takip etmeyi bıraktığı an ikna olmayı da bırakır.
Çözüm baskı altında daha iyi çizmek değil. Çözüm, pratik yaptığın sabit bir sırayla çizmek; böylece dikkatin konuştuğun trade-off'larda kalırken resim kendi kendine oluşur. İşte işe yarayan sıra ve her adımı dakikalar yerine saniyeler içinde nasıl yapacağın.
Teslim edilen şey diyagram değil. Konuşmanın kendisi.
Mülakatı yapanlar dikdörtgenlerine not vermez. Belirsiz bir soruyu alıp bileşenlere ayırabildiğini ve önce neyin bozulacağı üzerine akıl yürütebildiğini izlerler. Diyagram bu konuşmayı ikiniz için de, gerçek zamanlı olarak okunur tutmak için vardır. Yani hedef, bitmiş bir resim değil her an okunabilir bir resimdir. Tahta her an netse sözlerinde yavaş ve düşünceli olmayı göze alabilirsin.
Bu, bir şey çizmeden önce iki kural demek. Çizerken konuş, asla sessizce çizme. Ve asla yeniden çizme; zaten orada olanı taşı ve genişlet. Araç oklarını senin yerine düzenli tuttuğunda ikisi de çok kolaylaşır; bunu ortak bir doküman yerine gerçek bir tuvalde çizmenin bütün sebebi de bu.
İstek yolu ile başla
Her tasarımın bir omurgası vardır: bir kullanıcının yaptığı tek bir isteğe o andan itibaren ne olduğu. "Ölçek" kelimesini ağzına almadan önce onu soldan sağa ilk olarak çiz. İstemci, edge, yanıt veren şey, hatırlayan şey. Beş kutu ve dört ok; şimdiden üzerine konuşacağın bir şey var.
Dikkat et, burada henüz zekice hiçbir şey yok ve mesele de bu. Mülakatı yapan kişiye ortak bir kelime dağarcığı verdin. Artık her ölçekleme kararı, sıfırdan anlatman gereken yeni bir çizim değil, ikinizin de zaten anladığı bir resimde yapılan küçük, görünür bir düzenleme.
Canlı ölçekle, her seferinde tek darboğaz
Mülakatın ilginç kısmı, sayılar büyüdüğünde neyi eklediğindir ve işin püf noktası onu omurgada ait olduğu yere eklemek, eklerken de nedenini söylemek. Süslemiyorsun; belirli bir baskıya yanıt veriyorsun. İstek yolunda yürü ve önce neyin çökeceğini sor.
- Okumalar mı baskın? Veritabanının arkasına read replica'lar, önüne bir cache koy. Cache'i ana hatta yeni bir durak olarak değil, API kutusundan çıkan bir sapak olarak çiz.
- Yazmalarda ani sıçramalar mı var? API'den sonra bir kuyruk, arkasına bir worker koy; böylece yavaş iş istek yolunun dışında olur. Artık diyagram senkron ve asenkronu açıkça farklı iki şekil olarak gösterir.
- Tek bölge yetmiyor mu? Tüm omurgayı bir kutuyla sar, bölge olarak etiketle ve kopyala. Replikasyon ve failover birden yaşayacak bir yer bulur.
- Tek bir tablo fazla mı ısınıyor? Veritabanı kutusunu shard'lara böl ve shard key hakkında iki kelime et. Bu tek düzenleme koca bir konuşmayı taşır.
Harika system design diyagramları çizilmez. Her seferinde görünür bir kararla büyütülür.
Konuşurken system design beyaz tahtasını okunur tut
Tahtaların düğüme dönmesinin sebebi, okların yoldaki her şeyin içinden geçen düz çizgiler olarak çizilmesidir. Gerçek bir tuvalde bunun yerine araçlara yaslanabilirsin. Akıllı oklar kullan; yeni bir ok mevcut kutuların üzerinden geçmek yerine etraflarından dolaşsın ve resim dolarken bile temiz kalsın. Birbirine ait parçaları (bölge, asenkron şerit, veri katmanı) etiketli kapsayıcılarda grupla; mülakatı yapan kişi sadece parçaları değil yapıyı da görsün. Bir bileşeni yeniden adlandırdığında bunu bir kez yap ve tüm referanslar takip etsin.
Bunların hiçbiri titizlikle ilgili değil. Aksi hâlde dağınıklık için özür dilemeye harcayacağın saniyeleri geri kazanıp onları yanıta harcamakla ilgili.
Resmi değil, sırayı çalış
Soruyu tahmin edemezsin, ama yanıtının şeklini tahmin edebilirsin: önce omurga, sonra canını yakma sırasına göre darboğazlar, en sonda da her şeyin etrafına bir sınır. Bu sırayı aynı tuvalde bir düzine kez prova et; kas hafızasına dönüşür. Oda sessiz ve saat gürültülüyken tam da istediğin şey budur. Sakin görünen adaylar daha hızlı çizmiyor. Daha önce yaptıkları bir sırayla çiziyorlar.
Boş bir tuval aç, beş kutuluk omurgayı çiz ve baskı eklemeye başla. Üçüncü pratikte diyagram düşüncenle savaşmak yerine ona ayak uyduracak.