Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?

Cevap

Monorepo, birden fazla projenin (frontend, backend, ortak kütüphaneler) tek bir Git deposunda tutulmasıdır. Monolit ile karıştırılmamalı: uygulamalar yine bağımsız deploy edilebilir.

repo/
  apps/
    web/        (Next.js)
    api/        (Node.js)
    mobile/
  packages/
    ui/         (ortak bileşenler)
    types/      (paylaşılan TypeScript tipleri)
    config/     (eslint, tsconfig)

Avantajlar

  • Atomik değişiklik: API sözleşmesi ve onu kullanan frontend tek PR'da değişir.
  • Kod paylaşımı: ortak tipler ve UI kütüphanesi paket yayınlamadan kullanılır.
  • Tek araç seti, tek CI yapılandırması, tutarlı bağımlılık sürümleri.

Dezavantajlar

  • Depo büyüdükçe CI süresi ve git clone yavaşlar.
  • Sahiplik sınırları bulanıklaşabilir (CODEOWNERS ile yönetilir).
  • Erişim kontrolü depo seviyesinde zordur.

Araçlar

AraçRolü
pnpm / npm / yarn workspacesPaketleri birbirine bağlama
TurborepoGörev orkestrasyonu, önbellek
NxBağımlılık grafiği, etkilenen projeler, kod üretimi
BazelÇok dilli, çok büyük depolar

Ölçeklenmenin anahtarı etkilenen projeleri bulup yalnızca onları build/test etmek ve uzak önbellek (remote cache) ile aynı işi tekrar yapmamaktır.

  1. SSR, SSG ve CSR arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack
  2. MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?KolayWeb MimarisiFull Stack
  3. Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.OrtaWeb MimarisiFull Stack
  4. Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?ZorWeb MimarisiFull Stack
  5. Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?OrtaWeb MimarisiFull Stack
  6. WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle