Ana içeriğe geç

Yan yana

MonolitvsMikroservisler

Monolit ile mikroservisler arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

Monolit tek birim olarak dağıtılan, kurması ve çalıştırması basit bir uygulamadır; mikroservisler ise onu bağımsız dağıtılıp ölçeklenen küçük servislere böler.

Monolit

Monolit, tek parça olarak derlenip dağıtılan, tüm özelliklerin tek kod tabanını, tek süreci ve çoğunlukla tek veritabanını paylaştığı yazılım uygulamasıdır.

Monolit sayfasını oku

Mikroservisler

Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.

Mikroservisler sayfasını oku

Monolit ve Mikroservisler karşılaştırması

ÖzellikMonolitMikroservisler
YapıTek kod tabanı ve tek dağıtılabilir birimHer biri kendi başına dağıtılan çok sayıda küçük servis
DağıtımUygulamanın tamamı bir seferde yayımlanırHer servis bağımsız yayımlanır
ÖlçeklemeDaha fazla kopya çalıştırarak uygulamanın tamamını ölçekleyinYalnızca ihtiyacı olan servisleri ölçekleyin
İletişimSüreç içi fonksiyon çağrılarıHTTP, gRPC ya da mesajlaşma üzerinden ağ çağrıları
VeriGenellikle paylaşılan tek bir veritabanıÇoğu zaman servis başına ayrı bir veritabanı
Operasyonel karmaşıklıkDüşük: derlenecek, izlenecek ve hatası ayıklanacak tek uygulamaYüksek: servis keşfi, izleme (tracing), yeniden denemeler ve birçok boru hattı
En uygun olduğu yerKüçük ekipler, yeni ürünler ve basit alanlarÇok sayıda ekibi olan ve alanları iyi anlaşılmış büyük kuruluşlar

Fark, açıklamalı

Monolit, kullanıcılar, siparişler ve ödemeler gibi özelliklerinin tek bir kod tabanında yaşadığı ve tek bir birim olarak birlikte dağıtıldığı bir uygulamadır. Mikroservis mimarisi ise bu özellikleri ayrı servislere böler; her servisin kendi kod tabanı, çoğu zaman kendi veritabanı ve kendi dağıtımları vardır ve birbirleriyle ağ üzerinden API'ler ya da mesajlarla haberleşirler.

Fark, sınırların nerede uygulandığıdır. Monolitte modüller birbirini sıradan fonksiyonlar olarak çağırır; bu yüzden geliştirme, test ve hata ayıklama basittir, ama bir değişiklik uygulamanın tamamını yeniden dağıtmak demektir ve tüm parçalar birlikte ölçeklenir. Mikroservisler ekiplerin her servisi bağımsız yayımlamasına ve ölçeklemesine izin verir; bunun bedeli, başarısız olabilen ağ çağrıları, servislere dağılmış veri ve çalıştırılacak çok daha fazla altyapıdır.

Başarılı sistemlerin çoğu monolit olarak başlar ve servisleri yalnızca bir parçanın farklı ölçeklenmesi gerektiği ya da birçok ekibin birbirinin işine engel olması gibi net bir ihtiyaç ortaya çıktığında ayırır. Orta yol olan modüler monolit, tek dağıtımı korur ama katı iç sınırlar uygular; bu da sonradan bölmeyi kolaylaştırır.

Sık yapılan bir yanlış, mikroservislerin kendiliğinden daha modern ya da ölçeklenebilir olduğu düşüncesidir. Monolit, bir yük dengeleyicinin arkasında birçok kopya çalıştırarak yatay ölçeklenebilir; sınırları belirsiz bir sistemi bölmek ise çoğu zaman dağıtık bir monolit üretir: mikroservislerin bütün karmaşıklığı, hiçbir bağımsızlığı olmadan.

Hangisini kullanmalısınız?

Monolit şu durumlarda doğru seçim:

  • Ekibiniz küçük ya da ürün hâlâ şeklini buluyor.
  • Geliştirmek, test etmek ve dağıtmak için en basit yolu istiyorsunuz.
  • Alanın parçaları arasındaki sınırlar henüz net değil.

Mikroservisler şu durumlarda doğru seçim:

  • Birçok ekibin birbirini engellemeden bağımsız yayımlaması gerekiyor.
  • Sistemin parçalarının ölçekleme ya da güvenilirlik ihtiyaçları çok farklı.
  • Dağıtık sistemleri çalıştıracak araçlara ve deneyime sahipsiniz.

Sık sorulan sorular

Mikroservisler, monolitten daha mı iyi?

Genel olarak hiçbiri diğerinden iyi değildir. Mikroservisler büyük kuruluşların ekipleri ve bileşenleri bağımsız ölçeklemesine yardımcı olur; monolit ise küçük ekipler ve erken ürünler için daha basit ve geliştirmesi daha hızlıdır.

Modüler monolit nedir?

Modüler monolit, net arayüzlerle iyi ayrılmış modüllere bölünmüş tek bir dağıtılabilir uygulamadır; ağ ve operasyon yükü olmadan mikroservislerin yapısının büyük kısmını sunar.

Monolitten mikroservislere ne zaman geçilmeli?

Ekiplerin birbirinin sürümlerini engellemesi ya da bir bileşenin tek başına ölçeklenmesi gerekmesi gibi belirli bir sorun ortaya çıktığında. Birçok ekip strangler fig deseniyle her seferinde bir servis ayırarak kademeli olarak geçer.

Daha fazla

Ayarlar