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 cloneyavaş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 workspaces | Paketleri birbirine bağlama |
| Turborepo | Görev orkestrasyonu, önbellek |
| Nx | Bağı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.
İlgili Web Mimarisi soruları
- SSR, SSG ve CSR arasındaki farklar nelerdir?
- MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?
- Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.
- Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?
- Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?
- WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.