Mikroservis Mimarisi Nedir? Nasıl Çalışır? Avantajları Nelerdir?

Mikroservis Mimarisi Nedir? Nasıl Çalışır? Avantajları Nelerdir?
Hosting Fiyatları

Geçtiğimiz yıllarda web uygulamaları milyonlarca kullanıcıya ev sahipliği yapmaya başladı ve terabaytlarca veri üretir hale geldi. Bu yüzden uygulamaların kullanıcıları hızlı yanıtlar ve 7/24 kullanılabilirlik beklemektedir. Uygulamaların hızlı ve kullanılabilir olması için yük artışına hızlı yanıt vermeleri gerekir. Bunu başarmanın bir yolu mikro hizmet mimarisi kullanmaktır.

Microservice Nedir?

Mikroservice, birbirleriyle iletişim kuran küçük bağımsız birimlerden oluşan bir yazılım geliştirme yaklaşımıdır. Her şey, kullanımı ve bakımı çok daha karmaşık olan monolitik mimari ile başladı, bu sayede herhangi bir sistemde herhangi bir hata meydana gelirse, tüm sistemde sorun giderilmesi gerekiyordu, ancak mikro hizmetler mimarisinde durum böyle değil.

Mikroservis Mimarisi Nedir?

Monolitik bir sistemi parçalara ayıran bir yazılım oluşturma yöntemidir. Mikro servisler ile kendi arayüzleri ve işlemleri olan ayrı modüller oluşturabilirsiniz.

Mikro hizmet mimarisi örnekleri giderek yaygınlaşmaktadır ve bu yaklaşım, günümüz yazılım geliştirme dünyasında olağanüstü bir popülerlik kazanmaktadır. Dolayısıyla, bir uygulama oluşturmak istiyorsanız, birden fazla hizmeti bir araya toplayabilirsiniz. Bunlar HTTP veya TCP protokolleri aracılığıyla etkileşime girecektir.

Mikroservis Mimarisinin Özellikleri

Mikroservis mimarisinin temel özellikleri aşağıdaki şekildedir:

1. Birden fazla bileşeni vardır

Mikro hizmetlerle, herhangi bir uygulama veya diğer yazılım, diğer hizmetlerden bağımsız olarak dağıtılabilen, test edilebilen ve düzeltilebilen ayrı bileşen hizmetlerinden oluşturulur. Sırasıyla, tüm uygulamanın bütünlüğüne zarar vermek imkansızdır. Bu nedenle, tüm uygulamayı düzeltmek ve yeniden dağıtmak yerine, düzeltilmesi gereken işlevlerle yapabileceğiniz için bu yöntemin kullanımı çok uygundur.

2. Kolay yönlendirme özelliğine sahiptir

BT pazarındaki birçok ürünün aksine mikroservislerle oluşturulan uygulamalar daha basit bir yönlendirmeye sahiptir. Böylece istekleri almak, hepsini işlemek, hızlı ve etkili bir şekilde yanıtlamak kolaydır.

3. Mikroservis merkezi değildir

Mikroservis mimarisi çok sayıda modern teknolojiyi ve platformu kucaklar, bu nedenle merkezi olmayan bir veri yönetimi ve yönetişim sistemi de gerektirir. Bu, tek bir veri tabanına sahip monolitik bir sistemin tam tersidir. Bu teknoloji sayesinde, her hizmetin emrinde ayrı, bağımsız bir veri tabanı vardır.

Mikroservis Mimarisi Nasıl Çalışır?

Aşağıda, mikro hizmetlerle bir uygulama oluşturmak için gereken temel bileşenleri bulabilirsiniz:

1. İstemciler

Arama, yapılandırma gibi çeşitli yönetim seçeneklerini gerçekleştirmek için kullanılan farklı cihazların yanı sıra farklı istemci türleri de vardır. Mimari bununla başlar.

2. Kimlik Sağlayıcılar

İstekler bu istemcilerden alındıktan sonra, çeşitli kimlik sağlayıcılardan geçirilir. Bu kimlik sağlayıcılar bu isteklerin kimlik doğrulamasını yapar ve bunları API ağ geçidine ve ardından diğer dahili hizmetlere iletir.

3. API Ağ Geçidi

Mikro hizmet mimarisinin bir diğer ayrılmaz parçası da API ağ geçididir. İstemcilerin ihtiyaç duydukları belirli bir mikro hizmeti talep edebilecekleri nokta olarak hizmet eder. İstemciler belirli bir hizmeti doğrudan talep edemedikleri için bu önemlidir, bu nedenle API ağ geçidi bu durumda bir aracı görevi görür. Çeşitli avantajlarla birlikte gelir:

  • İstemcilere haber vermeden belirli bir hizmeti güncelleme imkanı.
  • Web dostu olmayan protokollere mesaj gönderme imkanı.
  • Yüksek düzeyde veri koruması ve yük yönetimi sağlayabilen çapraz fonksiyonel bir seçenektir.

4. Mesajlaşma Formatları

Hizmetlerin iletişim kurması için iki ana mesajlaşma biçimi vardır. Bunlar senkron ve asenkron mesajlardır. İlk durumda, istemciler servisin yanıtını bekler. Aynı zamanda, mikro hizmetler HTTP protokolüne dayalı temsili durum aktarımını kullanır. İkinci durumda, müşterilerin hizmet yanıtını beklemek zorunda kalmaması için AMQP gibi protokoller uygulanabilir.

5. Veri Tabanları

Her mikro hizmetin kendine özgü bir veri tabanı vardır. İlgili API’ler aracılığıyla güncellenebilir.

6. Statik İçerik

Başarılı hizmet iletişiminden sonra depolamaya (genellikle bulut tabanlı) uygulanabilir. Ardından, içerik CDN’ler aracılığıyla doğrudan istemcilere teslim edilir.

7. Yönetim

Mikro hizmet mimarisi için ortak olan bir başka bileşendir. Yönetim, hizmetlerin dengede tutulması ve arızaların tespit edilip çözülmesi için ayrılmaz bir unsurdur.

8. Hizmet Keşfi

Hizmetler arasındaki iletişim rotasının tespit edilmesini sağlar. Düğümlerin yerleştirildiği yerlerde listelenen tüm hizmetleri içerir.

Microservices Mimari Tasarım Prensipleri

Microservices mimari tasarım prensipleri aşağıdaki şekildedir:

1. Tek sorumluluk ilkesi

Tek sorumluluk ilkesi, SOLID tasarım modelinin bir parçası olarak tanımlanan ilkelerden biridir. Bir birimin, bir sınıfın, bir fonksiyonun veya bir mikro hizmetin tek ve yalnızca tek bir sorumluluğu olması gerektiği anlamına gelir.

Hiçbir zaman, bir mikro hizmet birden fazla sorumluluğa sahip olmamalıdır.

2. İş yetenekleri etrafında inşa edilmiştir

Mikro hizmetler belirli iş işlevlerine odaklanmalı ve işlerin yapılmasına yardımcı olmasını sağlamalıdır. Bir mikro hizmet, iş amacını çözmek için en uygun olan uygun teknoloji yığınını veya arka uç veri tabanı depolamasını benimsemekten kendisini asla kısıtlamamalıdır.

Bu, bazı alanlarda bazı ödünler vererek birden fazla iş çözümünü çözmeye çalıştığımız monolitik uygulamalar tasarladığımızda sıklıkla karşılaştığımız bir kısıtlamadır. Mikro hizmetler, elinizdeki sorun için en iyi olanı seçmenize olanak tanır.

3. Siz inşa edin, sahibi siz olun

Bu tür bir tasarımın bir diğer önemli yönü de geliştirme öncesi ve sonrası sorumluluklarla ilgilidir. Büyük bir işletmede, genellikle bir ekip uygulama konumunu geliştirir ve bazı bilgi aktarım oturumlarından sonra projeyi bakım ekibine devreder. Mikro hizmetlerde, hizmeti oluşturan ekip, hizmetin sahibidir ve gelecekte bakımını yapmaktan sorumludur.

Bu sahiplenme, geliştiricileri yazılımlarının günlük işleyişiyle temasa geçirir ve geliştirdikleri ürünün gerçek dünyada müşteriler tarafından nasıl kullanıldığını daha iyi anlamalarına sebep olur.

4. Altyapı otomasyonu

Mikro hizmetler için altyapı hazırlamak ve inşa etmek de bir diğer önemli ihtiyaçtır. Bir hizmet bağımsız olarak dağıtılabilir olmalı ve veya fiziksel kaynakları soyutlayan sanal makineler gibi yürütme ortamlarını bir araya getirmelidir.

Mikro hizmetler ve SOA arasındaki en büyük farklardan biri özerklik seviyeleridir. Çoğu SOA uygulaması hizmet düzeyinde soyutlama sağlarken, mikro hizmetler daha da ileri giderek gerçekleştirme ve yürütme ortamını soyutlar.

Geleneksel uygulama geliştirmelerinde, bir WAR veya EAR oluşturur, ardından bu JBoss, WebLogic, WebSphere vb. gibi bir JEE uygulama sunucusuna dağıtılır. Aynı JEE konteynerine birden fazla uygulama yerleştirebilirsiniz. İdeal bir senaryoda, mikro hizmetler yaklaşımında, her bir mikro hizmet, tüm bağımlılıkları içeren ve bağımsız bir Java işlemi olarak çalışan bir fat Jar olarak oluşturulacaktır.

Monolitik Mimari Nedir?

Monolitik mimari, şirketlerin geçmişte ve bazılarının hala kullandığı bir altyapıdır. Geliştiricinin, son kullanıcıya ulaşmadan önce tekrar bir araya getirilen farklı kod modüllerinden oluşan tek bir sistem geliştirdiği ve sürdürdüğü bir tarzdır. Büyük bir veri tabanı vardır ve tüm hizmetler yalnızca bu veri tabanı üzerinden yönetilir. Bu daha çok web uygulamaları geliştirmenin geleneksel bir yoludur. Şimdi, bir şirket herhangi bir güncelleme getirmek istediğinde veya herhangi bir hizmeti izole etmek istediğinde veya operasyonlarını genişletmek istediğinde büyük zorluklar ortaya çıkarmaktadır.

Mikroservis Mimarisi Ne İçin Kullanılır?

Mikroservis için birçok kullanım durumu vardır, ancak en yaygın olanlardan biri eski uygulamaların yeniden yapılandırılmasıdır. Bu, işletmelerin işlevselliği değiştirmek veya bazı yeni özellikler eklemek, buluta geçmek veya sadece küresel sistem modernizasyonu yapmak için BT yeteneklerini yeniden inşa etmeye karar verdikleri zamandır.

Mikro hizmetler, işlevselliğini modüler bileşenlere ayıran bir uygulama oluşturmaya yönelik bir yaklaşımdır. API’ler, diğer uygulamalarla iletişim kuran bir uygulamanın parçasıdır. Dolayısıyla, API’ler mikro hizmetleri etkinleştirmek için kullanılabilir.

Mikro hizmetler, uygulama geliştirme ve dağıtımında modülerlik, esneklik ve çeviklik sağlar. Bir uygulamayı daha küçük bileşenlere ayırarak, her bileşen bağımsız olarak geliştirilebilir, test edilebilir ve dağıtılabilir. Bu aynı zamanda uygulamanın farklı bölümlerini gerektiği gibi ölçeklendirmeyi de kolaylaştırır.

API’ler farklı mikro hizmetler arasındaki iletişim için gereklidir. Farklı hizmetlerin birlikte çalışması ve veri alışverişi için bir yol sağlar. İyi tanımlanmış bir API olmadan mikro hizmetleri uygulamak çok zordur.

Mikroservis Mimarisinin Avantajları Nelerdir?

Geliştiricilerin mikro hizmet mimarisini kullanmasının nedenlerinden bazıları aşağıdaki şekildedir:

  • Mikro hizmetlerin taşınması ve optimize edilmesi kolaydır. Çok ekipli bir ortamda faaliyet gösteren işletmelerin kendi bileşenlerinin teslimi için gereken hız ve çeviklikte çalışmasını sağlar. Her ekip, kendi gereksinimleri için en uygun teknoloji yığınını seçme esnekliği ile kendi mikro hizmet setini geliştirebilir. 
  • Bir mikro hizmet mimarisi, bir ekibin kendisine atanan faaliyetleri diğer bir ekip kendi faaliyetlerini gerçekleştirmeden önce tamamlamasını gerektirmez. 
  • Mikro hizmetler DevOps, CI/CD ve otomasyon için iyi bir tamamlayıcı ve kolaylaştırıcıdır.
  • Mikro hizmetlerin kullanılması zaman kazandırır ve üretkenliği artırır. Bir uygulamanın bir bölümündeki değişiklikler tüm uygulamanın yeniden dağıtılmasını gerektirmediğinden, QA ve sürüm döngüleri daha kısa olabilir.
  • Mikro hizmetler kullanıcı deneyimini iyileştirmeye yardımcı olur. Geliştirme ekipleri, pazardaki değişikliklere ve taleplere ayak uydurmak için uygulamaları sürekli olarak yineleyebilir ve iyileştirebilir.

Microservice Mimarisi Hangi Projeler İçin Uygundur?

Mikro hizmetlerin büyük ölçekli uygulamalar için daha uygun olmasının birkaç temel nedeni vardır. Bunlar aşağıdaki şekildedir:

  • Mikro hizmetlerin dağıtık bir ortamda geliştirilmesi ve dağıtılması daha kolaydır. Ekipler aynı uygulamanın farklı bölümleri üzerinde çalışırken, her bir mikro hizmeti ayrı ayrı dağıtmak çok daha kolaydır.
  • Mikro hizmetler monolitik uygulamalara göre daha esnek ve ölçeklenebilirdir. Bağımsız olarak yukarı veya aşağı ölçeklendirilebilirler ve bir mikro hizmet başarısız olursa diğerleri çalışmaya devam edebilir.
  • Mikro hizmetler farklı dillerde yazılabilir, bu da karmaşık uygulamalar geliştirirken büyük bir avantaj olabilir. Farklı ekipler farklı dillerde farklı mikro hizmetler üzerinde çalışabilir ve genel uygulama hala doğru şekilde çalışabilir.
  • Mikro hizmetler, özelliklerin değiştirilmesi veya eklenmesi söz konusu olduğunda daha yüksek düzeyde esneklik sunar. Yeni bir mikro hizmet oluşturarak yeni özellikler eklenebilir ve mevcut özellikler uygulamanın geri kalanını etkilemeden değiştirilebilir veya kaldırılabilir.

Genel olarak mikro hizmetler, dağıtık ekipler tarafından geliştirilmesi ve bulutta konuşlandırılması gereken büyük ölçekli uygulamalar için daha iyi bir seçimdir. Bununla birlikte, daha küçük uygulamalar monolitik bir kod tabanı ile daha iyi olabilir.

Microservices API Nedir?

API, iki veya daha fazla yazılım uygulaması arasındaki iletişimi mümkün kılan bir yazılım çözümüdür. Bir yazılım uygulamasının API’si, API’ye yapılabilecek bir grup izin verilebilir isteği ve bu isteklere verilecek yanıtları tanımlar.

Mikro hizmet, yazılım uygulamasının çalışmasını modüler, kendi kendine yeten programlara ayıran bir uygulama geliştirme çerçevesidir. Mikro hizmet basitçe geliştiricilerin yazılım geliştirmesine ve sürdürmesine olanak tanır.

Oldukça farklı olmalarına rağmen, API ve mikro hizmetler genellikle birlikte eşleştirilir, çünkü mikro hizmetlerde bulunan hizmetler genellikle kendi içlerinde iletişim kurmak için API’leri kullanır. Farklı uygulamaların diğer uygulamalarla entegre olmak için açık genel API’leri kullanmasına benzer şekilde, bir mikro hizmetin bir yönü aynı mikro hizmetin farklı bölümlerine erişmek için özel bir API kullanır.

Bir mikro hizmetin içinde, her hizmetin hangi talebi alabileceğini ve nasıl yanıt vereceğini belirlemekten sorumlu kendi özel API’si vardır. Bu API’ler tarafından izlenen ilke genellikle REST ilkesidir.

İki mikro hizmetin birbirine benzemediğini ve hepsinin API’yi farklı yaklaşımlarla kullandığını anlamak önemlidir. Bazıları tek bir hizmete birden fazla API atayabilir veya birden fazla hizmete erişmek için tek bir API kullanabilir.

Ayrıca API’lerin mikro hizmetlerin ötesinde bir kullanıma sahip olduğu da unutulmamalıdır. Örneğin, web API’si birçok web uygulaması için çok önemli olan sistemler arasında veri paylaşımını sağlamaya yardımcı olur. Ayrıca, API’ler herhangi bir mikro hizmet uygulaması olmaksızın dahili olarak da kullanılabilir.

Microservices için Teknoloji Seçimi ve Alternatifler

Mikro hizmet mimarileri çeşitli dilleri ve araçları içerebilir, ancak mikro hizmetleri etkinleştirmek için gereken temel araçlar vardır.

1. API Ağ Geçitleri ve Hizmet Ağı

Mikro hizmetler genellikle iletişim kurmak için API’leri kullanır ve istemci ile hizmet arasında aracı katman olarak bir API ağ geçidi bulunur. Ağ geçidi istekleri yönlendirebilir ve güvenliği artırabilir, bu da özellikle artan sayıda hizmet olduğunda kullanışlıdır.

Hizmet ağı, mikro hizmet mimarilerinin bir diğer önemli yönüdür. Hizmetten hizmete iletişimi idare etmek için özel bir altyapı katmanıdır. Servis ağı, mikro hizmet etkileşimleri için yük dengeleme, hizmet keşfi, trafik yönetimi, telemetri ve güvenlik gibi özellikler sağlar. Trafik üzerinde ayrıntılı kontrol sunarak verilerin hizmetler arasında verimli ve güvenli bir şekilde yönlendirilmesini sağlar. Popüler hizmet ağları arasında Istio, Linkerd ve Consul Connect yer alır.

2. Hizmet Keşif Teknolojisi

Mikro hizmetlerin çalışması için birbirlerini bulabilmeleri gerekir. Hizmet keşif araçları, mikro hizmetlerin konumunu ve durumunu gerçek zamanlı olarak belirlemeye yardımcı olarak geliştiricilerin kod yazmasını kolaylaştırır ve hızla değişen mimariden kaynaklanan sorunları önler. Dinamik bir veri tabanı, örneklerin konumunu belirten bir mikro hizmet kayıt defteri görevi görerek geliştiricilerin hizmetleri keşfetmesine olanak tanır.

3. Olay Akışları ve Uyarılar

Hizmetler durum farkındalığına sahip olmalıdır ve API çağrıları durum bilgilerini takip etmek için etkili değildir. Durum verilerini ilgili taraflara otomatik olarak iletmek için durumu belirleyen API çağrılarının uyarılar veya olay akışlarıyla birleştirilmesi gerekir. Bazı işletmeler genel amaçlı bir uyarı sistemi veya mesaj aracısı kullanırken, diğerleri olay odaklı sistemler oluşturur.

4. Serverless

Mikro hizmetlerle yakından bağlantılı olan bir diğer teknoloji de serverless bilişimdir. Serverless, sunucu olmadığı anlamına gelmez. Bunun yerine, bulut sağlayıcısının sunucuyu yönettiği ve kaynakların dinamik olarak tahsis edildiği bir bulut bilişim yürütme modelidir. Önceden satın alınan kapasite için değil, yalnızca gerçek kullanım için ücretlendirilirsiniz.

Sunucusuz mimari, mikro hizmetler için doğal bir uyumdur çünkü geliştiricilerin altyapısal hususlar hakkında endişelenmeden bireysel hizmetlere odaklanmasına olanak tanır. Ayrıca hizmetin taleplerini karşılamak için otomatik olarak ölçeklenir ve bu da mikro hizmetlerin otonom doğasıyla uyumludur.

5. Uç Bilişim

Edge computing, hesaplama ve veri depolamayı veri kaynaklarına yaklaştıran dağıtılmış bir bilişim paradigmasıdır. Bu, veri işlemenin büyük, merkezi veri merkezlerinde gerçekleştiği geleneksel bulut bilişimin tersidir.

Bir mikro hizmet mimarisinde uç bilişim, verilerin işlenmek üzere merkezi bir sunucuya gitmesi gerekmediğinden gecikme süresini azaltmaya yardımcı olabilir. Bu, özellikle düşük gecikmenin çok önemli olduğu gerçek zamanlı uygulamalarda kullanışlıdır. Ayrıca, veriler ağın ucunda işlenebildiği ve yalnızca ilgili veriler merkezi sunucuya gönderilebildiği için kaynakların daha verimli kullanılmasını sağlar.

Microservices vs SOA: İki Mimari Arasındaki Farklar

SOA ve mikro hizmetlerin başlıca özelliklerinin çoğu benzerdir. Her ikisi de uygulamaları geliştirmek ve çalıştırmak için bir bulut ya da hibrit bulut ortamı içerir, uygulamaları oluşturmak ve kullanmak için gerekli olan birden fazla hizmeti birleştirmek için tasarlanmıştır ve her biri büyük, karmaşık uygulamaları düzenlenmesi ve dağıtılması daha esnek olan daha küçük parçalara etkili bir şekilde ayırır. Hem mikro hizmetler hem de SOA bulut ortamlarında çalıştığından, her biri büyük veri boyutu ve hızlarının modern taleplerini karşılamak için ölçeklenebilir.

Bununla birlikte, SOA ve mikro hizmetler arasında her birinin uygun olduğu kullanım durumunu belirleyen birçok fark vardır:

MicroservicesSOA
MimarlıkBağımsız olarak çalışabilen hizmetlere ev sahipliği yapmak üzere tasarlandı.Kaynakları hizmetler arasında paylaşmak için tasarlandı.
Bileşen paylaşımıTemel olarak bileşen paylaşımı içermez.Sıklıkla bileşen paylaşımını içerir.
Ayrıntı düzeyiAyrıntılı hizmetlerDaha büyük, daha modüler hizmetler
Veri depolamaHer hizmet bağımsız bir veri depolama alanına sahip olabilir.Hizmetler arasında veri depolama paylaşımını içerir.
YönetişimEkipler arasında işbirliği gerektirir.Ekipler arasında ortak yönetişim protokolleri gerektirir.
Boyut ve kapsamDaha küçük ve web tabanlı uygulamalar için daha iyidir.Büyük ölçekli entegrasyonlar için daha iyidir.
İletişimBir API katmanı aracılığıyla iletişim kurar.Bir ESB aracılığıyla iletişim kurar.
Birleştirme ve uyumBağlantı için sınırlı bağlama dayanır.Kaynak paylaşımına dayanır.
Uzaktan hizmetlerREST ve JMS kullanır.SOAP ve AMQP gibi protokolleri kullanır.
DağıtımHızlı ve kolay dağıtımDağıtımda daha az esneklik
Domain Sorgulama