Dahili ağlar genellikle 1 Gbps bağlantı veya daha hızlı kullanır. Optik fiber bağlantıları veya bağlar sunucular arasında çok daha yüksek bant genişliğine izin verir. Şimdi bir API'den gelen bir JSON yanıtının ortalama boyutunu düşünün. Bir saniye içinde 1 Gbps bağlantı üzerinden bu tür yanıtların ne kadarı iletilebilir?
Aslında matematik yapalım. 1 Gb / sn, saniyede 131 072 KB'dir. Ortalama bir JSON yanıtı 5 KB ise (bu oldukça fazladır !), Yalnızca bir çift makineyle kablo üzerinden saniyede 26 214 yanıt gönderebilirsiniz . Fena değil, değil mi?
Bu yüzden ağ bağlantısı genellikle tıkanıklık değildir.
Mikro-servislerin diğer bir yönü de kolayca ölçeklenebilmenizdir. Biri API'yi barındıran, diğeri onu kullanan iki sunucu düşünün. Bağlantı bir tıkanıklık olursa, iki sunucu daha ekleyin, performansı iki katına çıkarabilirsiniz.
Bu, saniyede önceki 26 214 yanıtımızın uygulamanın ölçeği için çok küçük olması durumudur. Diğer dokuz çift eklediniz ve şimdi 262 140 yanıt sunabiliyorsunuz.
Fakat haydi sunucularımıza geri dönelim ve bazı karşılaştırmalar yapalım.
Veritabanına önbelleğe alınmamış ortalama bir sorgu 10 ms sürerse, saniyede 100 sorgu ile sınırlandırılırsınız. 100 sorgu. 26 214 cevap. Saniyede 26 214 yanıtın hızını elde etmek, büyük miktarda önbelleğe alma ve optimizasyon gerektirir (eğer yanıt gerçekten bir şeyi yapmak istiyorsa, bir veritabanını sorgulamak gibi; "Merhaba Dünya" tarzı cevaplar uygun değildir).
Bilgisayarımda, şu anda, Google’ın giriş sayfası için DOMContentLoaded 394 msndı. istek gönderildikten sonra. Bu saniyede 3 istekden az. Programcılar için ana sayfa, 603 ms oldu. istek gönderildikten sonra. Saniyede 2 istek bile yok. Bu arada, 100 Mbps internet bağlantım ve hızlı bir bilgisayarım var: birçok kullanıcı daha uzun süre bekleyecek.
Darboğaz, sunucular arasındaki ağ hızıysa, bu iki site, sayfayı sunarken farklı API'lere binlerce çağrı yapabilir.
Bu iki olgu ağ muhtemelen teoride senin darboğaz olmayacağını göstermektedir (pratikte, sen darboğaz tam yerini belirlemek için gerçek kriterler ve profil yapmalıyım sizin belirli bir donanım üzerinde barındırılan belirli sistem). Asıl işi yapmak için harcanan zaman (SQL sorguları, sıkıştırma, her neyse) ve sonucu son kullanıcıya göndermek çok daha önemlidir.
Veritabanlarını düşünün
Genellikle, veritabanları bunları kullanarak web uygulamasından ayrı olarak barındırılır. Bu bir endişeye yol açabilir: peki ya uygulamayı barındıran sunucu ile veritabanını barındıran sunucu arasındaki bağlantı hızı?
Aslında bağlantı hızının sorunlu hale geldiği, yani veritabanının kendisi tarafından işlenmesi gerekmeyen ve şu anda erişilebilir olması gereken büyük miktarda veri depoladığınızda (şu anda büyük ikili dosyalar) olması gereken durumlar olduğu anlaşılıyor. Ancak bu gibi durumlar nadirdir: çoğu durumda, aktarım hızı, sorgunun işlem hızına kıyasla çok büyük değildir.
Aktarım hızı gerçekten önemli olduğunda, bir şirket bir NAS üzerinde büyük veri setleri barındırıyorsa ve NAS'a aynı anda birden fazla müşteri tarafından erişiliyorsa. SAN bir çözüm olabilir burası. Bu söyleniyor, bu tek çözüm değil. Cat 6 kabloları 10 Gb / sn'ye kadar hızları destekleyebilir; bağlama, kabloları veya ağ adaptörlerini değiştirmeden hızı artırmak için de kullanılabilir. Birden fazla NAS'ta veri çoğaltmasını içeren başka çözümler de vardır.
Hızı unut; ölçeklenebilirlik hakkında düşün
Bir web uygulamasının önemli bir noktası ölçeklenebilmektir. Gerçek performans önemli olsa da (çünkü kimse daha güçlü sunucular için ödeme yapmak istemiyorsa) ölçeklenebilirlik çok daha önemlidir, çünkü gerektiğinde ek donanım atmanıza izin verir.
Özellikle hızlı bir uygulamanız yoksa, para kaybedersiniz, çünkü daha güçlü sunuculara ihtiyacınız olacaktır.
Ölçeklemeyen hızlı bir uygulamanız varsa, müşterileri kaybedersiniz, çünkü artan bir talebe cevap veremezsiniz.
Aynı şekilde, sanal makineler on yıl önce büyük bir performans sorunu olarak algılanmıştı. Gerçekten de, bir uygulamayı bir sunucuda barındırmak ve sanal bir makinede barındırmak önemli bir performans etkisi yarattı. Boşluk bugün çok daha küçük olsa da, hala var.
Bu performans kaybına rağmen, verdikleri esneklik nedeniyle sanal ortamlar çok popüler oldu.
Ağ hızında olduğu gibi, VM'nin gerçek darboğaz olduğunu ve gerçek skalanız olduğunu görebilirsiniz; uygulamanızı VM'ler olmadan doğrudan barındırarak milyarlarca dolar tasarruf edersiniz. Ancak uygulamaların% 99,9'unda böyle bir şey olmaz: darboğazları başka bir yerdedir ve VM nedeniyle birkaç mikrosaniyelik bir kaybın sakıncası, donanım soyutlama ve ölçeklenebilirliğin yararları ile kolayca telafi edilir.