Saya memiliki sejumlah aplikasi yang berbagi data yang sama di database yang sama. Untuk mencoba dan meminimalkan redundansi kode, Layer Akses Data adalah proyek bersama. Ini mencegah setiap proyek dari perlu kode ulang akses data itu sendiri, tetapi ini juga menciptakan titik sakit yang besar. Ketika satu tim perlu memperbarui lapisan data, semua tim lain harus menarik dan menguji perubahan untuk memastikan bahwa mereka tidak merusak apa pun dan ini adalah proses yang lambat dan menyakitkan.
Saya telah memikirkan ide untuk menghapus lapisan data bersama dan hanya meminta masing-masing tim mengelola lapisan data mereka sendiri tetapi masalahnya adalah semua tim masih mengakses database yang sama sehingga jika ada perubahan tabel titik nyeri masih ada karena setiap tim perlu perbarui kode yang relevan.
Jadi pertanyaan saya adalah, bagaimana saya bisa mendesain data dan lapisan akses kami sedemikian rupa sehingga banyak proyek diusir dari sumber data yang sama, dan meminimalkan rasa sakit karena membuat perubahan pada database atau lapisan akses?
Jawaban:
Lapisan data bersama terlihat ide yang cukup bagus. Solusi untuk meminimalkan rasa sakit adalah:
Dengan cara ini jika saya membuat sepotong kode saya termotivasi untuk menulis kelas tes yang baik, seperti kelas tes nyata karena jika kelas tes saya meledak dengan beberapa modifikasi berarti modifikasi tersebut akan merusak kode saya. Jadi setiap programmer dipaksa untuk menulis tes yang baik (jika saya tidak kode saya bisa pecah dari waktu ke waktu). Menjalankan tes semua proyek tanpa kesalahan berarti: "ok Anda bisa melakukan", ketika ada masalah itu berarti "tidak, modifikasi itu akan merusak sistem pada beberapa baris x"
Ini adalah poin yang bagus karena hal-hal tes terlalu sering tertinggal dalam suatu proyek ... tentu saja mempertahankan kode tes memerlukan beberapa upaya tambahan.
sumber
Saya telah mengalami masalah ini secara langsung. Sulit, dan saya hanya mengintegrasikan lima aplikasi. Saya dapat menawarkan beberapa tips:
sumber
Jawaban singkatnya adalah bahwa Anda perlu BANYAK waktu ke dalam kode bersama Anda untuk membuatnya sekuat / sekuat / seandal mungkin.
Seperti yang Anda temukan, Anda tidak bisa sering mengubah kode perpustakaan.
Mungkin perlu untuk membagi lapisan data Anda menjadi dua bagian - bagian tingkat rendah yang melakukan hal-hal yang sangat sederhana tetapi tidak pernah berubah (yaitu, kode bersama) dan bagian tingkat tinggi yang mungkin harus unik untuk setiap aplikasi.
Untuk porsi bersama level rendah, Anda harus berpikir seperti pengembang perpustakaan & bukan pengembang aplikasi. Ini berarti banyak tes unit, antarmuka aplikasi yang sangat jelas dan teliti, dokumentasi yang benar, lengkap dan bermanfaat, dan banyak kode pertahanan - semua input tidak valid hingga terbukti sebaliknya.
Kode yang dibagikan harus ditulis untuk melayani kebutuhan aplikasi yang Anda miliki hari ini yang akan menggunakan kode tersebut, tetapi Anda harus meluangkan waktu ekstra untuk mempertimbangkan bagaimana kode ini akan bekerja untuk selusin aplikasi berikutnya yang belum belum diusulkan. Dengan kata lain, kode bersama memecahkan masalah umum dalam mengekspos data dengan cara yang bermakna bagi konsumennya. Jika dilakukan dengan baik, konsumen baru dapat menggunakan perpustakaan ini tanpa perubahan.
sumber