Bagaimana cara mempertahankan versi demo suatu aplikasi?

8

Saya harus dapat mendemokan aplikasi produksi kami ke calon klien. Cara saya mengaturnya hari ini sederhana. Aplikasi demo adalah duplikat yang tepat dari sistem produksi, kecuali bahwa data dalam database dikaburkan untuk melindungi data klien kami saat ini. Ini berfungsi dengan baik karena tidak memerlukan perubahan aplikasi apa pun.

Boss menjatuhkan BOMBSHELL potensial hari ini dan mengatakan bahwa sistem demo perlu mengandung tautan khusus dan bahwa HANYA muncul di demo. Dia kemudian menjelaskan bahwa di masa depan mungkin ada perbedaan yang jauh lebih besar antara aplikasi demo dan produksi (misalnya seluruh area fungsionalitas). Apa yang saya lakukan sekarang?

Beberapa hal yang saya pikirkan tentang melakukan:

  • Pertahankan cabang berbeda dalam subversi khusus untuk sistem demo
  • Buat paket instalasi yang memiliki perubahan untuk demo, lalu kembalikan dan buat paket instalasi produksi
  • Modularisasi aplikasi (tidak tahu caranya)
  • Katakan: "Persetan denganmu! Aku tidak akan melakukannya!" (LOL)
  • Gunakan semacam logika kondisional dalam aplikasi untuk menentukan apakah itu demo atau aplikasi produksi. Misalnya (jika URL berisi 'demo' maka tampilkan sembunyikan lainnya).

Jika Anda belum dapat menebaknya sekarang, ini adalah aplikasi web

Bagaimanapun, saya tidak punya pengalaman dalam skenario ini mengenai mana yang lebih baik atau jika tidak ada yang baik. Adakah yang punya jawaban, strategi, sesuatu !?

OO
sumber
Jangan menaburkan kode di atas ini jika Anda dapat membantu. Jangan memiliki pemasangan terpisah jika Anda dapat membantu. Jangan menaruh "demo" di URL - itu akan membuat produk tampak palsu. Anda harus dapat menjadikannya sebagai parameter konfigurasi. Idealnya Anda tidak akan memiliki pernyataan jika memeriksa konfigurasi di seluruh kode Anda, mungkin panggilan untuk melihat apakah fitur didukung, dan hanya objek pelaksana yang tahu mengapa - tergantung pada aplikasi Anda.
psr

Jawaban:

3
  • Pertahankan cabang berbeda dalam subversi khusus untuk sistem demo

    • Iya! Ini sangat membantu. Tapi hati-hati dalam melakukannya. Yang terbaik adalah ketika sistem utama berkembang, Anda harus tahu cara menurunkan perubahan Anda sedekat mungkin.
  • Buat paket instalasi yang memiliki perubahan untuk demo, lalu kembalikan dan buat paket instalasi produksi

    • Ini mungkin berhasil - tetapi jika Anda melakukan banyak demo - Anda akan kehilangan bagian kehidupan Anda yang baik karena hal ini.
  • Modularisasi aplikasi (tidak tahu caranya)
    • Ini jawaban terbaik. Lihat di bawah.
  • Katakan: "Persetan denganmu! Aku tidak akan melakukannya!" (LOL)
    • Jelas tidak! Bukan karena Anda harus takut. Tetapi insinyur yang baik tidak berhenti dari tantangan.
  • Gunakan semacam logika kondisional dalam aplikasi untuk menentukan apakah itu demo atau aplikasi produksi. Misalnya (jika url berisi 'demo', maka tunjukkan sembunyikan lainnya).
    • Jelas tidak! Ini akan membuat produk Anda sangat lemah seiring waktu.

Ketika Anda memikirkan produk Demo (kecuali jika Anda berbicara tentang versi jejak) - jangan berpikir seperti 'produk terpisah' tetapi menganggapnya sebagai 'lingkungan terpisah'. Jika Anda dan saya sama-sama menginstal mesin kata-tekan di situs kami masing-masing, kami akan memiliki produk yang sama tetapi data yang berbeda. Anda harus merancang produk Anda sedemikian rupa sehingga instalasi (dan penggunaan) hal-hal tertentu - dapat dibuat seperti cara seseorang membuat sumber konten yang berbeda. Demikian pula, misalnya - Anda membuat aplikasi .Net atau JAVA asli, fungsinya tetap sama - tetapi di mana ia mendapatkan visual (termasuk layar splash dan tombol) dari dapat folder yang berbeda untuk menunjukkannya dalam bentuk yang berbeda. Kemudian - permintaan akan datang bahkan mengubah tata letak - saat itulah Anda tahu Anda membutuhkan lebih banyak barang template!

Jangan melompat untuk modularisasi dalam satu-shot. Ketika dan ketika persyaratan datang, pertama-tama mulailah cabang yang terpisah (jalur pengembangan) dan berikan demo! (Karena semua demo biasanya hari berikutnya pagi 10:30). Penyimpangan yang Anda buat saat ini memberi tahu Anda apa yang seharusnya termodulasi untuk diambil dari sumber daya eksternal. Terapkan itu dan gabungkan kembali - lain kali demo yang sama akan menjadi versi standar Anda (dengan URL yang berbeda).

Hampir selalu jika Anda akhirnya menjadikan "produk terpisah" sebagai demo - Anda mengundang masalah atau kesakitan atau keduanya!

Dipan.

Dipan Mehta
sumber
Saya sangat suka jawaban Anda. Untuk persembunyian sederhana dan menunjukkan tautan, saya dapat pergi dengan cabang terpisah - seperti yang Anda katakan.
OO
Saya tidak setuju dengan beberapa poin dari jawaban ini. Membuat cabang yang berbeda tidak jauh berbeda dengan membuat "produk terpisah", hal yang Anda (dengan benar) memperingatkan OP. Cabang jangka panjang yang tidak digabungkan kembali dengan jalur utama pengembangan tidak lain adalah salinan yang harus dipelihara secara terpisah. Untuk menghindari hal ini, ada pendekatan yang terkenal menggunakan toggle fitur , yang berarti "logika kondisional dalam aplikasi" dan seringkali merupakan solusi yang jauh lebih baik daripada menyalahgunakan cabang SVN untuk ini.
Doc Brown
@DocBrown - Anda belum membaca pertanyaan dan jawaban. Keempat opsi itu diberikan oleh OP dan jawabannya hanya mengeluarkan implikasinya. Jawabannya memang menunjukkan bahwa keuntungan cepat serta perangkap untuk masing-masing. sementara fitur matikan pasti solusi terbaik ketika ada beberapa varian - svn percabangan pada dasarnya adalah jalan keluar yang mudah untuk perubahan yang demikian. Itu semua benar-benar tergantung pada pandangan jangka pendek vs jangka panjang tentang kemungkinan variasi ini. Dan seperti yang saya lihat, jawabannya benar-benar mengevaluasi semua opsi dan implikasinya secara netral!
Dipan Mehta
Dan terus terang - apa yang sangat buruk dari jawaban ini yang layak mendapatkan -1 suara?
Dipan Mehta
Tidak perlu menghinaku. Komentar saya persis tentang implikasi Anda. Anda menulis "Pertahankan cabang berbeda dalam subversi - Ya! ". Pendapat saya di sini: " Tidak , jangan lakukan ini, ini saran yang sangat buruk, karena demo mungkin merupakan fitur jangka panjang". Dan Anda menulis "Gunakan semacam logika kondisional dalam aplikasi - Jelas tidak! ". Tapi itu sangat bertentangan dengan penggunaan fitur toggle. Jika Anda memiliki masalah dengan downvote, edit pertanyaan Anda dan selesaikan kontradiksi ini, mungkin Anda memiliki arti yang berbeda.
Doc Brown
9

Pendekatan terbaik adalah memodulasi sehingga Anda dapat menghidupkan atau mematikan item di aplikasi apa pun.

Demo Anda adalah inst prod, dengan konfigurasi yang mengaktifkan hal-hal yang berbeda dari aplikasi prod yang sebenarnya dan menunjuk ke database yang berbeda.

CaffGeek
sumber
+1 untuk jawaban sederhana untuk permintaan yang cukup sederhana dari bosnya.
dodgy_coder