Ekibimizin bir parçası olmak ister misin? Müşteri Girişi

SOA (Service Oriented Architecture) Nedir?

17 Ağustos 2022
PAYLAŞ
SOA (Service Oriented Architecture) Nedir?

Yazılım dünyasındaki mimari modellemeler biz yazılımcılar için her zaman zor anlaşılan konular olmuştur. Servis Yönelimli Mimari yani Service Oriented Architecture(SOA) en popüler yazılım mimarilerinden birisi olmakla beraber, anlaşılması ve uygulanması en zor olan mimari modellerden biridir. İlk bakışta “web servisleri” diye basite indirgenen bu konu aslında çok derin temelleri olan, çok kritik ve önemli prensiplere dayanan bir konudur. Biz yazılımcıların üzerinde ciddi araştırma yapması, okuması ve uygulaması gereken bir modeldir. Gelin SOA’yı dilimiz döndüğünce anlamaya ve en önemlisi hangi ihtiyacı/ihtiyaçları çözdüğünü bulmaya çalışalım. İlk olarak basit ve genel bir tanımlama ile işe başlayabiliriz.

İlk Tanımlama

SOA servis olarak adlandırılan, gevşek bağlı(loosely coupled), iri taneli(coarse grained-her ne demekse) ve özerk(autonoums) yapıdaki bileşenlere dayalı dağıtık sistemlerin geliştirilmesi için kullanılan mimari bir stildir. Zaten SOA’nın Architecture kelimesi bunun bir mimari yaklaşım olmasından dolayıdır. SOA farklı platformlar için belirli hizmetlerin sunulması esasına dayanmaktadır.

Temel Bileşenler

SOA’ nın yukarıda yapılan tanımına benzer daha pek çok ifade vardır. Genel hatları ile bu yeterli gibi görünebilir ancak SOA’ yı kavramak için aslında temel bileşenlerini de bilmek gerekir. Pratikte SOA’ nın aşağıdaki çizelgede görüldüğü gibi altı adet bileşeni vardır.

Söz konusu bileşenler birbirleriyle yakın ilişki içerisindedir. Aşağıdaki diagrama bakarak bu ilişkileri görmeye çalışalım.

Her bir servis(Service) sözleşmeler(Contracts) yoluyla iş süreçleri ve bunlara bağlı davranışlar sunar ki bu sözleşmeler keşfedilebilir EndPoint’ ler üzerinden taşınabilecek mesajları(Messages) tanımlarlar. Bir servisin davranışı(Behavior), endüstriyel anlamda standartlaşmış çeşitli ilkeler(Policies) ile uyumlu olmak zorundadır. Servisleri tüketen taraflar(Service Consumers) ise, sözleşmeler ve mesajlar yoluyla tanımlanmış iş fonksiyonelliklerine(Business Functions) ulaşmaktadır.

SOA Neyi Çözer?

Öncelike SOA’nın dağıtık yazılım sistemlerinin kalitesini arttırma noktasında pek çok mimari kritere sahip olduğunu söylememiz gerekir. Yeniden kullanılabilirlik(reusability), uyumluluk(adaptability) ve bakım yeteneği(maintainability) bunlardan birkaçıdır. Ancak en önemlisi SOA’nın özellikle point-to-point entegrasyon yapan sistemlerdeki bağımlılıkları ortadan kaldıracak çözümleri içermesidir.

Pek çok büyük sistem zamanla iş birimden gelen istekler doğrultusunda büyür ve genişler. Bir süre sonra bu sistemler arasında veri paylaşımı yapılması gerekebilir. Bu, çok doğal olarak iş sahibi birimlerin ihtiyaçlarından doğar. Dolayısıyla sistemler arası veri paylaşımı üzerine çeşitli entegrasyonlar gerekir. Eğer point-to-point gibi yaklaşımlar benimsenirse, sistemler arası entegrasyon giderek karmaşıklaşır. Tekrar edilen fonksiyonellikler/modüller çoğalır. Bakım ve dağıtım gibi operasyonlar giderek zorlaşır. Sistemin yeni nesil gelişimi de olumsuz yönde etkilenir.

Stovepipe olarak adlandırılan bu sistemlerde olayın çıkış noktası aslında az çok bellidir. Her departman kendi sistemini inşa ederken, bu sistemleri kullananların bazı ihtiyaçlarının diğer sistemlerde olabileceğini önceden kestirmez/düşünmez. Çözüm için point-to-point entegrasyonlar yapılmaya başlanır. Bu yaklaşıma iten pek çok sebep vardır. Planlama yetersizliği, doğru bir süreç sisteminin seçilmemiş olması vb…

Stovepipe System : Tek bir authentication fonksiyonelliğinin kurumun tüm sistemlerinde ortak kullanımı yerine, birbirleri ile iletişimde olma ihtimali bulunan bu sistemlerin kendi authentication fonksiyonelliklerine sahip olması olarak örneklenebilir. Stovepipe sistemler aynı zamanda bir anti-pattern olarak değerlendirilir.

Point-to-point denildiğinde aşağıdaki çizelgede görülen teknikler sıralanabilir.

İyi tasarlanmış bir SOA, point-to-point yaklaşımlar yerine çeşitli tipte tüketicilerce kullanılabilecek, daha genel çerçevede düşünülmüş arayüzler(interfaces) sunar.

Buna göre SOA’nın makarna haline gelmiş Stovepipe tadındaki sistemlerdekinin aksine daha disipline edilmiş bir iletişim mekanizması sunduğunu ifade edebiliriz.

SOA, endüstriyel anlamda standartlaştırılmış sözleşmeleri temel aldığından, sistemleri platform bağımsız ele alabilir/düşünebilir. Yani farklı platformlar, uygulamalar ve servisler için daha saydam bir iletişim mümkündür.

Güvenlik ve bakım(maintaining) gibi bazı farklı bakış açıları, SOA için konfigure edilebilir kavramlardır. Bu esneklik ilke tabanlı(policy based) olmaktan kaynaklanır ve bakım ile adapte edilebilirliği en üst seviyede kolaylaştırır. Bunun doğal sonucu olarak bir takım sorumlulukların geliştirme takımlarından sistem operasyon gibi IT taraflarına alınması da mümkün hale gelmektedir. Bu, organizasyonel anlamda sorumlulukların dağıtımı olarak düşünülebilir.

Aslında tüm bu yazılanları bir kenara bırakırsak temel sorun şudur : IT'nin değişen iş süreçlerine kolay bir şekilde adapte olamayışı ve bunun sonucu olarak işin çevik anlamda ilerleyemeyişidir. SOA, IT ile iş birimi arasındaki boy farkını eşitlemek için bir yol sunar. Aynen aşağıdaki şekilde görüldüğü gibi...

İş Birimi İçin Nasıl Faydaları Olabilir?

SOA’ nın elbette IT alt yapısındaki yazılımsal vizyonu dışında bir de iş birimine sağladığı faydalar söz konusudur. Bu faydalar aşağıdaki çizelgedeki gibi ifade edilebilir.

Mimarın Yükü

SOA, sistemlerin tekonoloji bağımsız bir şekilde inşa edilmesine odaklanır. Bu yüzden WCF Service denmez bunun yerine örneğin SOAP-Based Services denir ya da JAX-RS service denmez, REST Based Services denir. SOA’ yı uygulayacak olan mimarın önemli görevlerinden birisi de, mimarinin parçalarını belirli teknolojilere doğru yönlendirmektir. Mimarın elinde ona yardımcı olacak bir takım girdiler de vardır. Aşağıdaki şekile bir bakalım.

Mimar teknolojiyi kullanır. Ancak teknik toplulukların veya standart koyucuların belirlediği bir takım prensip ve desenleri de baz alır. Bu noktada bir takım anti-pattern’ lerin oluşumu da söz konusudur. Diğer yandan organizasyonel açıdan bakıldığında işin içerisine dahil olan paydaşlar da vardır. Bu paydaşlar pek tabi çeşitli kalite kriterlerini işin içerisine dahil eder ve bazı kıstasları(Constraints) belirlerler. Mimar tüm bu girdileri harmanlayarak mimariyi üretmeye çalışır.

Bu yazıda Service Yönelimli Mimari(Service Oriented Architecture) ile ilgili temel noktalara dikkat çekmeye ve SOA’nın getirdiği çözümlere dikkat çekmeye çalıştım. SOA derin temelleri olan, önemli kurallara ve prensiplere dayanan, günümüzün en önemli yazılım mimarilerinden biridir. Her yazılımcının bu konuda derinlemesine bilgi sahibi olması gerektiğini düşünerek sizlere birkaç kitap kaynağını tavsiye etmek istiyorum. Aşağıdaki kaynaklar bana gerçekten önemli bilgiler sundu. Sizlere de tavsiye ederim.

Codlio Hakkında
Codlio
Codlio

2014 yılından beri yüzlerce dijital projeye katkı sağlamış olan Codlio ekibi olarak, yaptığımız birçok çalışmada hep insan odaklı hareket ederiz. Kalbimizle hisseder, düşünür ve ellerimizle hayata geçiririz.

İletişime Geç!
Editörün Seçimi
Kategoriler
İlginizi Çekebilir
Yeniden Pazarlama Listesi Oluşturma
Blog 4 Eylül 2022

Değerli okurlarım bu yazımda sizlere yeniden pazarlama listesi oluşturma hakkında detaylı bilgiler paylaşıyor olacağım....

Blog Sayfasında Otomatik Kendi Kendine Yenileme İşlevi Nasıl Yapılır
Blog 28 Ağustos 2022

Merhabalar, bugünkü yazımızda  blogger’da kendi kendine otomatik yenileme işlevi nasıl yapılır ondan bahsedeceğim....

SOA (Service Oriented Architecture) Nedir?
Blog 17 Ağustos 2022

Yazılım dünyasındaki mimari modellemeler biz yazılımcılar için her zaman zor anlaşılan konular olmuştur. Servis Yö...

TensorFlow Nedir? Nasıl Kullanılır?
Blog 17 Ağustos 2022

Yazılım sektöründe son yılların en popüler ve önemli konusu yapay zekâ diyebiliriz sanırım. Bu alanda makine ...

aok
KAPAT X
Ekibimizin bir parçası olmak ister misin? Müşteri Girişi