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.