Mono-Repo vs Multi-Repo: Menjelaskan Strategi Repositori Kode
Diterbitkan: 2021-12-22Mono-repo dan Multi-repo adalah dua strategi utama untuk hosting dan mengelola kode melalui Git. Kami membahas strategi dan pro dan kontra mereka secara rinci.
pengantar
Sebagian besar proyek modern dikelola dan dihosting di Git. Git telah menjadi platform standar untuk manajemen kode sumber terdistribusi, kontrol versi, dan kolaborasi dari mana saja di dunia. Git cepat dan efisien. Ada dua pendekatan utama untuk meng-host dan mengelola kode Git Anda:
- Mono-repo
- multi-repo
Sebelum menggali pendekatan ini, mari kita pahami cara kerja repo.
Apa itu Repo?
Repositori (Repo) berisi semua folder dan file proyek Anda. Ini juga berisi informasi tentang pengguna, orang, dan komputer.
Data repositori dikontrol versi. Sebuah repo dapat dimiliki oleh individu atau sekelompok anggota tim.
Git adalah gudang. Itu bisa publik, swasta, atau internal. GitHub adalah layanan hosting repositori Git dan memiliki antarmuka pengguna.
Git menyediakan fitur kontrol versi dan berbagi kode, namun, yang membuat Git berbeda adalah jika pengembang ingin melakukan beberapa perubahan pada file mereka, mereka dapat menyalin seluruh repositori ke sistem lokal mereka. Jadi, bahkan jika pengembang tidak memiliki akses tulis ke proyek tertentu, mereka dapat menyalin konten secara lokal dan memodifikasinya (disebut forking).
Selanjutnya, jika pengembang ingin membagikan perubahan yang dibuat secara lokal, mereka dapat mengirim "permintaan tarik" kepada pemilik proyek.
Sebuah proyek dapat memiliki satu layanan. Jika proyek Anda memiliki beberapa alur kerja, Anda dapat membuat beberapa layanan untuk setiap alur kerja. Sebagian besar pengembang lebih suka membagi proyek yang lebih besar menjadi layanan independen yang lebih kecil, yang memiliki satu atau lebih fungsi. Setiap layanan dapat memecahkan berbagai masalah bisnis. Dengan popularitas kerangka kerja tanpa server, pengguna dapat mengakses fungsi sebagai layanan.
Setelah Anda membuat fungsi-sebagai-layanan ini dan menerapkannya, langkah selanjutnya adalah menyusun dan mengontrol versinya – Anda dapat memiliki semua layanan dalam satu repositori (mono-repo) – atau memiliki repositori terpisah untuk setiap layanan yang Anda miliki ( multi-repo)!
Apa itu Mono-repo?
Dalam pendekatan mono-repo, Anda dapat menyimpan semua layanan Anda dalam satu repositori (mono). Anda masih dapat menerapkan dan mengelola setiap layanan secara mandiri. Layanan dapat berbagi pustaka dan kode umum.
Perusahaan seperti Facebook, Google, dan Dropbox menggunakan mono-repo.
Keuntungan dari Mono-repo
Pendekatan mono-repo memiliki banyak keuntungan:
- Satu tempat untuk menyimpan semua kode proyek, dan dapat diakses oleh semua orang dalam tim
- Mudah digunakan kembali dan berbagi kode, berkolaborasi dengan tim
- Mudah untuk memahami dampak perubahan Anda pada keseluruhan proyek
- Opsi terbaik untuk pemfaktoran ulang kode dan perubahan besar pada kode
- Anggota tim bisa mendapatkan tampilan keseluruhan dari keseluruhan proyek
- Ketergantungan yang mudah dikelola
Kekurangan Mono-repo
Tentu saja, mono-repo memiliki beberapa kelemahan, yang utama adalah kinerjanya. Jika proyek Anda berkembang dan lebih banyak file ditambahkan setiap hari, proses check-out, penarikan, dan operasi lainnya mungkin menjadi lambat dan pencarian file mungkin memakan waktu lebih lama.
Juga, jika Anda mempekerjakan banyak kontraktor independen untuk proyek Anda, memberi mereka akses ke seluruh basis kode mungkin tidak begitu aman.
Selanjutnya, sulit untuk menerapkan Continuous Deployments (CD), karena banyak orang dapat memeriksa perubahan mereka, dan sistem Continuous Integration (CI) Anda mungkin harus melakukan beberapa pembangunan kembali.
Perusahaan besar yang menggunakan mono-repo memiliki alat khusus untuk menangani masalah peningkatan. Misalnya, Facebook menggunakan sistem file khusus dan kontrol sumber.

Apa itu Multi-repo?
Dalam pendekatan multi-repo, ada beberapa repositori yang menampung beberapa perpustakaan dan layanan suatu proyek. Jika layanan berubah, pengembang hanya perlu membangun kembali layanan itu dan bukan keseluruhan proyek. Individu dan tim dapat mengerjakan layanan khusus mereka dan mereka hanya mendapatkan akses ke layanan yang diperlukan.
Perusahaan seperti Netflix dan Amazon menggunakan multi-repos.
Keuntungan dari Multi-repo
Jumlah perusahaan yang mengadopsi multi-repo jauh lebih banyak daripada yang menggunakan mono-repo, karena alasan berikut:
- Setiap layanan dan perpustakaan memiliki versinya sendiri
- Pengecekan dan penarikan kode kecil dan terpisah, sehingga tidak ada masalah kinerja meskipun ukuran proyek bertambah
- Tim dapat bekerja secara independen dan tidak perlu memiliki akses ke seluruh basis kode
- Pengembangan dan fleksibilitas lebih cepat
- Setiap layanan dapat dirilis secara terpisah dan memiliki siklus penerapannya sendiri, sehingga membuat CI dan CD lebih mudah diimplementasikan
- Kontrol akses yang lebih baik – semua tim tidak perlu memiliki akses penuh ke semua perpustakaan – tetapi bisa mendapatkan akses baca jika mereka membutuhkan
Kekurangan Multi-repo
- Dependensi dan perpustakaan yang digunakan di seluruh layanan dan proyek harus disinkronkan secara teratur untuk mendapatkan versi terbaru
- Mendorong budaya tertutup di beberapa titik, yang mengarah ke kode duplikat dan tim individu mencoba menyelesaikan masalah yang sama
- Setiap tim dapat mengikuti serangkaian praktik terbaik yang berbeda untuk kode mereka yang menyebabkan kesulitan dalam mengikuti praktik terbaik umum
Perbedaan antara Mono dan Multi Repo
Mari kita rekapitulasi perbedaan antara mono-repo dan multi-repo:
Mono-repo | multi-repo |
Semua kode dari semua proyek organisasi berada di repositori pusat | Setiap layanan dan proyek memiliki repositori terpisah |
Tim dapat berkolaborasi dan bekerja sama; mereka dapat melihat perubahan satu sama lain | Tim dapat bekerja secara mandiri; perubahan individu tidak mempengaruhi perubahan oleh tim atau proyek lain |
Setiap orang mendapatkan akses ke seluruh struktur proyek | Admin dapat membatasi kontrol akses ke proyek atau layanan yang perlu diakses oleh pengembang |
Masalah peningkatan skala dapat terjadi jika ukuran proyek terus bertambah | Performa bagus, karena kode terbatas dan unit layanan lebih kecil |
Sulit untuk menerapkan Continuous Deployment (CD) dan Continuous Integration (CI) | Pengembang dapat dengan mudah mencapai CD dan CI karena mereka dapat membangun layanan secara mandiri |
Pengembang dapat dengan mudah berbagi pustaka, API, dan kode umum lainnya saat diperbarui di repositori pusat | Setiap perubahan pada perpustakaan dan kode umum lainnya harus disinkronkan secara berkala untuk menghindari masalah di kemudian hari |
Kesimpulan
Baik mono-repo dan multi-repo sama-sama populer dan mana yang lebih baik tergantung pada ukuran proyek Anda, persyaratan proyek, dan tingkat versi dan kontrol akses yang Anda butuhkan.
Mono-repo mendukung konsistensi, sedangkan multi-repo berfokus pada decoupling. Sementara dalam mono-repo, seluruh tim dapat melihat perubahan yang dilakukan oleh satu orang, multi-repo membuat repo terpisah untuk setiap tim, yang hanya memiliki akses ke layanan yang diperlukan. Jika Anda ingin menggunakan kombinasi mono-repo dan multi-repo untuk proyek Anda, Anda bisa menggunakan meta, alat untuk mengelola banyak proyek dan perpustakaan.
Anda mungkin juga tertarik dengan Sumber Daya Gratis untuk Mempelajari Git.