Monolit
- İngilizcesi
- Monolith
- Okunuşu
- monılit
Günlük kullanımda iki ad da yaygın.
Kısaca
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 nedir?
Monolitik mimaride her özelliğin kullanıcı arayüzü, iş mantığı ve veri erişimi tek bir kod tabanında yer alır ve birlikte dağıtılır. Monolit olarak kurulmuş bir çevrimiçi mağaza; ürünleri, sepetleri, ödemeleri ve kullanıcı hesaplarını aynı uygulamanın içinde yönetir. Herhangi bir parçayı değiştirmek, uygulamanın tamamını yeniden derlemek, test etmek ve yayınlamak anlamına gelir.
Monolitlerle başlamak kolaydır: yerelde çalıştırılacak tek bir proje, dağıtılacak tek bir şey vardır ve özellikler arasındaki çağrılar hızlı ve hata ayıklaması kolay sıradan fonksiyon çağrılarıdır. Her şey genellikle aynı veritabanını kullandığı için birden çok özelliğe yayılan işlemler (transaction) de basittir. Yeni ürünlerin ve küçük ekiplerin çoğunun monolitle başlamasının nedeni budur.
Bir uygulama ve ekibi büyüdükçe kötü yapılandırılmış bir monolitin değiştirilmesi zorlaşabilir, çünkü bir alandaki küçük bir düzenleme başka bir alanı bozabilir. İyi düzenlenmiş monolitler, kodu açık sınırları olan iç modüllere bölerek bunu önler; bu yaklaşıma modüler monolit denir.
Başlıca alternatif, her özelliğin ayrı ve bağımsız dağıtılabilir bir servis olarak çalıştığı mikroservislerdir. Monolit tek çatı altındaki büyük bir mağazaya, mikroservisler ise özelleşmiş dükkânlarla dolu bir sokağa benzer. Monolit, kötü kodun eş anlamlısı değildir; kendi ödünleri olan geçerli bir mimaridir.
Önemli noktalar
- Monolit, tek parça olarak derlenir, dağıtılır ve ölçeklenir.
- Özellikle başlangıçta geliştirmesi, test edilmesi ve dağıtılması basittir.
- Büyük ve kötü yapılandırılmış monolitlerin değiştirilmesi zorlaşabilir.
- Modüler monolit tek dağıtımı korur ama net iç sınırlar uygular.
Örnek
// One codebase, one deployment: every feature is part of the same app
import { createServer } from "./server";
import { productRoutes } from "./products";
import { cartRoutes } from "./cart";
import { paymentRoutes } from "./payments";
const app = createServer();
// All features run in the same process and share one database
app.use(productRoutes);
app.use(cartRoutes);
app.use(paymentRoutes);
app.listen(3000);Sık sorulan sorular
Monolit ile mikroservisler arasındaki fark nedir?
Monolit tek bir uygulama olarak dağıtılır; mikroservisler ise sistemi bağımsız olarak dağıtılan ve ölçeklenen birçok küçük servise böler. Monolitlerin kurulması ve çalıştırılması daha basittir; mikroservisler ise operasyonel karmaşıklık pahasına büyük ekiplere daha fazla bağımsızlık sağlar.
Monolit kötü müdür?
Hayır. Küçük ve orta ölçekli projelerin çoğunda iyi yapılandırılmış bir monolit, mikroservislerden daha basit, ucuz ve hızlı geliştirilir. Sorunlar genellikle monolit olmaktan değil, kötü iç yapıdan kaynaklanır.
Modüler monolit nedir?
Modüler monolit, kodu katı sınırları olan bağımsız modüllere bölünmüş, tek başına dağıtılabilen bir uygulamadır. Tek dağıtımın basitliğini korurken gerekirse ileride ayrı servisleri ayırmayı kolaylaştırır.
Sık karşılaştırılanlar
İlgili sayfalar
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, 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.
- RefactoringYazılım Mimarisi, s. 32Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.
- Teknik BorçYazılım Mimarisi, s. 43Teknik borç, daha uzun sürecek daha iyi bir yaklaşım yerine şimdi hızlı ya da sınırlı bir çözüm seçilmesiyle doğan, gelecekteki ek iş maliyetidir.
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- MVCYazılım Mimarisi, s. 26MVC, uygulamayı veri ve mantık için Model, gösterim için View ve kullanıcı girdisini yöneten Controller olmak üzere üçe ayıran bir mimari desendir.
- Strangler Fig DeseniYazılım Mimarisi, s. 40Strangler fig deseni, eski bir sistemi özellikleri tek tek yeni koda yönlendirerek, eski sistem kapatılana kadar adım adım değiştirme yöntemidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin