Dalam sistem yang lebih besar, jauh lebih mudah untuk:
Bagikan fitur dan kode. Anda akan menemukan kembali roda sedikit kurang. Misalnya, jika Anda memiliki sepuluh aplikasi yang harus memiliki akses ke database, Anda harus menentukan string koneksi di dalamnya , yaitu sepuluh kali. Atau Anda harus membuat perpustakaan terpisah dan referensi sepuluh kali lagi.
Konsolidasikan alur kerja , termasuk proses penyebaran.
Kelola sistem: lebih sedikit aplikasi untuk dikelola umumnya lebih mudah .
Menyatukan pengalaman pengguna . Ketika seorang karyawan harus berurusan dengan sepuluh aplikasi yang berbeda, ia dapat dengan mudah hilang: aplikasi apa yang harus dijalankan untuk melakukan A? Dalam aplikasi apa tersedia opsi B? Tapi jangan terlalu menyatu . Tidak ada yang akan menghargai Word, PowerPoint, Outlook, Penerbit, Visio, Project dan Groove sebagai aplikasi monolitik tunggal.
Di sekelompok sistem kecil, di sisi lain, Anda akan menemukan bahwa:
Anda dapat meninggalkan seluruh sistem jika Anda tidak membutuhkannya lagi. Atau mulai dari awal jika basis kode menjadi tidak dapat digunakan dari waktu ke waktu. Ini tentu saja hanya benar jika sistem lain tidak bergantung pada yang satu ini, atau jika antarmuka cukup ringan untuk dengan mudah ditulis ulang dalam versi baru.
Anda dapat membentuk tim pengembang baru dan berharap dari mereka untuk memahami basis kode yang ada dalam waktu yang lebih singkat . Jika itu adalah bagian dari proyek besar, kemungkinan mereka akan membutuhkan lebih banyak waktu, kecuali jika basis kode besar keseluruhan dilakukan dengan sangat profesional dan di-refactored dengan sangat baik (saya belum melihat basis kode seperti itu dalam hidup saya).
Administrator sistem akan dapat memindahkan aplikasi dengan lebih mudah . Sistem yang lebih besar, di sisi lain, baik skala di banyak server, atau tidak.
Pengembang dapat memigrasi basis kode ke standar baru dengan lebih mudah . Memigrasi basis kode besar selalu menakutkan. Sebaliknya, ketika Anda harus berurusan dengan basis kode kecil, lalu yang lain, lalu yang lain, dan seterusnya, itu menjadi kurang menakutkan.
Karena itu, perbandingan seperti itu hanya berfungsi dalam kasus umum, tetapi keputusan Anda harus diambil bukan dari kumpulan, tetapi dari aset perusahaan Anda. Bagaimana cara mengaturnya? Apakah ada banyak tim pengembang kecil atau beberapa yang besar? Apakah ada pedoman ketat tentang gaya pengkodean dan hal-hal serupa?
Itu juga tergantung pada aplikasi itu sendiri. Misalnya, tidak masuk akal untuk mengirimkan semua aplikasi Microsoft Office sebagai satu aplikasi. Tetapi itu juga akan merusak produktivitas, misalnya, memisahkan Adobe Photoshop dalam aplikasi untuk menggambar dan satu lagi untuk retouching foto. IMO, keputusan untuk menyatukan atau memisahkan produk harus merupakan keputusan bisnis, bukan keputusan yang murni teknis.
Akhirnya, saya juga ingin menjawab komentar kedua dari pertanyaan awal:
Saya senang berasumsi bahwa menautkan data dalam suatu aplikasi lebih mudah daripada menghubungkan data antara aplikasi
Itu tidak selalu benar. Jika Anda berurusan misalnya dengan .NET, tidak jarang mengirimkan aplikasi tunggal di mana komponen yang berbeda dipertukarkan melalui WCF. Dalam hal ini, ini sebanding dengan satu set aplikasi terpisah yang berkomunikasi melalui WCF.
Tentu saja, ketika Anda harus berurusan dengan banyak aplikasi, Anda harus menetapkan beberapa cara bagi mereka untuk berkomunikasi, sedangkan memiliki satu aplikasi monolitik tidak memaksa Anda untuk melakukan itu. Tetapi apakah Anda benar-benar dapat menulis aplikasi monolitik besar?