Monorepo Nedir?
İngilizce: Monorepo
Monorepo, birden fazla uygulama ve paketi tek Git deposunda tutarak ortak araç, bağımlılık ve değişiklik yönetimi sağlar.
Monorepo Nedir?
Monorepo, bir şirketin veya ürün ailesinin birden fazla uygulama, servis, kütüphane ve araç paketini tek versiyon kontrol deposunda yönetmesidir. Tek repo demek tek uygulama demek değildir; aynı depo içinde web uygulaması, mobil paket, paylaşılan UI kütüphanesi ve API istemcisi birlikte durabilir.
Nasıl Çalışır?
Monorepo yapılarında paket sınırları klasörlerle ayrılır. Ortak lint, test, formatlama ve build kuralları merkezi tutulur. Değişiklik birden fazla paketi etkiliyorsa aynı commit veya merge request içinde yapılabilir. Gelişmiş yapılarda yalnızca etkilenen projelerin test edilmesi ve derlenmesi için bağımlılık grafiği kullanılır.
Artıları ve Riskleri
Monorepo ortak kod paylaşımını, atomik değişiklikleri ve standart araç kullanımını kolaylaştırır. Buna karşılık depo büyüdükçe checkout, CI süresi, erişim yetkileri ve sahiplik sınırları sorun olabilir. İyi modül sınırları ve otomasyon yoksa tek repo, tek büyük karmaşaya dönüşebilir.
Git monorepo’nun temel versiyon kontrol altyapısıdır. Microservice kullanan ekipler de servisleri ayrı repolarda veya tek monorepo içinde yönetebilir.
İlgili Terimler
Git, kod değişikliklerini commit geçmişiyle izleyen, dallanma ve birleştirme üzerinden ekiplerin paralel çalışmasını sağlayan dağıtık versiyon kontrolüdür.
Mikro Frontend (Micro Frontend)Mikro frontend, büyük bir arayüzü bağımsız ekiplerin geliştirdiği, dağıttığı ve birleştirdiği küçük uygulama parçalarına böler.
MicroserviceMikro hizmet mimarisi, büyük uygulamayı bağımsız geliştirilen, dağıtılan ve ölçeklenen küçük servisler halinde tasarlar.
NxNx, monorepo içindeki projeleri bağımlılık grafı, hedefler ve önbellekleme ile yöneterek büyük kod tabanlarında build sürelerini azaltır.
TurborepoTurborepo, monorepo içindeki görevleri bağımlılık grafiğine göre sıralayıp cache ve paralel çalışma ile build sürelerini azaltan araçtır.