2015 Nisan ayında, Microsoft, Azure platformunda yeni bir hizmetini tanıtmıştı. Azure Service Fabric olarak adlandırılan bu hizmet ile güvenilir, kolay yönetilebilir, erişilebilir ve en önemlisi ölçeklendirilebilir dağıtık sistemler geliştirmek mümkün hale geliyordu. Hala “Preview” olan bu hizmet, bu sene farklı yeni özellikleri ile bir adım daha ileriye gelir umarım. Son bir kaç zamandır kurcalama fırsatım olduğu için, kısaca neymiş, ne değilmiş biraz bahsetmek istedim…
Azure Service Fabric(ASF), Azure içinde, kendi yönettiğimiz ölçeklendirilebilir sistemler geliştirmemiz için sunulan bir hizmet olarak da tanımlanabilir. AFS aslında Azure’un diğer başka hizmetlerinde de, Microsoft’un kullandığı bir hizmet. Azure SQL Database, DocumentDB ve Event Hubs gibi bir çok hizmet bu yapı üstünde ölçeklenip çalışıyor. Kısacası, Azure’un içindeki bir servisin dışarıya açılması da diyebiliriz, Azure Service Fabric için.
Microservices konsepti son bir kaç yıldır oldukça popüler bir konu olarak, dağıtık sistem tasarımlarında kendine yer ediniyor. Azure Service Fabric hizmetini bu noktada, Microservices mimari sitilini sistemlerinde kullanmak isteyenlere cloud tarafında olan bir çözüm olarak düşünebiliriz. Tek başına, kendi iş mantığına ve çalışma ortamına sahip bir çok servisi kullanarak geliştirilen uygulamaları ve bu servisleri Azure Service Fabric üzerinde geliştirip, barındırıp yönetebiliyoruz.
AFS üzerinde iki farklı programlama modeli API olarak bizlere sunuluyor. Reliable Actors API ve Reliable Services API… Geliştirilecek servislerin yaptığı işler ve amaçlarına göre seçim yapılması gereken bu API’lar farklı ihtiyaçlar için tasarlanmış.
Reliable Actors API, bir birinden tamamen bağımsız, durumunu ve iş kurallarını kendi içinde tutan, dış kaynak erişimi olmayan, tek thread’li servis ihtiyaçları için tercih edilmelidir. Mesela, belli formattaki büyük Excel dosyalarını parse edip, kaydetmek için bu API’yi tercih edebilirsiniz.
Reliable Services API ise, farklı bileşenler ile konuşması gereken, geliştireceğiniz servisler içinde state gerektiren durumlar olduğunda ve servis iletişimini kendiniz yönetmek istediğinizde tercih edebileceğiniz bir programlama API’si. Önümüzdeki günlerde bunlara örnek kodlar ile daha fazla zaman ayıracağım. O yüzden şimdi kafanız biraz karıştıysa, önümüzdeki yazılarda ayınlanma yaşayacaksınız. 🙂
Azure Service Fabric üzerindeki servisleriniz ihtiyaçınıza göre bu iki modelden biri olabilir. Yani illa bir tanesi olmak durumunda diye bir şey yok. Bir servisiniz Reliable Actors API ile geliştirilmiş olup, diğer başka bir servis Reliable Services API ile geliştirilmiş olabilir. Bu noktada, önemli olan her iki API’de geliştirmiş olduğunuz servisler, ölçeklenebilir ve erişilebilir olacaktır.
Bu programlama modellerinden, biraz daha Azure Service Fabric bileşenlerine geçelim. Yukarıda bahsetmiş olduğum API’lere göre geliştirdiğiniz servisler, ASF üzerinde belli bir düzen içinde bulunuyor. Kısaca ne olduklarına bakalım.
Cluster: Uygulamaların çalıştığı, bir birine bağlı, sanal ya da fiziksel makinalar desem sanırım açıklayıcı olur. Bildiğimiz Cluster işte. Ölçeklendirdiğimiz sistemler, bu Cluster’lardaki makine sayıları oluyor aslında. 100 sanal/fiziksel makine de olabilir, 10000 tane de.
Node: Cluster içindeki her bir makine, Azure Service Fabric içerisinde Node olarak adlandırılıyor. Node’lar çeşitli ihtiyaçlara göre Cluster’lara dahil olup, belli hata durumlarında da Cluster’lardan çıkabiliyor.
Application: Birden fazla servisin(microservices) kullanıldığı “execution unit” olarak adlandırabileceğimiz, Node’larda çalışan programlar Application olarak geçiyor.
Service: Yukarıdaki programlama modellerine göre geliştirilmiş, tek bir sorumluluğu olan çalışan kodlar, ASF’de Service olarak geçiyor. Stateless ve Stateful olarak; durumu olan ve durumu olmayan şeklinde iki çeşit servis tipi var. Önümüzdeki yazılarda yine bunlara deyiniyor olacağım.
Umarım giriş yazısı için yeterli olmuştur. Azure Servics Fabric’de çalışan servisleri nasıl yazabileceğimizi de önümüzdeki günlerde anlatmaya çalışacağım. Dağıtık sistem ve microservices ile ilgilenlerin oldukça işine yarayacağını düşünüyorum. Umarım “Preview” olmaktan çabuk çıkar ve Azure’un en önemli hizmetlerinden bir tanesi olur…