SOA Sunumum

Dün özel bir etkinlik için hazırlık yaparken, önceden kullandığım SOA sunumumu gözden geçirme fırsatım oldu. Baktım da, gerçekten güzel bir sunum. PC World’de yayınlanan SOA yazımda da dile getirdiğim gibi herkesin SOA anlayışı farklı. Ben SOA’yı adından da anladığım haliyle, yani bir mimari olarak yorumluyorum; benim gözümde SOA bir fikir, bakış açışı, anlayış.
 
Mimari soyuttur, somutlaşması için inşaa, yani mühendislik gerekir; üstelik her somutlanmış, yani inşaa edilmiş mimari, aynı mimari olmayabilir.. Gerçekleşen fikrin uygulamadan farklı olabilmesi gibidir. Bu yüzden, fikir asla gerçekleşmez, sadece gerçekleşen yansımasıdır.
 
SOA’yı tanımlarken kabul gören (en azından Microsoft SOA’cıları arasında) dört prensip var. Bunlar:
  1. Sınırları belirli
  2. Özerk
  3. Şema ve kontrat temelli
  4. Poliçe bazlı

Servisi açıklama için önceden kullandığım bir örnek vardı, eski blog’umda da yayınlamıştım. Ofis ile otopark arasında bayağı bir mesafe olduğu için, şirket tarafından atanmış iki görevli bulunuyor. Eski uygulamada, park yerine ulaştığınız zaman bu görevlilerden birini arabanıza alırdınız, şirketin kapısında iner, arabayı ona teslim ederdiniz, o da arabayı park ederdi. Çıkarken de arabanızı isterdiniz, kapıya getirilirdi. Klasik vale servisi yani.. Dikkat ederseniz, burada vale ve araba sıkıca eşleşmiş durumdalar (coupled). Neden derseniz, diyelim araba otoparkta gerilerde bir yerlerde (yer dar olduğu için dip dibe park ediliyor tabii) sizin arabayı çıkartmak için bayağı uğraşıyorlar, siz de bekliyordunuz, tabii bir çok kişi de bu arada o işin bitmesini bekliyordu. Temel olarak bu da bir servis gibi düşünülebilir, ama SOA diyemeyiz.

Sonra, bu işi optimize etmek için bir servis aracı hizmete kondu. Şirket ile otopark arasında ring seferleri başladı. Böylece vale ile araçlar arasındaki eşleme (coupling) kırıldı, artık kendi arabanızı beklemek yerine ilk servise atlayıp otoparka ulaştınız ve kendi arabanızı alıp yola devam edebildiniz.

Bu örnek üzerinde SOA prensiplerini tartışırsak;

  1. Servisin belirginliği yeterince açıktır diye tahmin ediyorum. SOA prensipleri servisin çerçevesinin (ya da sınırlarının) açık ve belirgin olmasını şart koşuyor. Otopark ve şirket arasındaki rota da bu sınırları belirginleştiriyor.
  2. Özerklik, servis şöförünün hareketlerinde yatıyor. Eğer servisi ne zaman yola çıkabileceğini söyleyen başka bir otorite varsa bu servis için özerk diyemeyiz; ancak servis (ya da şöför bu durumda) kendi kendine yola çıkma kararı verebiliyorsa (örneğin bir yolcusu olduğu için) o zaman bu servis özerktir. Bu tabii ki bağımsız olduğu anlamına gelmez, yani servis kafasına göre başka bir yere gidemez, sadece o rotada kalmak zorundadır; ya da istediği zaman işi bırakamaz.
  3. Servis ile kullanıcıları arasındaki anlaşma bir kontrata dayalıdır. Bu örnekte kontrat yazılı değildir, ancak yine de ortada bir anlaşma söz konusudur. Aslında yazılı olduğu bile düşünülebilir, çünkü şirket içinde bir eposta ile hizmete konan servis bilgisi duyurulmuştur. Yani çalışanlar dışarıda bir servis olduğunu, bunun nereden kalkacağını, hangi araç olduğunu vs bilmektedir. Bu kontratı bir kere okumuş olmak yeterlidir; ancak örneğin aracın durduğu yerin ve aracın kendisinin değişmesi sorunlara yol açacaktır; aynı şekilde servis yazılımlarının da adreslerini değişmesi bir soruna sebep olur.
  4. Servis ne zaman hareket edeceğine kendi karar vermektedir, ona hareket etmesi gerektiğini söyleyen bir dış otorite bulunmamaktadır; ancak yine de hareket şartları önceden tanımlanmış olabilir. Örneğin çalışma saatlerinin sabah yediden akşam yediye olması, sabah sekiz ile dokuz arasında ikişer dakikada bir, diğer saatlerde yolcu geldikçe hareket edilmesi gibi kurallar tanımlanmış olabilir. Hatta bu tanımlar belirli şartlara göre bile belirlenebilir, örneğin sadece şirket çalışanlarının taşınması, şirket çalışanlarının kendilerini bir yaka kartı ile tanıtmaları gibi (böyle bir şey yok tabii bizim serviste, herkes herkesi tanıyor..) Eğer böyle kurallar olsaydı, bu kurallar bir poliçede yazacaktı, ve servis bu poliçeye göre çalışacaktı. Poliçenin ayrı bir döküman olmasının faydası, istendiği gibi değiştirilebilmesidir. Örneğin 12 saat çalışacaktır diyoruz, bu maksatla pili sadece 12 saat dayanan bir araç alsaydı, bu kuralı poliçe ile değil servisin kendi içinden uygulamış olurduk; tabii ki değiştirmek, servisi değiştirmeden imkansız olurdu. Oysa poliçede bu kuralı değiştirmek bir çok kez daha kolaydır.

Bana mantıklı geliyor, ne dersiniz?

Bu arada, ilgili sunumu da paylaşacaktım, ancak burada doküman yayınlayamıyoruz galiba. i-con sitesine koyup, linki de buradan duyuracağım artık, elim değerse.

Bu yazı Uncategorized içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

1 Response to SOA Sunumum

  1. tolga dedi ki:

    Ben SOA yi pek anlayamadim, Kerem Bey. Kurs tarihleri varsa deginebiliri misiniz. Ufkumu genisletmek  istiyorum

tolga için bir cevap yazın Cevabı iptal et

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s