Biraz geç oldu ama kaldığımız yerden devam edelim. Bir önceki yazılarda dağıtık sistemlerdeki yanılgılardan bahsetmeye başlamıştım. İlk 4 tanesini bitirmiş, geri kalanlarının üstünden de bir sonraki yazıda geçeceğimi belirtmiştim…İşte bir sonraki yazı.

8fallacies

5- Topoloji değişmez

(Topology doesn’t change)

NetworkTopologySistemleri oluştururken, ilk tasarımımız hiç değişmeyeceğini düşünmek bu yanılgıya düşmemizin en büyük sebebi. Hiç müdahale etmesek bile zaman faktörü bu değişikliğe sebep olacaktır. Bundan dolayı sistem tasarımlarımızı yaparken dış etkenlere dikkat etmemiz gerekir. IP değişiklikleri, hatta biraz daha kapsamlısı network değişiklikleri, firewall benzeri güvenlik katmanları ve benzeri fiziksel parçalar dağıtık sistemler tasarlarken mutlaka dikkat etmemiz gereken konular. Bu tarz fiziksel yapıların ayrılmış ve soyutlanmış olması çok önemli.  En basitinden “hard-coded” IP adresleri kullanıyor olmamız, değişen network’de problem yaratacaktır. Dolayısıyla DNS isimleri tercih edilmeli. İletişim protokolü olarak, daha esnek yapıların(mesela multicast) tercih edilmesi topolojideki değişikliklerden minimum derecede etkilenmemiz sağlayacaktır.

6- Sadece bir tane yönetici vardır

(There is one administrator)

system-admin-horrorKüçük sistemlerde belki bir tane “admin” gerçekten(?) vardır. Ama sistemler büyüdükçe ve dağıtık bir yapı oluştuğu zaman, bu sistemlerde yetkili olan; “admin” rolündeki kişi sayısıda artar. Bunun farkında olmadan, sistemin bir parçasında yapılan bir değişiklik ciddi sıkıntılara yol açabilir. Dolayısıyla sistemleri tasarlarken, birden fazla farklı sistem yöneticisi olabileceğinin farkında olmak lazım. Sistemin farklı bileşenlerine yapılan güncellemeler ya da patch geçişleri, geçildiği bileşeni iyileştirebileceği gibi o bileşeni kullanan diğer parçaları olumsuz etkileyebilir. Tabi bir sistemde ne kadar çok “admin” varsa o sistemde kordineli bir çalışma yapmak o kadar zordur. LDAP ya da Domain’de yapılan bir değişiklik, uygulama sunucusundaki “Authentication” modunu etkileyebileceği için, bu tarz değişiklikler tüm sistem yöneticilerinin kordineli çalışmasıyla yapılmalıdır.

 

7- Veri aktarım maliyeti sıfırdır.

(Transport cost is zero)

Veri aktarım maliyeti sıfır olsaydı gerçekten, “leased line” kavramı hayatımızda olmazdı. Dağıtık sistemlerin en önemli noktalarından biri, sistemler arasındaki verinin taşınmasının kolay olmadığı. Firmalar, dağıtık olarak tasarlardıkları sistemleri için özel network’ler kurup, network seviyesinde izole olmak için binlerce dolar harcıyor.  En basitinden böyle düşünürken maliyet sıfır değil. Ama buradaki maliyet sadece bu değil.  Günümüzde artık veri aktarırken 1sn.’nin üzerinde bir zaman problem olabiliyor. Bu zaman kavramı işte maliyetin diğer bir ayağı. Mesela network’de taşınan verinini serialization ve deserialization işlemlerinin uzun sürmesi(-ki uzun sürer) bu zaman maliyeti için önemli bir noktadır. Ama çok farkında olmayız… Bu noktada hem yazılım, hem donanım maliyetlerine dikkat edebildiğimiz, kontrol edip yönetebildiğimiz sistemler tasarlayabilmek önemli. Her ne kadar donanımsal olarak ölçeklendirebilsekte, aynı şekilde yazılımsal olarakta ölçeklendirebileceğimiz aktarım yöntemlerini düşünmemiz mutlaka gerekecektir.

8- Ağ homojendir

(The network is homogeneous)

Günümüzde artık hiç bir network homojen değil.  Tüm sistemlerin homojen olabileceği yanılgısına sanırım artık kimse düşmüyordur. Düşen varsa da, umarım biran önce farkına varır gerçeklerin. Artık öyle bir zamandayız ki, sistemlerin bir kısmı Java olurken, başka bir kısmı .NET, başka bir kısmı ise node.js olabiliyor. Veri platformu olarak Oracle tercih eden bir sistem, NoSQL veri platformunda herhangi bir ürünü kullanan sistemle beraber çalışabiliyor. SOAP mesajları alan bir sistem, başka biriyle JSON ile konuşuyor. Dolasıyla sistemleri tasarlarken bu gerçeklerin farkında olmak lazım. .NET’in ilk zamanlarında *.asmx servislerinin java ile uyumsuzluğu bir çok kişinin yaşamış olduğu bir problemdir diye düşünüyorum. Dağıtık sistemlerin farklı özelliklere sahip bileşenler ile geliştirilebileceğini ve bu bileşenlerin birlikte çalışabilmesinin sağlanması oldukça önemli. Yoksa dağıtık sistem olmasının bir önemi olmuyor zaten…

Umarım biraz olsun faydalı olmuştur ve bazı noktalara neden dikkat etmemiz gerektiğini anlatabilmişimdir. Daha az yanılgıya düştüğümüz sistemler dileyerek kapatalım konuyu…Kapattık…