SOA ile mikro hizmetler arasındaki fark nedir?

Hizmet odaklı mimari (SOA), iş uygulamaları oluşturmak için hizmetler adı verilen yazılım bileşenlerini kullanan bir yazılım geliştirme yöntemidir. Her hizmet bir iş özelliği sunar. Ayrıca platformlar ve diller arasında birbirleriyle iletişim kurabilirler. Geliştiriciler, hizmetleri farklı sistemlerde yeniden kullanmak veya birkaç bağımsız hizmeti karmaşık görevleri gerçekleştirmek amacıyla birleştirmek için hizmet odaklı mimariyi kullanır. Mikro hizmetler mimarisi, hizmet odaklı mimari tarzının evrimleşmiş halidir. Her SOA hizmeti tam bir iş özelliği olsa da her mikro hizmet yalnızca tek bir görevde uzmanlaşmış çok daha küçük bir yazılım bileşenidir. Mikro hizmetler, yazılımı bulut tabanlı modern kurumsal ortamlarla daha uyumlu hale getirmek için hizmet odaklı mimarinin eksikliklerini ele alır.

SOA hakkında bilgi edinin »

Mikro hizmetler hakkında bilgi edinin »

SOA mimarisi tek parça uygulama mimarisinin hangi sınırlamalarını çözer?

Tek parça uygulama mimarisinde, geliştiriciler tüm hizmet işlevleri için tek bir kod tabanında kod yazarlar. Hizmet odaklı mimari (SOA) ile geliştiriciler, aşağıdakiler gibi tek parça uygulama mimarisi zorluklarını ele alabilir:

  • Yalnızca belirli bir bileşen ek kaynaklara ihtiyaç duysa bile tüm uygulamanın ölçeklendirilmesini gerektiren ölçeklendirme zorlukları.
  • İşlevsellik kod tabanına dağıtıldığından, özellikleri esnek bir şekilde ekleyememe veya değiştirememe.
  • Bileşenleri farklı uygulamalarda yeniden kullanamama.
  • Sınırlı hata toleransı. Bir bileşendeki başarısızlık potansiyel olarak tüm sistemi çökertebilir.
  • Yeni teknolojileri benimseme veya farklı teknolojiler kullanan harici sistemlerle entegre olma zorluğu.

Tek parça uygulama mimarileri ayrıca tüm uygulamadan sorumlu sahiplik ve geliştirme ekiplerini merkezileştirir. Mimarilerin boyutu ve karmaşıklığı nedeniyle sürekli teslim ve DevOps uygulamalarında zorluklarla karşılaşırlar. 

SOA ile, geliştiriciler yazılım işlevlerini hizmet sağlayıcı ve hizmet tüketicisi katmanlarına ayırır. Bu katmanlar, kurumsal hizmet veri yolu (ESB) aracılığıyla iletişim kurar ve veri alışverişinde bulunur. Geliştiriciler, karmaşık uygulamaları birden çok yeniden kullanılabilir hizmet şeklinde basitleştirmek için SOA kullanır. 

Mikro hizmet mimarisi SOA mimarisinin hangi sınırlamalarını çözer?

Hizmet odaklı mimari (SOA), büyük kurumsal uygulamalar oluşturmak için iyi çalışabilirken daha küçük, işletmeye özel uygulamaları ölçeklendirmek için daha fazla esnekliğe ihtiyaç duyar. Bunlar SOA'nın bazı sınırlamalarıdır:

  • Kurumsal servis veri yolu (ESB) birden fazla hizmeti birbirine bağlar ve bu da onu tek bir hata noktası haline getirir. 
  • Tüm hizmetler ortak bir veri deposunu paylaşır. Bu, hizmetlerin ayrı olarak yönetilmesini zorlaştırır. 
  • Her hizmetin geniş bir kapsamı vardır. Bu nedenle, hizmetlerden biri başarısız olursa, işletmenin tüm iş akışı etkilenecektir. 

Bu nedenle geliştiriciler, uygulama oluşturma konusunda daha ayrıntılı bir yaklaşım için mikro hizmet mimarisine yönelirler.

Mikro hizmet modeli, bir SOA hizmetini daha küçük hizmetlere böler. Her mikro hizmet kendi sınırlı bağlamında çalışır ve diğer hizmetlerden bağımsız olarak yürütülür. Kısacası, mikro hizmet mimarisi ayrı hizmetler arasında sınırlı veya sıfır bağımlılık içerir ve böylece sistem genelinde arıza riskini azaltır.

Mimari farklılıklar: SOA ve mikro hizmetler

Hizmet odaklı mimaride (SOA), daha geniş bir kurumsal kapsam bulunur. Farklı iş birimleri, ortak bir veri paylaşım platformunda verimli bir şekilde iş birliği yapar. Buna karşılık, mikro hizmetler daha dar bir kapsam için geçerlidir.

Örneğin envanter yönetimi, e-ticaret sisteminin bir SOA hizmeti olacaktır. Ancak mikro hizmet yaklaşımı, envanter yönetimini erişilebilirlik denetleyicisi, talep karşılama ve muhasebe gibi daha küçük hizmetlere böler. 

Uygulama

SOA uygulaması, farklı hizmet türlerinin bir uygulamaya entegre edilmesini içerir. Şunlar gibi hizmet türlerini bağlamak için kurumsal bir hizmet veri yolu kullanır:

  • Belirli iş operasyonlarını desteklemek için işlevsel hizmetler 
  • Belirli bir iş işlevselliğine diğer hizmetler sunmak için kurumsal hizmetler
  • Geliştiriciler tarafından uygulama oluşturmak ve dağıtmak için kullanılan uygulama hizmetleri
  • Kimlik doğrulama ve güvenlik gibi işlevsel olmayan özellikleri yönetmek için altyapı hizmetleri

Buna karşılık, mikro hizmetler mimarisi SOA'nın daha ayrıntılı ve bağımsız bir uygulamasıdır. Mikro hizmetler, SOA hizmetlerinin yaptığı gibi kaynakları paylaşmaz. Her mikro hizmet, çok özel işlevler sağlamak için bağımsız olarak çalışır.

İletişim

Uzak hizmetlere erişmek için SOA mimarisi, çeşitli hizmetleri birden çok mesajlaşma protokolüne bağlamak üzere merkezi bir kurumsal hizmet veri yolu (ESB) kullanır. Bu protokollerden bazıları SOAP, Gelişmiş Mesaj Kuyruk Protokolü (AMQP) ve Microsoft Mesaj Kuyruğu'nu (MSMQ) içerir. ESB başarısız olursa tüm SOA hizmetleri etkilenecektir. 

Bu arada mikro hizmet mimarileri; RESTful API'leri, Java Mesaj Hizmeti (JMS) veya yayınla-abone ol (pub/sub) olay akışı gibi daha basit mesajlaşma sistemleri kullanır. Bu yöntemler, veri alışverişinde bulunurken mikro hizmetlerin etkin bir bağlantı sürdürmesini gerektirmez. 

API'ler, mikro hizmet mimarileri için yaygın bir araçtır. API, iki veya daha fazla mikro hizmetin, merkezi bir kanaldan geçmeden doğrudan veri alışverişi yapmasına izin verir. Bununla birlikte, geliştiricilerin izlediği ve yönettiği düzinelerce mikro hizmet arasında karmaşık veri yolları oluşturabilir.

Veri depolama alanı

SOA ortamı, diğer bağlı hizmetler tarafından paylaşılan tek bir veri depolama katmanından oluşur. Farklı kurumsal uygulamalar SOA uygulamalarında aynı verilere erişir ve bunları yeniden kullanır. Bu da veri depolarının değerini optimize eder.

Buna karşılık, her mikro hizmetin kendi veri depolama alanı vardır. Mikro hizmet mimarilerinde, veri bağımsızlığı yeniden kullanılabilirlikten daha önemlidir. 

Dağıtım

SOA hizmetlerini dağıtmak zor olabilir çünkü bunlar belirli bir dereceye kadar ilişkilendirilmiştir. Örneğin, geliştiriciler bir hizmeti değiştirir veya yeni bir hizmet eklerlerse tüm uygulamayı yeniden oluşturmalıdır. Bunun yanı sıra, SOA uygulamaları, uygulamayı işletim sistemlerinden ve donanımdan soyutlayan container'lı hale getirme işleminden tam olarak yararlanamaz.

Öte yandan, bulut ortamında ölçeklenecek şekilde tasarlandıklarından mikro hizmetlerin dağıtımı daha kolaydır. Her mikro hizmet, geliştiricilerin bulutta container'lı hale getirip dağıtabileceği bağımsız bir uygulamadır. 

Temel faydalar: mikro hizmetler ve SOA

Hem hizmet odaklı mimari (SOA) hem de mikro hizmetler, geliştirme ekiplerinin bulut ortamları için modern uygulamaları verimli bir şekilde oluşturmasına, dağıtmasına ve yönetmesine olanak tanır. Bununla birlikte, mikro hizmetler SOA dağıtımlarına göre belirli avantajlar sunar.

Yeniden kullanılabilirlik

SOA tasarımlarındaki ilkelerden biri, yeniden kullanılabilirlik ve bileşen paylaşımına verilen önemdir. Bu mimaride, müşteriye yönelik birden çok uygulama aynı SOA hizmetlerini kullanır. Örneğin, bir faturalandırma ve sipariş izleme panosu, müşteri bilgilerini almak için aynı hizmete erişebilir.

Öte yandan, mikro hizmetler farklı bir yaklaşım benimser. Ortak kaynakları paylaşmak yerine veri çoğaltma uygularlar. Bu şekilde, mikro hizmet tabanlı bir uygulama daha verimli çalışır ve diğer hizmetlerin veri işlemleriyle sınırlı değildir. 

Hız

SOA, basit uygulamalarda makul hız sunabilir ancak geliştiriciler sisteme daha fazla hizmet ekledikçe veri gecikmesi artar. Tüm hizmetler aynı iletişim kaynakları ve veri yetenekleri için rekabet eder.

Buna karşılık, mikro hizmet mimarileri, çakışan kaynaklar paylaşmadıkları için sistem ölçeklendikçe çevik ve duyarlı kalır. Geliştiriciler, trafik talebi artarsa bilgi işlem kaynaklarını belirli bir mikro hizmete atayarak artırabilir. Bu, mikro hizmet tabanlı bir uygulamanın her zaman kabul edilebilir bir hızda çalışmasını sağlar. 

Yönetişim esnekliği

SOA tabanlı uygulamalar, farklı hizmetler tarafından kullanılan ortak depolar genelinde tutarlı veri yönetişimi sağlar.

Bununla birlikte, mikro hizmetlerle çalışan geliştiriciler, bağımsız veri depolama birimleri için farklı yönetişim politikalarına karar verebilir. Geliştirme ekipleri daha verimli iş birliği yapar ve veri yönetişim mekanizmalarını belirleme özgürlüğüne sahiptir. 

Kullanım zamanı: SOA ve mikro hizmetler

Hizmet odaklı mimari (SOA) ve mikro hizmetler, kuruluşların tek parça bir mimariden bulut ortamlarına geçiş yapmaları için farklı yollar sunar. Belirli faktörlere bağlı olarak, pratik kullanım durumlarında biri diğerinden daha uygun olabilir.

SOA

Eski veya bağımsız kurumsal uygulamaları olan kuruluşlar SOA mimarisinden yararlanır. SOA, geleneksel yazılım programlarını daha küçük modüler parçalara basitleştirir. Ayrıca, iş işlevselliklerini kolaylaştırmak için paylaşılan kaynakları bir araya getirir. Çakışan ve gereksiz hizmetler oluşturmak yerine, geliştiriciler daha fazla iş çözümü uygulamak için mevcut SOA hizmetlerini yeniden kullanabilir. 

Mikro hizmetler

Mikro hizmetler mimarisi, çevik geliştirme ekiplerini desteklemek için daha iyi bir seçenektir. Geliştiriciler, sürekli entegrasyon ve sürekli teslim (CI/CD) araçlarını kullanarak uygulamanın kararlılığını etkilemeden hızlı ve artışlı kod değişiklikleri yapabilir. Geliştiriciler şu hedeflere sahip olduğunda mikro hizmetler daha iyi bir seçimdir:

  • Tek bir uygulama oluşturmak için farklı programlama dilleri, kitaplıklar veya çerçeveler kullanma
  • Farklı yazılım çerçeveleriyle oluşturulmuş ayrı hizmetleri birleştirme
  • İşlem kaynakları tedarik etme ve ayrı hizmetleri gerçek zamanlı olarak ölçeklendirme 

Mikro hizmetler sayesinde şirketler modern bulut özelliklerinden yararlanabilir ve yüzlerce mikro hizmeti kolaylıkla dağıtabilir.

Farklılıkların özeti: SOA ve mikro hizmetler

 

SOA

Mikro hizmetler

Uygulama

Paylaşılan kaynaklarla farklı hizmetler.

Bağımsız ve amaca özel küçük hizmetler.

İletişim

ESB; SOAP, AMQP ve MSMQ gibi birden fazla mesajlaşma protokolü kullanır. 

API'ler, Java Mesaj Hizmeti, Pub/Sub

Veri depolama

Paylaşılan veri depolama alanı.

Bağımsız veri depolama alanı.

Dağıtım

Zorlayıcı. Küçük değişiklikler için tam bir yeniden inşa gereklidir.

Dağıtımı kolay. Her mikro hizmet container'a alınabilir. 

Yeniden kullanılabilirlik

Paylaşılan ortak kaynaklar aracılığıyla yeniden kullanılabilir hizmetler.

Her hizmetin kendi bağımsız kaynakları vardır. Mikro hizmetleri, API'leri aracılığıyla yeniden kullanabilirsiniz.

Hız

Daha fazla hizmet eklendikçe yavaşlar.

Trafik arttıkça tutarlı hız.

Yönetişim esnekliği

Tüm hizmetlerde tutarlı veri yönetimi.

Her depolama için farklı veri yönetimi politikaları.

AWS, mikro hizmet gereksinimlerinize nasıl yardımcı olabilir?

Modüler mimari örüntüler, sunucusuz operasyonel modeller ve çevik geliştirme süreçleri ile Amazon Web Services (AWS) üzerinde modern uygulamalar oluşturun. Her kapsam ve ölçekteki modern uygulamaları desteklemek amacıyla yüksek oranda kullanılabilir mikro hizmetler oluşturmak için en eksiksiz platformu sunuyoruz.

AWS'de mikro hizmetlerle çalışmanın yolları şunlardır:

  • Operasyonları basitleştirmek ve yönetim yükünü azaltmak için yönetilen container'larda güvenli mikro hizmetler oluşturma, izole etme ve çalıştırma. AWS'de Container'lar hakkında daha fazla bilgi edinin.
  • Mikro hizmetlerinizi sunucuları tedarik etmeden ve yönetmeden çalıştırmak için AWS Lambda'yı kullanma.
  • Mikro hizmetler mimarisini desteklemek için 15 ilişkisel ve ilişkisel olmayan, amaca yönelik AWS Bulut veritabanları arasından seçim yapma.
  • AWS App Mesh ile AWS'de çalışan mikro hizmetleri kolayca izleme ve denetleme.
  • AWS X-Ray ile karmaşık mikro hizmet etkileşimlerini izleme ve sorunları giderme.

AWS'deki mikro hizmetler, daha hızlı inovasyon yapmanıza, riski azaltmanıza, pazara ulaşma süresini kısaltmanıza ve toplam sahip olma maliyetinizi düşürmenize yardımcı olur. Hemen bir hesap oluşturarak AWS'de mikro hizmetleri kullanmaya başlayın.