Professional Documents
Culture Documents
MİKROSERVİSLER
GELİŞTİRME PLATFORMU
Mikroservis mimari kalıplarına uygun yazılım Firmalar ve kurumlar bu akýþa ayak uydurmak
geliştirme ve işletme süreçlerini için daha hýzlý yenilikler yapmak zorundadýr.
standartlaştırarak yazılım geliştirmeyi ve Dijitalleþmenin temel gereksinimi olan
projelerin gerçekleşme sürelerini azaltmak yazýlýmýn, daha hýzlý, daha sýk ve daha saðlam
amacıyla, Yazılım Teknolojileri Araştırma bir þekilde güncellenmesi gerektirmektedir.
Enstitüsü tarafından açık kaynak teknolojiler Burada mikroservisler bu ihtiyacý karþýlamak
üzerinde, kararlı bir yapıda hizmet sağlayan için bir model olarak ortaya çýkmýþtýr.
Mikroservis Tabanlı Yazılım Geliştirme
Platformu geliştirilmiştir.
Mikroservisler, her uygulama
NEDEN işlevinin kendi başına bir hizmet olduğu
MİKROSERVİSLER? ve bu hizmetlerin ayrık kapsayıcılarda
dağıtıldığı ve bu kapsayıcıların API'ler
Ýnternetin yaygýnlaþmasý ile birlikte, daha önce aracılığıyla birbirleriyle konuştuğu
görmediðimiz bir hýzda, teknolojik ve mimari bir modeldir.
ekonomik bir deðiþim yaþamaktayýz.
Yazýlýmdan baþka bir ürünü olmayan þirketler,
100 yýllýk þirketlerden daha deðerli hale gelmiþ
ve dünyanýn en büyük þirkerleri arasýndadýr.
Yazýlýmdan üretilen katma deðer, her geçen
gün daha yüksek seviyelere çýkmaktadýr.
Yazýlýmlar, günlük yaþamýmýzýn bir parçasý
haline gelmiþ, bireysel ve kurumsal olarak
toplam verimliliðimiz artmýþ ve maliyetlerimiz
de ayný þekilde düþmüþtür.
Yazılımlarda Ölçeklenebilirlik
Mikroservisler
Y ekseni
ölçeklendirmesi:
Uygulamanýn
iþlevselliðine göre
parçalara (farklý
servislere)
r
le
ayrýþtýrýlmasýný ifade
üm
eder. Bu eksen
l
Bö
Satış
Servisi
Satış
Değerlendirme
Ödeme Servisi
Ödeme
Dağıtım Servisi
Muhasebe Muhasebe
Değerlendirme
Servisi
Servisi
Değerlendirme
Dağıtım
Servisi
Her bir servis otonom ve küçük takýmlarla geliþtirilir, büyük takýmlara gerek yoktur
ve tüm ekiplerin verimliliðini artýrýr.
Her serviste yapýlacak geliþtirme hýzlýca yapýlýr, daha az emek ve karmaþýklýk içerir
ve tüm uygulamada sadece o servisin etkilenmesiyle hýzlýca canlýya çýkýlýr.
Geliþtirme ekiplerinin otonom hareket etmelerini saðlar. Bir ekip diðer servisin
yapýsýný bilmek zorunda deðildir.
Her bir servisin verisi kendisine aittir. Ayrý tablolar, ayrý þemalar ya da ayrý veri
tabanlarý þeklinde yapýlandýrýlabilirler.
Her servisin kodu diðerinden baðýmsýzdýr, baðýmsýz kurulur ve yönetilir. Baðýmsýz
olarak ölçeklenebilir.
Her bir servis farklý bir dil ya da kütüphane kullanýlarak üretilebilir. Yeni
teknolojilerin kolayca denenmesini ve uygulanmasýný saðlar.
Servisler küçük olduðu için bakýmý kolay yapýlýr. Yazýlýmda yeni özellikler getirme
sýklýðýný artýrýr. Gereksinimlere çok hýzlý tepki verilir.
Çok iyi hata izolasyonu saðlar. Eðer bir serviste bir sorun olursa, tüm sistemi
etkilemeyecek, sadece o serviste kalacaktýr. Geri kalan sistem sorunsuz çalýþmaya
devam edecektir.
Sipariş Ekibi
Sipariş Servisi
Ödeme Ekibi
Ödeme Servisi
Dağıtım Ekibi
Dağıtım Servisi
Canlı
Ortam
MİKROSERVİSLERİN
ZOR YANLARI
Uygulama testleri çok daha önemli olmaya ve daha karmaþýk olmaya baþlar.
Otomatik testlere ve otomatik ölçeklendirme yeteneklerine sahip olmanýz gerekir.
MİKROSERVİS
MİMARİ KALIPLARI
Ayrıştırma Kalıpları
İş kabiliyetlerine göre ayrıştırma: Mikroservislerimizi, var olan iþi
Uygulamayı yapma þeklinize, kurumunuzun yapýlanmasýna göre ayrýþtýrmaktýr.
Mikroservislere Alt alanlara göre ayrıştırma: Ýþ kabiliyetlerine göre ayrýþtýrmaya
Nasıl benzer, fakat eðer iþ kabiliyetleriniz verimli bir þekilde
Ayrıştıracaksınız? yapýlandýrýlmamýþsa ve verimsizlikler varsa bunu yazýlýma da taþýmýþ
olacaðýnýzdan, yazýlýmý, farklý ayrýþtýrma metedolojileriyle, olmasý
gereken þekilde tasarlama imkanýnýz olacaktýr.
Kurulum Kalıpları
Veri depolamayan uygulamalarda konteyner mimarisi zorunlu ve en
Kodu etkili yol olarak kabul edilmiþtir ve kurumsal anlamda
olgunlaþmýþtýr. Bu yüzden her bir konteynere bir servis ya da sadece
Servislere
bir fonksiyon olarak kurulabilen serverless kurulum kalýplarý
Nasıl Kurulum piyasayý domine etmektedir.
Yapacaksınız?
Servisler farklý diller kullanýlarak kurulabilmektedir.
İletişim Kalıpları
Uzaktan Prosedür Çağrısı: Servisler arasýnda senkron bir iletiþim
Servisler Arası ihtiyacý olduðunda kullanýlýr. Ýstek-Cevap (Request-Response)
temelli yaklaþýmla gerçekleþtirilir. Yalnýzca ve Yalnýzca bir servis
Hangi İletişim
diðerinden sadece okunabilir (read-only) bir þey sorguluyorsa ve
Mekanizmalarını sadece sorgulayan tarafta veritabaný deðiþikliði olduðu durumlarda
Kullanacaksınız? kullanýlabilir.
Mesajlaşma: Servisler arasýnda asenkron bir iletiþim ihtiyacý
olduðunda kullanýlýr. Yayýnla-Abone ol temelli yaklaþýmla
gerçekleþtirilir. Her iki serviste de veri tabaný deðiþikliði olacaksa bu
iletiþim biçimi kullanýlýr.
Bu yöntemin gerçekleþtiriminde bir mesaj kuyruðu kullanýlýr.
Ýstemci bir servisteki veriyi deðiþtirir ve bununla ilgili o servis ortak
mesajlaþma uygulamasýndaki önceden tanýmlý kuyruða bir mesaj
býrakýr. Bu mesajý diðer servis okuyarak, kendinde yapýlmasý
gereken iþlemleri yapar ve tüm uygulama tutarlý hale gelir.
Veri Kopyalama Yöntemi: Bir servisin iþini yapabilmesi için diðer bir
servisten sürekli veri sorgulamasý gerektiði ve sorgulanan verinin
çok sýk deðiþmediði durumda kullanýlýr. Deðiþiklikler asenkron
olarak veriyi kopyalayan servislere bildirilir. Bu kategoride bir servis
diðer servisten çok sýk kullandýðý veriyi sürekli sorgulamak yerine
kendine kopyalar ve buradaki iletiþim maliyetini ortadan kaldýrýr.
Ayrýca servis ilgili iþlemi yapabilmesi için diðer servise olan
doðrudan baðýmlýlýðýný da ortadan kaldýrdýðý için baþkasýna baðýmlý
olmadan (autonomous) iþ yapabilir.
Harici API Kalıpları
İstemci Tarafı Keşfi: Bir servise bir istekte bulunurken, istemci bir
hizmetin konumunu, tüm hizmet kopyalarýnýn konumlarýný bilen bir
Hizmet Kaydýný sorgulayarak elde eder ve isteði gönderir.
Sunucu Tarafı Keşfi: Bir servise bir istekte bulunurken, istemci iyi
bilinen bir konumda çalýþan bir yönlendirici (örn. yük dengeleyici)
aracýlýðýyla bir talepte bulunur. Bundan sonrasýnda yönlendirici, tüm
hizmet kopyalarýnýn konumlarýný bilen bir Hizmet Kaydýný
sorgulayarak elde eder ve isteði gönderir.
Güvenilir İletişim Kalıpları
Devre Kesici: Bazen bir istek birden çok servise gitmek zorunda
Bir Ağ ya da olabilir. Bu istek zincirinde olan bir servisin geçici sorun yaþamasý ya
Servis Sorununu da önceden tanýmlý kaynak sýnýrlarýna gelmesi durumunda, toplam
Diğer Servislerden sistem kaynaklarýný tüketmemek için önündeki servis, baðlantýlý
olduðu servise eriþmeyi belli süre denemez ve öndeki servisi de
Nasıl
bekletmez.
Izole Edeceksiniz?
01010100010101010000000111111001011110101
010101000101010101010101010000000111111001011110101
1011100010101000101010101000111110101010000111010100000
01010100010101010000000111111001011110101
01010100010101010000000111111001011110101
Mikroservislerde veri yönetimi zorlukları:
Çözümleri:
API Birleştirmesi: Veri birleþtirmesini (join) veri tabaný yerine
uygulama yapar.
Dağıtık İşlem
Sipariş Müşteri
Servisi Servisi
Saga
Gözlemlenebilirlik Kalıpları
React
YTE tarafından Javascript React Mikroservisler arası iletişimde Platform, mikroservislerin olmazsa
framework bileşenleri, standart haline gelen Apache Kafka olmazı olan kubernetes üzerinde
kurumsal gereksinimlere ve için iyi pratikler etrafında kurma, çalışacak şekilde tasarlanmış,
standartlara göre bir araya ölçeklendirme ve diğer etkileşimler kubernetes'in mikroservis
getirilmiş ve mikroservis geliştirici standartlaştırılmış ve kullanımı kolaylaştıracak tüm
yazılımcının kolay bir şekilde kolaylaştırılmıştır. özellikleri kullanılmıştır.
önyüz geliştirmesi sağlanmıştır.
CAS Merkezi kimlik doğrulama ve Asenkron ve dağıtık mesajlar ve Jenkins sürekli entegrasyon ve
yetkilendirme servisi iyi pratikler görevlerin yönetimi kurulum aracıyla, mikroservislerin
şeklinde redis dağıtık ön belleği mikroservislerde kritik olduğundan hızlı ve sağlam kurulumları
kullanılarak hızlı kurulabilir hale geliştirilen platformda otomatik otomatikleştirilmiş ve sağlıklı
getirilmiş, mikroservis kütüphaneleri lider seçimi de entegre edilmiştir. çalışması için altyapıları
cas ile kolayca entegre çalışabilecek oluşturulmuştur.
şekilde yapılandırılmıştır.
Eğer projeniz,
büyük ölçekli ise veya
Java Spring frameworkteki
kütüphaneler, kurumsal yazılım büyük ölçekli olma
gereksinimleri göz önünde
bulundurularak bir araya getirilmiş, olasılığı yüksekse, yukarı
tüm yazılımcıların kolaylıkla adapte
olabilecekleri kapsayıcılar sayılan avantajlarından
geliştirilmiştir. Senkron ve asenkron
iletişim kütüphaneleri eklenmiş,
özelleştirilmiş hata işleme
dolayı mikroservis
kütüphaneleri geliştirilmiştir. Ayrıca
Spring Data ve hibernate mimarisinin kullanılması
kullanılarak dağıtık veri akışı ve
transaction yönetimi kütüphaneleri gerekli hale gelir. Monolit
geliştirilmiştir. Mikroservisler için
olmazsa olmaz test yöntemleri uygulamaların
platforma entegre edilmiş ve hızlıca
kullanılabilir hale getirişmiştir. mikroservislere yavaş
yavaş dönüşümü de
mümkündür.
TÜBİTAK - BİLGEM
Yazılım Teknolojileri Araştırma Enstitüsü (YTE)
İşçi Blokları Mahallesi Muhsin Yazıcıoğlu Caddesi No:51/C 06530 Çankaya/ANKARA
+90 312 284 9222 +90 312 286 5222
www.yte.bilgem.tubitak.gov.tr