Memulai Lapisan Akses Data

9

Situasi: DBA adalah kontraktor luar kantor yang membuat seluruh kode DAL diperiksa di TFS. Akan lebih baik sebagai pengembang ujung depan untuk dapat menambahkan kolom, dan men-tweak procs dan yang lainnya, tanpa harus bergantung pada menunggu pria ini untuk menanggapi email Anda untuk melakukan pekerjaan.

Pertanyaan: Apa solusi / proses yang direkomendasikan yang memungkinkan pengembangan lebih cepat / gesit, sambil mempertahankan integritas data serta cinta damai dan kebahagiaan di antara tim?

spaghetticowboy
sumber
Saya khawatir di sini tentang mengapa Anda perlu menambahkan kolom dan aturan bisnis apa yang dikaitkan dengan kolom ini. Anda mungkin menemukan cara mengatasinya dan akhirnya menambahkan kolom tetapi bagaimana jika Anda menggunakan tipe data yang salah, pengaturan nol, definisi indeks, lebih buruk bagaimana jika kolom tidak seharusnya menjadi milik tabel atau jika Anda kehilangan tabel persimpangan sama sekali? Saya pikir seseorang harus bertanggung jawab atas dampak bisnis dalam mendefinisikan data baru dan juga seseorang harus bertanggung jawab atas dampak perubahan basis data pada kode (selain DBA). 2 peran dapat dimainkan oleh orang yang sama.
NoChance
Membutuhkan DBA Untuk bekerja di cabangnya sendiri. Jangan beri mereka hak checkout ke cabang pengembangan utama. Buat cabang dev Anda sendiri dan gabungkan perubahan Anda sesuai kebutuhan.
SoylentGray

Jawaban:

11

Martin Fowler dan Pramod Sadalage telah menulis artikel yang sangat bagus tentang hal ini.

Setiap pengembang memiliki databasenya sendiri tempat perubahan dapat dilakukan. Perubahan ini kemudian dikomunikasikan kembali (sebagai perubahan) ke DBA yang mengimplementasikannya dalam database master, jadi dia masih terlibat dalam proses, dia mungkin tahu yang terbaik tentang struktur dan kebutuhan database. Saya pikir itu pendekatan terbaik karena memuaskan bagi semua orang yang terlibat dalam proses dan juga sangat gesit.

Anda dapat mengubah DAL dengan cara yang serupa. Cukup buat perubahan Anda dan berikan set perubahan untuk DBA saat Anda merasa sudah selesai, sehingga dia bisa memeriksanya dan menggabungkannya ke masternya.

Elang
sumber
1
oooh saya suka ... ini adalah Q pertama saya di sini jadi saya belum bisa menjawab tetapi Anda mendapat satu comin pasti ... mungkin / mungkin jawabannya juga, tetapi saya ingin menunggu sedikit untuk melihat apa yang orang lain katakan
spaghetticowboy
Masalah dengan ini adalah bahwa pengembang melakukan semua pekerjaannya dengan asumsi bahwa dba akan menyetujui.
HLGEM
@HLEGM: Dalam pengalaman saya ini adalah kasus yang jarang, sebagian besar kali DBA akan menyetujuinya atau mengubahnya hanya sedikit. Ini masih lebih baik daripada memiliki devs idle yang duduk-duduk. Selain itu, itu mungkin akan mengarah pada solusi terbaik jika DBA dan dev keduanya orang yang masuk akal.
Falcon
+1 untuk menjelaskan mengapa artikel ini sangat baik, bukan hanya memposting tautan.
JeffO
@HLGEM - Saya pikir ini membutuhkan kedua belah pihak untuk membenarkan apa yang mereka lakukan. DBA harus mendapatkan manfaat dari keraguan dalam masalah db, tetapi keduanya harus menjawab kepada orang lain yang akan memiliki keputusan akhir.
JeffO
3

Nah, ketika saya melakukan hal DBA, saya telah dikenal untuk mengunci semuanya sehingga programmer kotor tidak bisa mendapatkan mits mereka di atasnya. Semua orang berpikir mereka tahu bagaimana melakukannya dengan lebih baik, dan mereka "mengubah" hal-hal untuk membuat mereka lebih mudah bagi diri mereka sendiri, dan itu menyebabkan kekacauan yang tidak suci.

Alternatif lain adalah dengan melemparkannya terbuka lebar, dan biarkan programmer melee di atasnya untuk sementara waktu, kemudian melompat masuk dan memberlakukan ketertiban ketika segalanya mulai berakhir ... Ini tentu saja lebih "gesit", tetapi bisa jadi mimpi buruk nyata tergantung pada apa yang harus dipotong atau diubah ... DBA sering memiliki pemahaman yang lebih baik tentang proyek secara keseluruhan, dan beberapa perubahan yang tampaknya tidak berbahaya dapat menjadi masalah.

Jika dia akan menjadi satu-satunya penjaga gerbang, dia harus memiliki spec tertentu, atau dapat "menjual" visinya kepada para devs lainnya.

Satanicpuppy
sumber
kami sangat kotor ... dan kadang-kadang kami juga sangat tidak sabar dan perlu menyelesaikannya sendiri
spaghetticowboy
@ spaghetti: Ya ... Saya mungkin lebih buruk daripada kebanyakan karena saya telah melakukan banyak pekerjaan DBA, jadi saya memiliki dua kali "Saya tahu bagaimana melakukannya dengan lebih baik!" dari kebanyakan programmer. Saya akan mengatakan ini: dengan basis data, jauh lebih penting untuk menyelesaikannya dengan cepat ... Jika Anda terus menambahkan hingga akhir proyek, hampir pasti akan menyebabkan masalah.
Satanicpuppy
3

Ada masalah besar yang menggantikan masalah lain:

  1. Mengapa kontraktor selalu memeriksa kode?

Kenapa dia diizinkan melakukan ini? Tidak seorang pun harus memeriksa file kecuali mereka secara aktif melakukan pengeditan. Seharusnya ada kebijakan tim tentang checkout.

Kontraktor (suka atau tidak suka) bekerja sebagai bagian dari tim, dan kadang-kadang anggota tim lainnya mungkin perlu melakukan perubahan. Ini adalah masalah komunikasi. Sayangnya, tidak ada cara otomatis untuk memperbaiki masalah komunikasi ini.

George Stocker
sumber
1

Alih-alih lapisan horizontal, saya lebih suka bekerja di lapisan lintas silo.

Dengan begitu, tidak ada 1 orang / tim yang dapat memblokir dengan cara ini.

Ini juga berarti Anda adalah pengembang yang memiliki banyak keterampilan dan dapat berpindah-pindah fitur lebih mudah.

Tentu saja, ada bagian (desain UI, dan desain DB) yang mungkin membutuhkan lebih banyak pekerjaan khusus, tetapi Anda mendapatkan idenya.

ozz
sumber
1

Sederhana, Jika Anda belum melakukannya, Anda harus memiliki 3 Lingkungan:

  • Pengembangan lingkungan
  • Lingkungan QA
  • Lingkungan produksi

Lingkungan develoment harus dikelola oleh pengembang Anda.

Anda mungkin juga ingin menambahkan lingkungan RC.

Jawaban lain, Jika beberapa lingkungan tidak memungkinkan, Anda dapat mengembangkan terhadap repositori yang diolok-olok ... Dengan cara ini Anda membangun model Anda dan kemudian kontraktor Anda bertanggung jawab untuk membuat model Anda cocok dengan DB. Di satu sisi ini lebih baik karena membebaskan pengembang Anda dari khawatir tentang database.

AJC
sumber
1
OP berbicara tentang kode yang diperiksa. Lingkungan yang berbeda tidak akan berdampak.
NotMe
1

Masalah Anda bagi saya tampaknya salah satu dari tenaga kerja. Adalah pantas dan perlu untuk semua perubahan daatbase potensial untuk disetujui oleh spesialis basis data. Jika orang saat ini tidak dapat mengikuti pekerjaan pada waktu yang tepat, Anda memerlukan lebih banyak spesialis basis data.

HLGEM
sumber
+1: Ini juga bisa menjadi penyebab masalah. Banyak perusahaan memiliki terlalu sedikit DBA.
Falcon
1

Ini adalah masalah manajemen dan juga masalah teknis.

Tentu saja ada alasan yang sah untuk DBA (terlepas dari apakah di tempat atau di luar, kontraktor atau karyawan) untuk menjauhkan pengembang dari membuat segala jenis perubahan basis data.

Namun masalah utama yang Anda tetapkan adalah salah satu ketersediaan. Apakah manajer Anda tahu bahwa waktu / uang terbuang sia-sia untuk menunggu orang ini? Jika tidak, Anda mungkin ingin membahas bagaimana semua orang duduk.

Bukan saya
sumber