Service Oriented Architecture (SOA)
Efe Eyüboğlu
Servis nedir? Servis, yapacağı iş açıkça ifade edilmiş bir iş fonksiyonunun
uygulamaya geçirilmesiyle oluşan bir yazılım komponentidir. Diğer servislerin durumundan bağımsız olarak çalışır. Kendi içinde birkaç servis öğesi barındırabilir
Servis örneği: Banka Hesap Yönetimi Servis öğesi örneği: Sıradaki mevcut hesap numarasını
oluşturma
Servis nedir? Belli başlı özellikleri : Kendi kendine yetebilir / bağımsızdır. Diğer servislerin durumlarından etkilenmez. Modülerdir , değişikliklere hazırdır. Kullanıldığı platformlardan bağımsızdır. Diğer servislere gevşekçe bağlıdır (Loosely coupled).
Aralarındaki tüm etkileşimler arayüzler aracılığıyla olur. WSDL (Web Service Description Language) kullanılarak
tanımlanır.
Servis kullanımındaki roller-Servis sağlayıcı (Service provider) belirli bir servisi yayınlamak ve
güvenliğini sağlamaktan sorumludur.
-Servis tüketicisi (Service consumer) servisi bulmak, kullanmak ve belirli protokollerle servis sağlayıcıya istek göndermekle sorumludur.
-Servis dizini (Service directory/registry) servislerin fiziksel lokasyonlarını, versiyonlarını, geçerlilik sürelerini, dökümantasyonlarını ve poliçelerini barındırır.
-Sağlayıcı, tüketici ve dizin arasında geçen tüm mesaj ve protokoller XML bazlı dillerle standardize edilmiştir. Bu yüzden servisler platformlardan bağımsızdır.
Servisler nasıl çalışır?(XML,SOAP,WSDL,UDDI)
XML (Extensible Markup Language): Verileri tanımlamak, saklamak ve taşımak için kullanılır. HTML gibi bir işaretleme dilidir. (HTML göstermek içindir, XML
taşımak için.)
SOAP (Simple Object Access Protocol): XML bazlıdır. Ağ üzerinden haberleşme protokolüdür. (İnternet, intranet..) Web servisleri için veri iletimi sağlar. Platformlardan ve dillerden bağımsız olarak çalışır.
Servisler nasıl çalışır?(XML,SOAP,WSDL,UDDI)
WSDL (Web Service Description Language): XML bazlıdır. Bir web servisini tanımlamanın standart formatıdır. Web servisinin neler yapacağını ve servise nasıl ulaşılacağını
tanımlar.
UDDI (Universal Description, Discovery and Integration): XML bazlıdır. Web servislerini tanımlamak, yayımlamak ve bulmak için
kullanılır. Platformlardan bağımsızdır. SOAP, CORBA, JAVA RMI Protocol gibi protokollerle haberleşebilir. Web servis arayüzlerini tanımlamak için WSDL kullanır.
Servisler nasıl çalışır?
Servis sağlayıcısı, servisi SOAP mesajlarında taşınan UDDI ile yayımlar. Servis tüketicisi, uygun servisi SOAP mesajlarında taşınan UDDI ile arar. Servis tüketicisi servis sağlayıcısına SOAP isteği göndererek bağlanır. Servisler WSDL kullanılarak tanımlanır.
Service Oriented Architecture nedir? SOA, iş uygulamaları yaratma amacıyla bir takım kara kutu
komponentlerinin (servislerin) organize edilmesiyle ve iş süreçlerinin birbiriyle bağlanmasıyla iyi tanımlanmış seviyede bir servisin oluşturulması için uygulanan bir mimari yaklaşımdır.
İş uygulamaları yaratmak içindir : Yazılım mimarisine birçok sağlam yaklaşım vardır. Bu yüzden SOA, her türlü yazılımı yaratma amacında değildir. Asıl amacı iş uygulamaları yaratmaktır.
Bir kara kutu komponenti mimarisidir : SOA, arka plandaki kompleks görünümü kullanıcıdan olabildiğince saklamayı hedefler. Halihazırda var olan iş uygulamalarının nasıl yaratıldığından bağımsız olarak tekrar kullanımını sağlar.
Service Oriented Architecture nedir? Komponentleri birbirine gevşekçe bağlıdır (Loosely Coupled) : Loosely Coupled terimi iki komponentin SOA kapsamında
birbirleriyle nasıl etkileşimde olduklarını belirtir. Bir komponent diğerine veriyi ileterek bir istek oluşturur. İkinci komponent isteği alır ve gerekliyse istenen veriyi ilk komponente döndürür.
Komponentleri bir iş süreci oluşturma amacıyla organize edilerek birbirlerine bağlanır ve böylece iyi tanımlanmış bir servis oluşturur :
SOA, basit komponentleri gerekli şekilde sıralayarak kompleks bir iş servisi oluşturabilir. (Choreography/Orchestration)
SOA Avantajları Platform Bağımsızlığı : Servis kullanımı sadece sağlayıcı ve tüketici
arasında geçen mesajların kullandığı protokollerle ve tanımlama dillerini gerektirir. Bunlar standart olduğu için platformlardan bağımsızlığı vardır. Böylece şirketlerin halihazırda bulunan yazılımları farklı platformlar için tekrar yaratılmaz.
Geliştiricilerin odaklanması : Servisler diğer servislerin durumundan bağımsız olarak çalıştıkları için belli bir servisten sorumlu geliştiriciler endişe etmeden sadece sorumlu oldukları kısımları geliştirmekle ve uygulamaya koymakla yükümlenirler.
Lokasyon saydamlığı : Servisler genelde tüketicinin bulabileceği belli bir dizine yayımlanırlar. Bu yaklaşım sayesinde servisin lokasyonu her zaman değiştirilebilir. Tüketici servisi dizinden bulabilecektir.
SOA Avantajları Tekrar Kullanım : SOA, uygulamayı küçük bağımsız parçalar
halinde kullandığından dolayı, servisler birden fazla uygulamada kullanılabilir. Böylece yazılım geliştirme maliyetleri düşer.
Daha kolay ve kapsamlı test edilebilirlik : Küçük, bağımsız servisler eski tarz yazılımlara göre (e.g. monolithic applications) daha rahat test ve debug edilebilirler. Böylece daha güvenilir yazılımlar elde edilir.
Paralel yazılım geliştirme : Servisler birbirinden bağımsız olduğundan ve aralarında olacak ilişki ve gerekli olduğunda sözleşme önceden belirlendiğinden farklı servisler aynı anda geliştirilebilir. Böylece projelerde ciddi miktarlarda süre kazancı elde edilebilir.
SOA her zaman en iyi çözüm mü? SOA, şirketler için çoğu durumda yarar sağlayabilir. Fakat bazı
özel durumlarda yarardan ziyade bir yüke dönüşebilir. Bunlar;
Homojen bir IT yapısı var ise : Şirket sadece belirli bir ürün için çalışıyorsa, kısıtlı bir çalışma alanı varsa ve ürünlerinde değişiklik veya eklenti yapması gerekmiyorsa.
Gerçek zamanlı performans çok kritik olduğunda : SOA, çok sayıda servis sağlayıcısı ve tüketicisi arasındaki gevşekçe bağlılığı sağlayabilmek için eş zamanlı çalışabilen protokoller kullanır. Bunlar ise doğaları gereği yavaştır.
Komponentler arası sıkı bağlılık(Tight Coupling) bir sıkıntı değil ise : Gevşek bağlılığın en iyi kullanımı, komponentin kontrol altında
olmadığı ve değiştirilemediği durumlarda kullanılmasıdır.
SOA Entegrasyonu – ESB Nedir ? ESB (Enterprise Service Bus – Kurumsal Servis Veri Yolu),
SOA’ın entegrasyonu ve uygulanması için bir şablon rolü oynar. Altyapısal hizmetler sunan, heterojen ortamlarda çalışabilen bir yazılım mimarisi modelidir.
Temelinde sayısız uygulamayı birbirlerine entegre edebilmek için kullanılan veri yoluna benzer bir altyapıdır. Uygulamaların veri yolu üzerinden belirli haberleşme protokolleriyle birbirleriyle konuşabilmelerini sağlar. Platform veya dillerden bağımsızdır.
ESB’nin SOA’daki rolü Rollerinin temelinde, servis tüketicilerinin ve sağlayıcılarının
bağlanmasını sağlayan altyapı yatar. ESB’nin asıl değeri, günümüzde kurumlara uygun servis seviyeleri ve yönetilebilirlik sağlamak ve ayrıca heterojen bir ortamda entegre olup çalışabilmektir.
ESB’lerin kabiliyetleri basit veri iletimi ve routing’den çok ötededir. Literatürde ESB’lerin tüm gerçekleştirebildiği tüm özellikleri bir sonraki slayttaki kabiliyet modelinde görebiliriz. Piyasada bulunan her ESB birbirinden farklı avantajlar sunabilir. Bu yüzden gereksinimleri karşılayacak bir ESB seçimi çok önemlidir.
ESB Kabiliyet Modeli
*ESB ürünü sunan bazı firmalar.
ESB ve diğer SOA Komponentlerinin RolleriESB, SOA içindeki tek altyapısal komponent değildir.
Senaryolar değişse degenel olarak aşağıdaki komponentler de yer alır: The Business Service Directory; mevcut servislerin
sınıflandırılmasında ve detaylandırılmasında rol oynar. The Business Service Choreography; iş süreçleri yaratmak
için servis etkileşimlerinin nasıl olacağını organize etmekte rol oynar.
The ESB Gateway; servislere kontrollü bir dış erişim noktası sağlar. Büyük şirketler bu komponenti genel olarak ESB’den ayrı tutarlar.
Oracle SOA Suite Nedir? SOA temelleri ile çalışan ve iş süreçlerini oluşturmaya,
entegre etmeye ve yönetmeye yarayan birleşik, kapsamlı bir pakettir. Ek olarak uçtan uca güvenlik ve metadata yönetimi sağlar.
Oracle SOA Suite 4 fonksiyonu içinde barındırır: Analytics Orchestration Service Virtualization & Mediation Connectivity
Her fonksiyonu için bu paket içerisinde belli ürünleri vardır.
Oracle SOA Suite Komponentleri
Oracle SOA Suite Komponentleri JDeveloper
Birleştirilmiş geliştirme ortamı sağlar. SCA* (Service Component Architecture) komponentleri yaratma
olanağı sağlar.
o *SCA: SOA bazlı uygulamalar yaratmak için kullanılan bir grup spesifikasyonlardır.
Oracle SOA Suite Komponentleri BPEL Process Manager
İş süreçlerini tasarlamak ve çalıştırmak için kullanılan bir araçtır.
Desteklediği standartlar: BPEL, XML, XSLT, XPATH, JMS, JCA ve Web Servisleri.
JDeveloper bünyesinde tanımlanır ve dizayn edilir.
Oracle SOA Suite Komponentleri Oracle Service Bus
Hafif, ölçeklenebilir ve güvenilir bir ESB’dir. Heterojen servisler, legacy sistemleri, ERP’ler ve diğer
ESB’ler arasındaki bağlantıyı kurmak, aracılık yapmak ve yönetmek için dizayn edilmiştir.
Mesaj formatlarını çevirmek ve dönüştürmek için aracı rolünü oynar.
Entegrasyon teknolojisini ve güvenlik şablonlarını sunarak komponentler arasındaki gevşek bağlılığı sağlar.
Oracle SOA Suite Komponentleri Oracle Service Bus
Oracle SOA Suite Komponentleri Oracle Event Processing
Event processing uygulamalarını geliştirmek için zengin, rahatça ifade edilebilir bir ortam sağlar.
Gerçek zamanlı olarak kullanılan iş süreci örüntülerini ve trendleri saptar.
Oracle SOA Suite Komponentleri Oracle Business Rules
İş analistlerinin ve geliştirici olmayanların kolayca iş mantığını tanımlayabilmelerine ve düzenleyebilmelerine olanak sağlayarak süreçleri ve uygulamaları daha esnek hale getirir.
Oracle SOA Suite Komponentleri Oracle Web Services Manager
SOA etkileşimlerini kontrol etmek ve yönetmek içindir. Yeni veya var olan servislerin/uygulamaların üzerine bir
katman olarak güvenlik veya operasyon planları oluşturabilir.
Oracle SOA Suite Komponentleri Oracle Business Activity Monitoring (BAM)
İş süreçlerini ve servisleri izlemek için gerçek zamanlı olarak çalışan, etkileşimli, proaktif uyarılar sağlayan bir paneldir.
Oracle SOA Suite Komponentleri Oracle Managed File Transfer (MFT)
İçe/dışa güvenli dosya iletimi/alımı ve yönetimi sağlar. Teknik bilgiye sahip olmayanlar için kolay kullanıma
sahiptir. Kapsamlı rapor kabiliyetleri sayesinde hızlı bir şekilde
dosya iletimi/alımı durumu ile ilgili bilgi alınabilir. SSH/FTP ters proxy kullanarak veriyi DMZ(demilitarized
zone) içerisinde koruyabilir.
Oracle SOA Suite Komponentleri Oracle Managed File Transfer Avantajları
Büyük dosyalar sistemi yavaşlatmaz/tıkamaz. MFT ile düzenlemeler sonucu bu dosyalar sadece gerekli sistemlere ve personele ulaşır.
Veri kayıplarını sıfıra indirir ve hassas verilerin dışarıya maruz kalması riskini minimize eder.
Dosya iletim problemlerini teşhis eder.
Birleşik Paket Avantajları Tüm komponentlerin aynı runtime
environment ve IDE’de çalışması ve birbirleriyle sorunsuz haberleşiyor olmaları.
Tüm komponentlerin, paralel bir şekilde, aynı ortamda ve aynı temeller üzerinde geliştirilmiş olması.
Bu sayede yazılım mülkiyeti maliyetlerinde düşüşler olması.
Choreography/Orchestration nedir? SOA’daki önemi nedir? İş mantığının altında yatan servislerin
içeriklerinden ve detayından bağımsız olarak sadece iş akışını belirtmek için kullanılan ve bu sayede kuruluşlara esneklik kazandıran işlemdir.
İş akışlarını belirtmek için standart olarak BPEL4WS (Business Process Execution Language for Web Services) kullanılır.
Choreography/Orchestration nedir? SOA’daki önemi nedir? BPEL4WS kullanılarak tanımlanan bir iş süreci
özetle şunlardan oluşur; Birbirlerinden bağımsız iş basamakları, aktiviteler. Partner linkleri, süreçlerin dışarıdan ihtiyaç
duyduğu servisleri tanımlar. WSDL arayüzleri kullanılır.
İçlerinde mesajlar barındıran değişkenler aktiviteler arasında geçiş yaparak durum(state) belirtmeye yarar.
• Bu işlem için Oracle BPEL Process Manager kullanılabilir.
SOA Yaşam Döngüsü 4 evreden oluşur. Döngüde oluşu sürekli bir
gelişim ve yönetimi ifade eder. Evreleri; Model evresi Montaj evresi Uygulama evresi Yönetim evresi
SOA Yaşam Döngüsü Model evresi: İş analizlerini ve gereksinimlerin
toplanmasını kapsar. Böylece gereken süreçler modellenerek amaçları ve çıktıları öngörülür. Model sayesinde ihtiyacın karşılanabildiğine dair bilgi elde edilir ve daha sonra kalite ölçümleri için bir temel görevi görür.
Montaj evresi: Modellenen süreçte ihtiyaç olarak belirlenen ve elde olan varlıklar servisler olarak sunulur ve test edilir. Tüm servisler hazır olunca choreography/orchestration yöntemleriyle iş süreci olarak entegre edilirler.
SOA Yaşam Döngüsü Uygulama evresi: Bu evrede run-time environment,
istenen servis kalitesi ve güvenlik seviyelerine erişebilmek adına yapılandırılabilir. Kritik süreçlerin yürütülebilmesi için ölçeklendirmeler ve optimizasyonlar yapılabilir.
Yönetim evresi: Bu evrede servis varlıkları, bulunabilirliği ve erişilebilirliği, yanıt süreleri ve servisler üzerinde versiyon kontrolleri gibi konularda yönetim sağlanır. Bu evrenin önemli bir rolü ise süreçlerin anahtar performans göstergelerini izlemek ve buna göre gelecekte oluşabilecek problemleri öngörebilmektir. Bu geri bildirim model evresine iletilerek sürecin geliştirilmesini sağlar.
Kaynakça http://stackoverflow.com/questions/2026523/what-is-soa-in-plain-english http://www.indiawebdevelopers.com/resource_center/articles/soa.html http://www.slideshare.net/Zubin67/soach1ppt https://msdn.microsoft.com/en-us/library/aa480021.aspx#aj1soa_topic1 http://www.tutorialspoint.com/webservices/web_services_security.htm http://www.redbooks.ibm.com/redbooks/pdfs/sg246346.pdf https://www.opengroup.org/soa/source-book/soa/soa_ea.htm http://www.ibm.com/developerworks/webservices/tutorials/ws-soa-ibmcertified/
ws-soa-ibmcertified.html http://www.slideshare.net/PeterREgli/soap-wsdl-uddi https://www.mulesoft.com/resources/esb/what-esb http://www.oracle.com/us/technologies/soa/oracle-soa-vs-ibm-soa-345791.pdf