Hizmet odaklı mimari nedir?

Servis odaklı mimari (SOA), bu yüzyılın başlarında dağıtılmış bilgi işlemin bir evrimi olarak ortaya çıktı. SOA'dan önce hizmetler , uygulama geliştirme sürecinin sonucu olarak anlaşılıyordu. SOA'da uygulamanın kendisi hizmetlerden oluşur. Hizmetler tek tek sunulabilir veya daha büyük, bileşik bir hizmette bileşenler olarak birleştirilebilir.

Hizmetler, REST veya SOAP (Basit Nesne Erişim Protokolü) gibi bir protokol kullanarak kablo üzerinden etkileşim kurar. Hizmetler gevşek bir şekilde birleştirilmiştir , yani hizmet arabirimi temeldeki uygulamadan bağımsızdır. Geliştiriciler veya sistem entegratörleri, her hizmetin nasıl uygulandığını bilmeden bir uygulama içinde bir veya daha fazla hizmeti oluşturabilir.

Bu makale, Java SOA'ya ve SOAP tabanlı web hizmetleri kullanılarak uygulanan hizmet odaklı bir mimarinin temel özelliklerine genel bir bakış niteliğindedir. Ayrıca SOA ve mikro hizmetleri kısaca karşılaştıracağım ve Java'daki RESTful ve SOAP tabanlı web hizmetleri arasındaki farkı tartışacağım.

SOA ve web hizmetleri

SOA ve web hizmetleri sıklıkla birbirine karıştırılır, ancak aynı şey değildir. SOA, geliştiricilerin birden çok uygulama hizmetini daha büyük, bileşik bir hizmette birleştirmelerine olanak tanıyan bir mimaridir. SOA, SOAP tabanlı web hizmetleri veya REST API'leri veya bazen her ikisinin bir kombinasyonu kullanılarak uygulanabilir. SOA'da bir hizmetin , isteklere yanıt verebilen, uzaktan erişilebilen herhangi bir kaynak olduğunun anlaşılması önemlidir . Belirli protokoller kullanılarak bir web hizmeti uygulanır.

Neden hizmet odaklı mimari?

SOA, üç yaygın kurumsal zorluğa hitap eder:

  • İş değişikliklerine hızla yanıt verin.
  • Mevcut altyapı yatırımlarından yararlanın.
  • Müşteriler, ortaklar ve tedarikçilerle yeni etkileşim kanallarını destekleyin.

Kurumsal altyapı, işletim sistemleri, uygulamalar, sistem yazılımları ve uygulama altyapısı genelinde heterojendir. Sonuç olarak, birçok kurumsal sistem, bir dizi birbirine bağlı hizmet sunan karmaşık ve tutarsız uygulamalardan oluşur. Mevcut iş süreçlerini çalıştıran mevcut uygulamalar kritik öneme sahiptir, bu nedenle sıfırdan başlamak veya bunları değiştirmek hassas bir öneridir. Ancak işletmeler, iş taleplerini karşılamak için teknik altyapıyı değiştirebilmeli ve genişletebilmelidir.

SOA ve mikro hizmetler

Mikro hizmetler, SOA'dan geliştirilen mimari bir tarzdır. Her ikisi de dağıtılmış mimarilerdir ve her ikisi de ayrıştırılmış bir paradigma sunar. Hizmet odaklı mimari altyapı üzerinde daha ağırken, mikro hizmetler daha esnek ve hafif bir geliştirme tarzı sunar. Her ikisinin de artıları ve eksileri vardır ve her ikisi de yaygın olarak kullanılmaktadır. Genel olarak, SOA daha fazla formaliteyi destekleyecek kaynaklara sahip yerleşik işletmeler tarafından daha sık uygulanır veya sürdürülür. Mikro hizmetler genellikle çeviklik gerektiren yeni veya büyüyen kuruluşlara hitap eder.

Monolitik bir mimari ile karşılaştırıldığında, SOA'nın gevşek bağlı yapısı, yeni hizmetlerin eklenmesini veya yeni iş gereksinimleri için mevcut hizmetleri yükseltmeyi nispeten sorunsuz hale getirir. Ayrıca, hizmetleri farklı kanallarda tüketilebilir hale getirme ve eski uygulamaları hizmet olarak sunma ve böylece altyapı yatırımlarını koruma seçeneği sunar.

Gevşek bir şekilde bağlandıklarından, SOA bileşenleri diğer bileşenlere minimum etki ile değiştirilebilir. Bileşenler ayrıca mimariye standartlaştırılmış bir şekilde eklenebilir ve yüke göre ölçeklendirilebilir.

Örnek olarak, bir kuruluşun yeni, bileşik bir tedarik zinciri uygulaması oluşturmak için mevcut bir dizi uygulamayı nasıl kullanabileceğini düşünün. Mevcut uygulamalar heterojen ve çeşitli sistemlere dağılmış olsa da, işlevsellikleri açığa çıkarılır ve standart arayüzler kullanılarak erişilir.

Matthew Tyson

SOA'nın temel özellikleri

SOA, başka bir bileşen tarafından sağlanan tek bir bileşen tüketen hizmetler kadar basit veya MuleSoft'un ESB'si gibi bir kurumsal hizmet veriyolu aracılığıyla etkileşim kuran bir dizi bileşen kadar karmaşık olabilir. Ölçek ne olursa olsun, başarılı bir SOA uygulamasının anahtarı, hedeflerinize ulaşmak için mümkün olduğunca az karmaşıklık kullanmaktır. İlk ve son sorunuz her zaman şöyle olmalıdır: Bu tasarım iş gereksinimlerimizi karşılıyor mu?

Ölçek veya karmaşıklıktan bağımsız olarak, hizmet odaklı bir mimarinin modeli aşağı yukarı aynıdır:

  • Hizmet sağlayıcılar uç noktaları açığa çıkarır ve her uç noktada mevcut eylemleri açıklar.
  • Hizmet tüketicileri istekleri yayınlar ve yanıtları tüketir.
  • Servis sağlayıcılar, istekleri işlemek için mesajlar üretir.

Hizmet odaklı mimarinin uygulanması

SOA'yı uygulamak için temel hizmet mimarisiyle başlarsınız, ardından altyapıyı, yani protokolleri ve iletişim ve birlikte çalışabilirliği sağlayan diğer araçları sağlarsınız. Şekil 2, tipik bir servis mimarisinin bir diyagramını göstermektedir.

Matthew Tyson

Bu şemada, üç tüketici, mesajları uygun bir hizmet uygulamasına dönüştüren ve yönlendiren bir kurumsal hizmet veri yoluna mesajlar göndererek hizmetleri çağırır. Bir iş kuralları motoru , bir hizmette veya hizmetler genelinde iş kurallarını birleştirir. Bir hizmet yönetimi katmanı ; denetim, faturalama ve günlük kaydı gibi etkinlikleri yönetir.

Bu mimarideki bileşenler gevşek bir şekilde birleştirilmiştir, böylece bir bütün olarak uygulamaya nispeten minimum etki ile değiştirilebilir veya güncellenebilirler. Bu, kuruluşa iş süreçlerini gerektiği gibi ekleme veya güncelleme esnekliği sağlar. Çoğunlukla, bireysel hizmetlerdeki değişiklikler diğer hizmetleri büyük ölçüde etkilememelidir.

SOAP vs RESTful web servisleri

Örneğin JAX-RS API veya Spring Boot Actuator kullanarak SOA stilini benimsemek ve REST ile uygulamak mümkündür, ancak bu tartışma bu makalenin kapsamı dışındadır. SABUN ile RESTful web hizmetlerinin yararlı bir karşılaştırması için "SABUN - REST - JSON" bölümüne bakın. Ayrıca, RESTful web hizmetleri ile mikro hizmetlerle ilişkili daha hafif tarz arasında bazı örtüşmeler vardır.

SOAP tabanlı web hizmetleri

SOAP kullanılarak uygulanan web hizmetleri, RESTful web hizmetleri veya mikro hizmetler uygulamasından daha katı, ancak SOA'nın ilk günlerinden çok daha esnektir. Burada, SOAP tabanlı web hizmetleri için gerekli olan üst düzey protokollere bakacağız.

SABUN, WSDL ve XSD

SOAP, WSDL ve XSD, SOAP tabanlı bir web hizmeti uygulamasının temel altyapısıdır. WSDL, hizmeti tanımlamak için kullanılır ve SOAP, hizmet tüketicileri ve sağlayıcılar arasında mesaj göndermek için taşıma katmanıdır. Hizmetler, XML Şeması (XSD) kullanılarak resmi olarak tanımlanan mesajlarla iletişim kurar. WSDL'yi hizmetin arabirimi olarak düşünebilirsiniz (genel olarak bir Java arabirimine benzer). Uygulama Java sınıflarında yapılır ve ağ üzerinden iletişim SOAP aracılığıyla gerçekleşir. İşlevsel olarak, bir tüketici bir hizmet arar, o hizmet için WSDL'yi alır ve ardından SOAP kullanarak hizmeti başlatır.

Web hizmeti güvenliği

WS-I Temel Profil 2.0 özelliği ileti güvenliğini ele alır. Bu belirtim, kimlik bilgisi değişimi, mesaj bütünlüğü ve mesaj gizliliğine odaklanır.

Web hizmeti keşfi

Web hizmeti keşfinin temel taşı olan UDDI (Evrensel Açıklama, Tanım ve Entegrasyon) tarihe karıştı. Bugün, SOAP tabanlı bir web hizmetini, bir uç nokta URL'si aracılığıyla, başka bir hizmette yaptığınız gibi ortaya çıkarmak yaygındır. Örnek olarak, JAX-WS Service Endpoint Interface ve bunun @WebServiceve @WebMethodek açıklamalarını kullanabilirsiniz.

Web hizmetleri oluşturma ve dağıtma

Java geliştiricilerinin, Apache Axis2 ve Spring-WS dahil SOAP tabanlı web hizmetlerini oluşturmak ve dağıtmak için çeşitli seçenekleri vardır; ancak Java standardı, XML Web Hizmetleri için Java API'si olan JAX-WS'dir. JAX-WS'nin arkasındaki temel fikir, Java sınıfları oluşturmak ve gerekli yapıları oluşturmak için bunlara açıklama eklemektir. Temel olarak JAX-WS, Java sınıflarını XML'e bağlamak için genel amaçlı bir kitaplık olan JAXB dahil olmak üzere birkaç Java paketi kullanır.

JAX-WS, temelde yatan karmaşıklığı ve protokolleri geliştiriciden gizleyerek, Java tabanlı SOAP hizmetlerini tanımlama ve dağıtma sürecini kolaylaştırır. Eclipse gibi modern Java IDE'leri, JAX-WS web hizmetlerini geliştirmek için tam destek içerir. JAX-WS spesifikasyonu da Jakarta EE'de devam eden geliştirme için seçilmiştir.

Sonuç

SOAP tabanlı web hizmetleriyle uygulanan hizmet odaklı mimari, RESTful web hizmetleri veya mikro hizmetlerden daha katı ve resmi hizmet tanımları gerektirir. Bununla birlikte, bazı büyük kuruluşlar, SOAP tarafından uygulanan daha resmi stili tercih etmeye devam ediyor. Birçok büyük ölçekli eski sistem de SOAP üzerine inşa edilmiştir ve bazı B2B ve dahili sistemler, daha resmi olarak tanımlanmış API sözleşmeleri için SOAP tabanlı web hizmetlerini seçer. Büyük ölçekli bir kurumsal sistem geliştiriyor veya sürdürüyor olsanız da, SOA modelini anlamak ve onu uygulamak için seçeneklerinizi değerlendirebilmek, programlama kariyerinizde size iyi hizmet edecektir.

Bu hikaye, "Hizmet odaklı mimari nedir?" orijinal olarak JavaWorld tarafından yayınlandı.