Composite Application Architecture ve Service Oriented Architecture

Bu sefer de biraz servis tabanlı mimariler üzerine bir yazı yazayım istedim. Belki bildiğiniz üzere, son zamanlarda her insan SOA demeye başladı yazılım firmalarında, fakat bu terime aşina mıyız? SOA diye bahsettiğiniz şey CAA Composite Application Architecure olmasın ya da SaaS Software as a service de olabilir. Bu terimler üzerine biraz düşmek ve aklımızda bazı şeyleri netleştimek istiyorum.

Bu yazının sonrasında detaylı olarak açıklancak şeyleri burada listeleyeyim ki sonradan açıklanmamış şeyler kalmasın;

  • CAA – Composite Application Architecture (Bileşik Yazılım Mimarisi) Nedir?
  • SOA – Service Oriented Architecture (Servis Tabanlı Mimari) Nedir?
  • SaaS – Software as a Service (Bir Servis Olarak Yazılım) Nedir?

Yukarıda belirtiğim konulara özgü detaylı makaleleri sonradan anlatacağım pek tabii ki. Şimdilik ben SOA ve CAA üzerinde durmak ve aklınızda oluşan sorulardan kurtulmak istiyorum.

CAA Nedir?

CAA dediğimiz olay bileşik yazılım mimarisini temsil etmektedir. Adından da anlaşılacağı gibi bazı temel faktörlerin, yazılım mimarisini oluştururken birleştirilmesi temeline yatar. Oluşturulan sistemin bel kemiğine Composite Solution Platform (Bileşik Çözüm Altyapısı) diyebiliriz, diğer programlar ya da programcıklar buraya bağlanır ve yönetilirler. Şöyle detaylıca anlatmaya çalışayım. Programlama temelleri üzerinden gidersek, bir programın illa birleşim yapması için service olmasına gerek yok. Her hangi bir dille yazılmış, dışarıya data verirken belirli limitasyonlar ve standartlar altında alınmış programlara Composite Application diyebiliriz. Bu programlar ister servis olsun – SOA üzerinden – ister dll olsun – CBD component based development üzerinden – bir şekilde projeye entegre olabilmelidirler.

Belirtilen entegrasyonu sağlayan bir Governance (Yönetim) altyapısı çıkar. Bu yönetim altyapısı, bileşik altyapıların entegrasyonu ve yönetimini sağlamakta ayrıca diğer programlar ile data alışverişi, mesaj alışverişi gibi kontrolleri sağlamalıdır. İstenilen dilde ve istenilen altyapıda buna uygun bir yöntem bulabilirsiniz.

Bu programlama modeli, yazılım mimarisinde üç temel noktayı ele almaktadır;

  • İşin ya da çalışmanın dizaynından tam yarar alabilmek,
  • İşin ya da çalışmanın, olabildiğince efektif evrim geçirmesine destek olmak,
  • Var olan sistemlerin yerine yenilerini yapmak yerine, onlara destek vererek tekrar kullanmak (reusability).

Kısaca bu programlama modelinde amaç; esnek, adapte edilebilir ve iş ile IT arasında yüksek oranda verim sağlayacak şekilde mimariler oluşturmak.

SOA Nedir?

Bu geyiği burada yapmazsam tabii ki kafayı yerim; One person successfully described SOA completely, and immediately died. Tabii ki böyle bir olay yok, SOA aslında anlatılabilir ve anlaşılabilir bir yapıda. SOA’nın açılımı Service Oriented Architecture, yani servis tabanlı mimari. Buradan da anlayabileceğimiz gibi, program altyapımız servisler (.net için WCF, Web Service, Web API).

Bu mimariyi kısaca özetlersek; Bir Enterprise Application geliştirdiğimizi düşünelim, CMS olur, ERP olur, HRP olur. Bu tip sistemler için daha önceden yazılmış, başka sistemlerde de kullandığınız küçük programlar olsun, SMS gönderimi, Mail SMTP sunucusu, acil durumlarda gerekli kişilere haber verecek Code Red altyapısı ya da bir Report programı. Bu programların büyük seviye programlar ile iletişime geçmesi için önce hepsini servis olarak yani entegre edilebilir, bağımsız programcıklar olarak kodlayıp, gerekli kısımlara entegre etmemiz işleminin planlanmasına SOA denir.

Daha detaylı örnek olarak ele alalım; Report servisi, düzenli olarak her hafta sonunda ilgili haftanın ilgili datalarını almak için ERP’ye HRP’e gidebilir. ERP’de HRP’de bu programın çalışması ya da çalışmaması bağımsız olacak şekilde datalarını ona verirler. Bu Report servisine bir de önemli bir rapor çıktığı için Code Red servisi bağlayabilirsiniz ki bu datanın gelmemesi durumlarını kontrol eder, eğer data gelmiyorsa Code Red sistemine bağlı SMS gönderim servisi – ki bu servis daha önceden ERP ve HRP sistemlerine bağlanmıştır – acil durum çağrısını ilgili birimlere gönderir.

Tekrar tekrar kod yazmadan ne kadar çok işlemi yapabildiğimizi görebildiniz mi? ERP ve HRP genel arayüzü oluştururken, SMS gönderim gerekli bildirimi, Reporting ise gerekli raporlamaları sağlamaktadır. Code Red ise datanın bütünlüğünü ve acil durumların kontrolünü sağlamaktadır. Bu arada yaptığımız Seperation of Concerns olayına da dikkatinizi çekmek isterim.

Lafı uzatmadan, SOA’nın dört ana maddesini de ele alalım istiyorum;

  • Sınırlarınız kesin olmalıdır.
  • Servisler özerk yapılarda, kendini idare edebilir olmalıdır.
  • Servisler schema ve contract paylaşır, class paylaşmaz.
  • Servis uyumluluğu belirli politikalarla belirlenir.

Bu dört kurala bağlı şekilde yazdığınız servisleri, birbirleri ile entegre hale getirebilir, projelerinizi genişletebilirsiniz. Daha detaylı olarak SOA kısmından daha sonra bahsedeceğim.

SaaS Nedir?

Aslında SaaS’ın konu ile hiç bir alakası yok, fakat tartışmalar sırasında insanların aklına alakalıymış gibi gelmesin diye burada bahsediyorum. SaaS yani Software as a Service olayı, bir yazılımın servis olarak sunulmasıdır. Yukarıda bahsettiğimiz SOA olayı değil, bildiğiniz ücretli ya da ücretsiz bir işlem yapan kapalı kutulardan bahsediyoruz. Online Task Yönetimi ya da Online Project Management araçları bunlara örnek verilebilir. Kendi API’leri ile diğer programlarla konuşabilirler ama bu demek değildir ki bizim SOA altyapımıza uygun olacaklar. SaaS olayını kendi içinizde geliştirirseniz bir servis olur, parayla satılan servis olmaz. Burada Türkçe karmaşası yaşıyoruz, ilk servis dediğim nokta bir iş yapan programı analtırken, diğer servis kelimesi hizmet veren programı kast etmektedir.

Sonuç

Bu yazıda biraz tanımları size aşina olması için ele almak istedim. Halen aklınızda sorular olabilir ki bu soruları Yorum kısmında yazarsanız, elimden geldiğince yanıt vermek isterim. CAA ile SOA aslında bağlantılı sistemler olmasına rağmen SOA daha kalıplaşmış bir tanıma sahiptir, CAA ise daha genel ve daha eski bir teridir. Neticesinde günümüz programlama mantığı SOA’yı bile eskitmiş olmasına rağmen, geleneksel yazılım mimarilerinden yeni kurtulan Türk Yazılım Piyasası anca SOA terimini yeni kabul etmeye başladı. Belki yıllardır kullanıyorsunuz fakat emin olabilirsiniz ki çoğu firma daha terimi ilk defa duyuyor.

SOA ve CAA konusunda daha detaylı analiz makalelerini daha sonra yazacağım, şimdilik iyi kodlamalar…