Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

TYZM-612: Yazılım Mimarileri

5.Hafta: Yazılım Mimarisi


Örüntüleri – Mikroservis
Mimarisi
5.1 Değişen Uygulama Mantığı

Birbirine az
bağımlı
Monolitik
bileşenler

Yavaş Hızlı değişen


Değişen

Bir sürü küçük


Büyük sunucu ve cihaz
Sunucular

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 2
5.1 Değişen Uygulama Mantığı

•Küçük kod değişiklikleri bütün •Uygulamalar mikroservis


bir yapının yeniden derlenmesine olarak adlandırılan ayrık
ve test edilmesine neden olur. yapılara bölünür.
•Uygulama ufak bir hatada bile •Ölçeklenebilir, durumsuz,
bir bütün olarak çöker.
•Ölçeklenebilirlik çok zor yüksek erişimli çözüm
Uygulama Kodu

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 3
5.2 Mikroservis Mimarisi

•Mikroservis mimarisi, katmanlı mimari ve servis-tabanlı


mimarinin kısıtlarına karşı bir alternatif olarak sunulmuştur.
•Mikroservis : mesajlarla iletişim kurulabilen hem uyumlu
hem de bağımsız bir işlemdir.
•Mikroservis Mimarisi : Tüm modülleri mikroservislerden
oluşan dağıtık yapıda tasarlanmış uygulama.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 4
5.3 Mikroservis Örüntü Tanımı

•Mikroservis mimarisinin bir İstemci İsteği İstemci İsteği İstemci İsteği

özelliği ‘ayrık olarak


yüklenen’ birimlerdir.
Kullanıcı Arayüz Katmanı

•Bu yöntem,
ölçeklenebilirlik, bileşenlerin
Servis Bileşeni
ayrık çalışabilmesi ve kolay Servis Bileşeni Servis Bileşeni

yüklenebilmesini sağlar.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 5
5.3 Mikroservis Örüntü Tanımı

•Bu örüntüde yer alan bir kavram, ‘servis bileşeni’ dir.


• Bu kavrama göre dışarıya verilen hizmet bir servis değil, büyüklüğü değişen bir
bileşendir.
• Servis bileşenleri bir şehrin hava durumunu bildiren küçük bir bileşen olabileceği gibi,
büyük bir uygulamanın bir parçası olabilir.
• Servis bileşeninin büyüklüğü ya da kapsadığı ve kapsamadığı kısımların belirlenmesi
mikroservis mimarisinin en büyük zorluklarından biridir.
•Mikroservis mimarisi dağıtık bir mimaridir:
• Bileşenler birbirinden ayrık ve dağıtıktır ve JMS, AMQP, REST, SOAP, RMI gibi uzaktan
erişim protokolleri ile erişilebilirler.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 6
5.4 Mikroservis Mimarisinin Gelişimi

•Mikroservis mimarisi katmanlı mimari ile geliştirilen


monolitik uygulamalar ile, dağıtık mimaride geliştirilen servis
tabanlı uygulamaların deneyimlerinden geliştirilmiştir.
•Monolitik uygulamalarda;
• Sürekli değişen kısımların çalışma ortamına aktarılması zordur.
• Bileşenler birbirinin içine geçmiştir. Değişim, test ve yükleme zordur.
• Değişimler aylık toplu yüklemeler şeklinde gerçekleşir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 7
5.4 Mikroservis Mimarisinin Gelişimi

•Mikroservis mimarisi ‘Servis-tabanlı Mimari (SOA)’nin


karmaşıklığını azaltmak için önerilmiştir.
•SOA’nın karmaşıklığı, geliştirme zorluğu, anlaşılmasının kolay
olmaması gibi nedenler mikroservis mimarisinin önerilmesini
sağlamıştır.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 8
5.4.1 Servis-tabanlı Mimari (SOA)

•SOA, servis olarak adlandırılan, birbirine bağımlılığı az


olan(loosely coupled), belirli önemli bir işi
gerçekleştiren(coarse grained) ve özerk(autonomous)
yapıdaki bileşenlere dayalı dağıtık sistemlerin geliştirilmesi
için kullanılan mimaridir.
Servis
Sağla
yıcı
Bağ Yayı
lan nla

Servis Servis
İstem Kayıtlı
cisi ğı

Bul

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 9
5.4.2 SOA ve Web Servisleri

•Web servisleri, programlama


dilinden, işletim sisteminden, ve
donanımdan bağımsız olarak
çalışan servis sağlayıcı ile
tüketici arasındaki bileşenlerdir.
• eXtensible Markup Language(XML)
• Simple Object Access Protocol (SOAP)
• Universal Description, Discovery and
Integration (UDDI)
• Web Services Description Language
(WSDL)

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 10
5.4.3 RESTful Web Servisleri

•Web servislerinin karmaşıklığı nedeniyle HTTP post, get, put,


delete metotları ile çalışan ve bir URI ile adreslenen hafif web
servisleri geliştirildi: RESTful Web Servisleri
•Örneğin http://demo.guru99.com/employee/1 adresine
yapılan bir GET isteği çalışan numarası 1 olan kişinin bilgilerini
geri döndürür.
•Bilgi alışverişi için XML yerine daha küçük olan JSON tercih
edilir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Ders Öğretim Elemanı" tarafından hazırlanmıştır. 11
5.5 Mikroservis Topolojileri

•API REST-tabanlı topoloji,


•Uygulama REST-tabanlı topoloji,
•Merkezi mesajlaşma

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 12
5.5.1 API REST-tabanlı Topoloji

•Bir API ile küçük hizmetler veren web sayfaları için uygundur.
•Küçük hizmetler sunan servis bileşenleri bir API ile ve REST
web servisleri kullanarak hizmet İstemci İsteği İstemci İsteği İstemci İsteği

verirler.
•Bu topoloji Yahoo, Google, ve Uygulama Programlama Arayüzü

Amazon gibi bulut-tabanlı küçük


hizmetler verenler tarafından Servis
Bileşeni
Servis
Bileşeni
Servis
Bileşeni
Servis
Bileşeni
Servis
Bileşeni

tercih edilir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 13
5.5.2 Uygulama REST-tabanlı Topoloji

•Web tabanlı ya da zengin-istemci uygulamaları içerisinden


daha büyük servis bileşenlerine erişilebilen bir topolojidir.
•Servis bileşenleri API İstemci İsteği İstemci İsteği İstemci İsteği

Rest-tabanlı topolojiden daha


büyüktür. Genellikle büyük bir Kullanıcı Arayüz Katmanı

uygulamanın belirli bir


Servis Bileşeni Servis Bileşeni Servis Bileşeni

Parçasını temsil ederler.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 14
5.5.3 Merkezi Mesajlaşma Topolojisi

•Merkezi mesajlaşma topolojisi kullanıcı arayüzü ile servis


bileşenleri arasına konulan bir mesaj komisyoncusu ile
gerçekleştirilir. İstemci İsteği İstemci İsteği İstemci İsteği

•Avantajları kuyruk mekanizması, eş Kullanıcı Arayüz Katmanı

zamanlı olmayan mesajlaşma, daha iyi


Mesaj Komisyoncusu
yük dağılımı ve ölçeklenebilirlik
olarak bilinir. Servis Bileşeni Servis Bileşeni Servis Bileşeni

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 15
5.6 Bağımlılıklar ve Orkestrasyon

•Servisin büyüklüğünü doğru tespit etmek önemlidir:


• Eğer servis gereğinden büyük olursa, kolay yükleme, ölçeklenebilirlik, test edilebilirlik,
ve esnek bağımlılık özellikleri kaybolur. Monolitik yapıya benzer.
• Eğer servis gereğinden küçük olursa, SOA yapısına döner ve orkestrasyon ihtiyacı
ortaya çıkar.
• Eğer kullanıcı arayüzü veya API katmanında orkestrasyon ihtiyacınız ortaya çıkarsa ve servisler
arasında çok fazla iletişim gerekiyorsa fazla küçük servisler oluşturmuşsunuz demektir.

•Eğer, her durumda orkestrasyon ihtiyacınız oluşuyorsa, bu


mimari probleminiz için doğru mimari değildir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 16
5.7 Docker – Taşıma Teknolojisi

Bulut Bilişim Üzerindeki Uygulamaların Altyapısı

Standart bir Masaüstü ya da Web Uygulaması Altyapısı

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 17
5.7 Docker – Taşıma Teknolojisi

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 18
5.7 Docker – Taşıma Teknolojisi

•Uygulama ve bağlı olduğu paketler için


standart paketleme
•Uygulamaların izolasyonu
•Aynı işletim sisteminin paylaşımı
•Tüm Linux ve Windows sunucularında
çalışabilme
•İşletim sisteminin açılmasına gerek yok,
saniyeler içinde çalışan uygulama
•Farklı altyapılarda çalışabilme

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 19
5.8 Kubernetes

•Taşıma teknolojisi uygulamalarının otomatik olarak yüklenmesi,


ölçeklendirilmesi ve yönetilmesi için kullanılır.
•Google’ın ihtiyaçlarından doğdu:
• Güncellenen servislerin onlarca/yüzlerce küme bilgisayarlara yüklenmesi,
• Servis sayılarının arttırılıp, azaltılması
• Haftada 2 milyar taşıyıcının yönetimi
•Genel özellikleri:
• Birçok sunucu üzerindeki taşıyıcıların orkestrasyonu
• Uygulamalar için donanımın daha verimli kullanılması
• Yükleme ve güncellemelerin kontrolü ve otomatikleştirilmesi
• Uygulamalara yeni depolama alanlarının eklenmesi
• Taşıyıcı tabanlı uygulamaların ve kaynaklarının çalışma anında ölçeklendirilmesi
• Uygulamaların, otomatik açılıp-kapatılması, yerine yenilerinin konulması ve taşınması

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 20
5.9 Apache Zookeper

•Dağıtık uygulamalar için koordinasyon hizmetidir.


•Mikroservis mimarisinde servis kayıtlığı ve servis keşfi için
kullanılır.
•Bulut ortamındaki mikroservisler
ölçekleme ve yük dağılımı kontrolü
nedeniyle sürekli dinamik olarak değişir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 21
5.10 Dikkate Alınması Gereken Konular

•Uygulamanın önemli parçalarının daha küçük bileşenlere


bölünmesi, daha sağlıklı, ölçeklenebilir ve sürekli
güncellenebilir bir yapı sağlar.
•Gerçek zamanlı yükleme sayesinde, aylık güncellemeler ya
da hafta sonu güncellemeleri gerekmez. Sadece değişen
bileşenler güncellenir.
•Dağıtık bir yapı olduğu için, olay temelli mimari gibi, bakım,
yönetim, uzaktan erişim sıkıntıları oluşabilir.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için " Dr. Bilgin Avenoğlu " tarafından hazırlanmıştır. 22
5.11 Örüntü Analizi

•Hızlı Değişim (Değişen ortama hızlı uyum sağlama) : Yüksek


• Ayrık bileşenler sayesinde hızlı değişim gerçekleştirilebilir.
•Yükleme/Kurulum: Yüksek
• Modüller tüm sistemi kapatmadan, çalışma anında ayrı ayrı yüklenebilir.
•Test edilebilirlik: Yüksek
• Modüller kendi başına tes edilebilir. Bağımlılıklar az olduğu için tüm sistem testi de kolaydır.
•Performans : Düşük
• Birbirinden ayrık bileşenlerin perfomansına bağımlılık. Bazen üçüncü firmanın bileşeni yavaş olabilir.
•Ölçeklenebilirlik: Yüksek
•Geliştirme Kolaylığı : Yüksek
• Doğru büyüklükte bileşenler belirlenirse geliştirme kolay.

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için " Dr. Bilgin Avenoğlu " tarafından hazırlanmıştır. 23
Ders Sonu

•Soru & Cevap

24.03.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 24

You might also like