DevOps

Production mimari diyagramı: bulutta gerçekten çalışanı nasıl çizersin

Tasarım dokümanındaki mimari ile production'da gerçekten çalışan mimari nadiren aynı resimdir. Gerçek production mimari diyagramını nasıl çizeceğin burada: trafik yolu, hata alanları, ölçekleme sınırları ve yalnızca sistem canlı olduğu için var olan parçalar.

Herkesin çizdiği diyagram mutlu yol diyagramıdır: kullanıcı uygulamaya gelir, uygulama veritabanına gider, bitti. Beyaz tahta için yeterli, bir sistemi işletmek için işe yaramaz. Production'ın şekli farklıdır, çünkü production trafik dalgalanmalarından, node arızalarından, deploy'lardan ve arada bir yaşanan kötü öğleden sonralardan sağ çıkmak zorundadır. Diyagramı operasyonel bir araca dönüştüren şey, o düzgün eskizi değil bu gerçekliği görselleştiren bir production mimari diyagramıdır.

İşin sırrı "ne neyle konuşuyor" çizmeyi bırakıp üst üste binen üç görünüm çizmeye başlamak: trafik yolu, hata alanları ve ölçekleme sınırları. Production diyagramlarının çoğu, üçünü birden hiçbir amaç gütmeden göstermeye çalıştığı için bulanıktır. Onları bilinçli çiz; resim gece 3'te gerçekten üzerinde düşünebileceğin bir şeye dönüşür.

Birinci görünüm: trafik yolu

Dış dünyadan veriye ve geri giden tek bir isteği izle ve gerçekten attığı her adımı çiz. Production'da bu yol, eskizin kabul ettiğinden uzundur:

  • Önde bir CDN ya da edge; cache isabetlerini origin'in onları hiç görmesine fırsat vermeden sunar.
  • Trafiği instance'lar arasında dağıtan bir load balancer.
  • Tek bir kutu değil, bir stateless uygulama sunucuları katmanı.
  • Okumaların çoğunun veritabanından önce isabet ettiği bir cache.
  • Yazmalar için bir primary veritabanı, geri kalanı için read replica'lar.
  • Bir asenkron yol: satır içinde yapılmaması gereken işler için bir kuyruk ve worker'lar.
CDN balancer app app cache primary replica queue worker
Production trafik yolu eskizden uzundur: edge, balancer, bir uygulama katmanı, bir cache, primary ve replica, bir de asenkron şerit.

İkinci görünüm: hata alanları diyagramı

Şimdi her şeyi "birlikte çöken neler" ölçütüne göre gruplayan çizgileri çiz. Availability zone'lar en bariz olanı: iki ya da üç sütun ve uygulama katmanınla veri katmanın bunlara yayılmış; böylece bir zone kesintisi seni çökertmez. Ama hata alanları zone'lardan daha geniştir. Paylaşılan bir cache bir alandır. Tek bir primary veritabanı bir alandır. Kuyruk bir alandır. Bu sınırları çizmek tekil hata noktalarını gözden kaçırılamaz kılar, çünkü her şeyin ona bağlı olduğu ve yanında eşi olmayan kutu olarak ortaya çıkarlar.

Bir production diyagramı, kaybetmeyi göze alamayacağın kutuyu sana gösterdiği an kendini amorti eder.

Üçüncü görünüm: ölçekleme sınırları

Neyin nasıl ölçeklendiğini işaretle. Uygulama katmanı yatay ölçeklenir; onu sabit bir çift olarak değil, büyüyen bir grup olarak çiz. Veritabanı farklı ölçeklenir: yazmalar için dikey, okumalar için replica'larla yatay. Bu asimetriyi göstermeye değer, çünkü production sistemleri duvara tam orada çarpar. Autoscaling grupları, kuyruk derinliğine göre büyüyen worker havuzları ve sabit kapasiteli her bileşen görünür bir notu hak eder. Ölçekleme hikâyesi kapasite planlamasının yarısıdır ve bu görünümde yaşar.

Yalnızca prod'da var olan parçaları unutma

Tasarım dokümanı bunları dışarıda bırakır; production bırakamaz. Gözlemlenebilirlik (metrikler, loglar, trace'ler) neredeyse her bileşene dokunur. Secret'lar ve config bir yerden gelir. İnsanlar için bir bastion ya da özel bir erişim yolu vardır. Yedeklemeler veri katmanına karşı çalışır. Hepsini tek bir diyagramda çizmen gerekmez, çizmemelisin de; ama bunların hepsini atlayan bir production resmi kurgudur. Önemli olanlara bir kutu ver.

İpucu. Temel diyagramı altyapı kodundan üret, sonra üç görünümü renk ve gruplamayla üstüne katmanla. Makine sana doğru iskeleti verir; onun çıkaramayacağı operasyonel anlamı sen eklersin.

Güncel tut, yoksa yalan söyler

Bir production diyagramı ancak production ile örtüşüyorsa işe yarar ve production sürekli değişir. Kayan bir çizimi özenle elle güncellemek yerine onu Terraform'undan ya da manifestlerinden türetmenin ve düzenli aralıklarla yeniden üretmenin gerekçesi budur. Üretilen iskeleti notlarınla eşleştir, runbook'a göm ve altyapı değiştikçe yenile. Güncel bir production diyagramı, bir ekibin sahip olabileceği en yüksek kaldıraçlı dokümanlardan biridir.

Trafik yolunu çiz, hata alanlarını işaretle, ölçekleme sınırlarını göster ve tabanı gerçek altyapıdan üret ki dürüst kalsın. Bir olay sırasında gerçekten açık olmasını istediğin diyagram budur.

Gerçekten çalışan mimariyi çiz

İskeleti altyapından üret, sonra trafik yolunu, hata alanlarını ve ölçeklemeyi tek bir net resimde katmanla.

LetDraw'u ücretsiz aç