Mühendislik

System design mülakatı diyagramı nasıl hızlı çizilir

Kırk dakikan var ve yarısı diyagrama ait. Odadaki dikkati kaybetmeden temiz, ölçeklenebilir bir system design mülakatı diyagramı çizmenin bir yolu burada.

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.

HTTPSroutequerycache Client Load balancer+ CDN / TLS API servicestateless x N DB Cache
Önce omurga: tek bir istek, soldan sağa. Mülakattaki diğer her şey bu çizgide yapılan bir değişikliktir.

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.

İpucu. Bir başlangıç panosunu bir kez kur ve her pratikte yeniden kullan: istemci, load balancer, stateless servis, cache, primary veritabanı. Bir deneme mülakatının başında onu çoğalt; her oturuma doğrudan ilginç kısımdan başlarsın.

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.

Bir sonraki system design'ını gerçek bir tuvalde çalış

İstek yolunu çiz, replica'ları ve kuyrukları canlı ekle; sen konuşurken akıllı oklar tahtayı temiz tutsun.

LetDraw'u ücretsiz aç