re: Aplikasi Arsitektur , yaitu, " ilmu dan seni memastikan rangkaian aplikasi yang digunakan oleh suatu organisasi untuk membuat aplikasi komposit scalable, dapat diandalkan, tersedia dan dikelola. "
Saat melihat berbagai aplikasi dalam suatu organisasi, saya dapat melihat berbagai alasan untuk menggabungkan aplikasi, tetapi terkadang juga alasan yang baik untuk memisahkannya.
Secara umum , apa pro dan kontra dari memiliki lebih sedikit sistem besar versus sistem yang lebih kecil (mengingat bahwa banyak sistem akan bertukar informasi).
Saya sedang memikirkan hal-hal seperti: lebih sedikit, aplikasi yang lebih besar berarti lebih sedikit pipa di antara aplikasi, tetapi aplikasi yang lebih kecil berarti lebih banyak fleksibilitas untuk masing-masing departemen.
Adakah literatur tentang hal ini, atau adakah yang punya daftar pro dan kontra yang mereka temukan?
sunting: Dalam skenario saya, banyak aplikasi mungkin dapat disesuaikan yang dibuat sendiri daripada dikembangkan sendiri, tetapi jangan ragu untuk mempertimbangkan skenario yang lebih umum.
sumber
Jawaban:
Tak jauh dari kepala saya
Sistem yang Lebih Kecil
Sistem yang Lebih Besar
sumber
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:
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?
sumber
Baca ini. Ini adalah filosofi "banyak program kecil" Unix. Linux juga menggunakannya. Daya tahan yang luar biasa dari filsafat ini (dari akhir 1960-an hingga hari ini) menunjukkan bahwa itu adalah hal yang benar untuk dilakukan.
http://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond
http://en.wikipedia.org/wiki/Unix_philosophy#Mike_Gancarz:_The_UNIX_Philosophy
http://159.93.17.14/usoft/WWW/LJ/Articles/unixtenets.html
http://www.linuxjournal.com/article/2877
sumber