- Dağıtılmış uygulamalar, farklı sistem ve mimarilere sahip heterojen ortamlara olanak tanır. Avantajları arasında platform bağımsızlığı, kullanılabilirlik ve ölçeklenebilirlik yer alır.
- Makale, farklı teknikler ve çerçeveler kullanılarak farklı konfigürasyon, mimari ve modüler tasarım olanaklarını göstermektedir. Kubernetes tüm bunların merkezinde yer alıyor.
- Modüler ağdaki iletişim, sepet modeli olsun ya da olmasın servis ağı aracılığıyla izlenebilir, analiz edilebilir ve kontrol edilebilir.
- Adam Wiggins tarafından öne sürülen iyi bulut uygulamalarına ilişkin on iki ilke, büyük ölçüde dağıtılmış uygulamalar için de geçerlidir.
Dağıtılmış uygulamalar ve dağıtılmış sistemler, büyük ölçüde mikro hizmetler ve konteyner teknolojisindeki gelişmeler sayesinde, giderek daha popüler hale geliyor. İlgili teknik ilerlemeler, özerk ekiplerde bağımsız gelişime, dil ve çerçeve seçme özgürlüğüne ve ölçeklenebilirlik ve yük dengeleme yoluyla gelişmiş esnekliğe olanak tanır.
Duyuru
Matthias Haeussler, Novatec Consulting GmbH'de Cloud Native'e odaklanan Baş Teknoloji Uzmanıdır. Kendisi “Dağıtık Sistemler” profesörüdür ve uluslararası bilgisayar bilimi konferanslarında düzenli olarak konuşmacı olarak yer almaktadır.
Bu makale, modern, bulutta yerel yazılım teknolojilerini kullanarak dağıtılmış uygulama mimarilerini uygulamaya yönelik çeşitli yaklaşımları araştırıyor. Bir yandan bunlar, özellikle Java ortamında yaygın olarak kullanılan programlama dilleriyle bağlantılı çerçevelerdir. Öte yandan Kubernetes ve service mesh gibi hem geleneksel tarzda hem de sepetsiz yeni varyasyonlarda platformlar var.
İlk olarak, dağıtık uygulama mimarisinin neden anlamlı olduğu ve başarılı bir uygulama için hangi bileşenlere ihtiyaç duyulduğu sorusunun açıklığa kavuşturulması önemlidir. Adam Wiggins tarafından 2011'de yayınlanan 12 faktörlü uygulama ilkeleri aynı zamanda yönlendirme görevi de görmektedir (bkz. “12 faktörlü uygulama konsepti” kutusu).
2011 yılında Adam Wiggins 12 faktörlü uygulama konseptini başlattı. PaaS sağlayıcısı Heroku'nun kurucu ortağı, uygulamaları bulutta verimli bir şekilde yönetmek ve olanaklarından en iyi şekilde yararlanmak için uygulamalar geliştirmeye yönelik kanıtlanmış bir yaklaşımı (en iyi uygulamaları) anlattı. 12-Factor uygulaması, bir uygulama platformundan bağımsız, ölçeklenebilir ve ayrıntılı olarak yapılandırılabilir hale getirmeyi amaçlayan temel ilkeleri tanımlar. Ayrıca, ilkeler yalnızca buluta özgü yönleri değil aynı zamanda iyi yazılım geliştirmeye yönelik genel ilkeleri de içerir; örneğin bileşen başına merkezi bir sürüm kontrol sisteminin kullanılması ve kod ile bağımlılıklar arasında net bir ayrım yapılması. Geliştiriciler, on iki prensibi takip ederek, uygulamalarının bulut altyapısıyla iyi bir şekilde uyumlu olmasını sağlar ve platformun avantajlarından yararlanır.
Aşağıdaki faktörler özellikle dikkat çekicidir:
- Faktör 3: “Yapılandırma” (konfigürasyon ve kodun ayrılması): Yapılandırma ve kodun ayrılması, bir yandan uygulamanın yeniden derleme olmadan esnek bir şekilde uyarlanmasına, diğer yandan farklı ortamlarda farklı konfigürasyonlarla kullanılmasına olanak tanır.
- Faktör 6: “Süreçler” (durumsuzluk ve ölçeklenebilirlik): Durumsuz süreçler, uygulama ölçeklenebilirliğini ve yönetimini basitleştirir çünkü süreçlerin önceki durumları hakkında bilgi depolamasına gerek yoktur.
- Faktör 7: “Bağlantı Noktası Bağlama” (bağlantı noktaları ve ağ iletişimi): Standartlaştırılmış ağ protokollerinin kullanılması, bileşenler arasındaki etkileşimi basitleştirir ve farklı ortamlara kolay entegrasyona olanak tanır.
- Faktör 11: “Günlükler” (akış olarak günlükler): Günlüklerin akış olarak ele alınması, dağıtılmış uygulamaları yönetirken daha verimli hata analizine ve sorun gidermeye olanak tanır. 12 faktörlü uygulama ilkeleri, modern uygulamaları dinamik ve çevik bir ortamda başarıyla yönetmek için Heroku'nun ötesinde Cloud Foundry, Spring Boot, Docker ve Kubernetes gibi sistemlerde kullanılır.
Neden dağıtılmış sistemler?
Yazılım mimarisine yönelik geleneksel monolitik yaklaşımın birçok kişi tarafından geçerliliğini yitirdiği düşünülmektedir. Özellikle dağıtılmış sistemlerin ve mikro hizmet mimarilerinin savunucuları sıklıkla “Büyük Çamur Topu”ndan küçümseyici bir şekilde söz ederler. Ancak modern kabul edilen dağıtılmış yaklaşımlar bile, Peter Deutsch'un 1994'te “Dağıtılmış hesaplamanın hataları” adlı eserinde özetlediği gibi, bugüne kadar geçerliliğini kaybetmemiş, sorunlardan muaf değildir.
Özellikle, bir uygulamayı farklı modüllere bölmek, bileşenler arasında bir ağ bağımlılığı ortaya çıkarır ve bu da gecikmeyi, yapılandırmayı ve hata işlemeyi etkiler. Ancak bazı senaryolarda bu mantıklıdır, hatta bazen kaçınılmazdır.
Aşağıda faydalara ve ilgili yönlere daha yakından bir bakış yer almaktadır. Dağıtılmış bir uygulamanın temel amacı hem kullanıcılara hem de geliştirme ekiplerine fayda sağlamak olmalıdır. Bunlar esas olarak kullanılabilirlik, güvenilirlik ve ölçeklenebilirlik gibi işlevsel olmayan gereksinimlerde yatmaktadır.
Böyle bir sistem, Andrew Tanenbaum'un “Dağıtılmış Sistemler” kitabında formüle ettiği gereksinimler doğrultusunda kullanıcılara bir birlik hissi vermelidir. Google Haritalar'ı kullananların arkasında kaç konteyner olduğu veya hangi programlama dillerinin kullanıldığı umrunda değil, önemli olan tek şey güvenilirlik ve işlevselliktir;
Heterojenlik faktörü
Heterojenlik, dağıtılmış sistemler teorisinde, örneğin paralellik ve eşzamanlılıkla ilgili olarak merkezi bir rol oynar. Şekil 1'de gösterildiği gibi, heterojen görevlerin paralel olarak işlenmesiyle daha yüksek verimlilik elde edilebilir.
Dağıtılmış bir sistemde görevlerin paralel işlenmesi (Şekil 1).
Heterojenlik aynı zamanda işletim sistemlerine, çalışma zamanlarına, çerçevelere vb. bağımlılıklara da yansır. (bkz. Şekil 2). Tüm bu durumlarda, bir uygulamayı monolitik bir yapıya sığdırmak mümkün olmadığından dağıtılmış bir yaklaşımı zorunlu hale getirir.
İşletim sistemleri ve teknolojilerindeki heterojenlik (Şekil 2).
Son olarak genişletilebilirlikten bahsetmek gerekiyor. Dağıtılmış bir mimari, yeni bileşenlerin mevcut modüller üzerinde önemli bir etkisi olmaksızın bağımsız modüller olarak mevcut bir sisteme entegre edilebilmesi avantajını sunar. Böylece bileşenleri yeniden derlemenize veya paketlemenize gerek kalmaz.
Dayanıklılık faktörü
Dayanıklılık faktörü temel olarak uygulamayı yüksek oranda kullanılabilir hale getirmek ve kullanıcı sayısındaki dalgalanmalar veya alt sistemler veya ağ segmentlerindeki arızalar gibi öngörülemeyen olaylara karşı dayanıklı tutmakla ilgilidir. Böyle bir bileşenin arızası kontrol edilebilir olmalı ve hiçbir durumda uygulamanın tamamının arızalanmasına yol açmamalıdır. Bireysel bileşenlerin ölçeklenebilirliği, yedeklilik yoluyla güvenilirliği mümkün kılar. Bir örnek başarısız olursa, hizmetin kesintisiz olarak devam etmesi için yeterli sayıda başka örneğin mevcut olması gerekir (bkz. Şekil 3). Bu sadece yedeklilik sağlamakla kalmaz, aynı zamanda örneğin kullanıcı sayısının artması durumunda yükü bireysel bileşenlere eşit şekilde dağıtmak ve böylece tüm sistemin istenen performansını sağlamak için yük dağıtımına da hizmet eder (bkz. Şekil 4).
Artıklık yoluyla güvenilirlik. Bir bulut sunucusunun arızalanması durumunda servis, yedekli bulut sunucuları aracılığıyla garanti edilebilir (Şekil 3).
Kullanıcı sayısındaki dalgalanmalar dengeli bir yük dağılımı ile telafi edilebilir (Şekil 4).
Kullanıcı sayısında ani bir artış olursa veya daha kötüsü bir hizmet reddi saldırısı olursa yük, ölçeklendirme yoluyla dengelenemeyecek kadar hızlı bir şekilde artabilir. Uygulamanızı bundan korumak için gelen trafiği engelleyen veya en azından kısıtlayan bir ağ bileşeni yerleştirebilirsiniz. Bu durumlarda genellikle devre kesiciler veya bölmeler kullanılır.
Esnekliğin bir başka yönü de uygulama güncellemeleri sırasında kesintisiz kullanılabilirliktir. Bunu sağlamak için mavi/yeşil dağıtımlar ve kanarya sürümleri de dahil olmak üzere çeşitli dağıtım teknikleri ve sıfır kesinti süresi mevcuttur.
Her iki varyant da temel olarak, eski sürüm hala çalışırken uygulamanın yeni bir sürümünün dağıtılması prensibiyle çalışır. Mavi/yeşil dağıtımlarda değişiklik tek bir adımda gerçekleşirken, kanarya dağıtımlarında yeni sürüm, yeni sürüm tam olarak üretime sunulmadan önce, başlangıçta sınırlı bir kullanıcı grubuna kademeli ve seçici bir şekilde tanıtılır.
Bir yanıt yazın