Kami memiliki situs web berbasis Django di mana kami ingin membuat beberapa konten (teks, dan logika bisnis seperti rencana harga) mudah diedit di rumah , jadi kami memutuskan untuk menyimpannya di luar basis kode. Biasanya alasannya adalah salah satu dari yang berikut:
Ini adalah sesuatu yang ingin diedit oleh orang-orang non-teknis . Salah satu contohnya adalah copywriting untuk sebuah situs web - pemrogram menyiapkan sebuah templat dengan teks yang standarnya adalah "Lorem ipsum ...", dan konten yang sebenarnya dimasukkan kemudian ke dalam basis data.
Ini adalah sesuatu yang ingin kita ubah dengan cepat, tanpa perlu menyebarkan kode baru (yang saat ini kita lakukan dua kali seminggu). Contohnya adalah fitur yang saat ini tersedia untuk pelanggan di berbagai tingkatan harga. Alih-alih meng-hardcoding ini, kami membacanya dari database.
Solusi yang dijelaskan itu fleksibel tetapi ada beberapa alasan mengapa saya tidak menyukainya.
Karena konten harus dibaca dari database, ada overhead kinerja .
Kami mengurangi itu dengan menggunakan skema caching, tetapi ini juga menambahkan beberapa kompleksitas pada sistem.
Pengembang yang menjalankan kode secara lokal melihat sistem dalam keadaan yang sangat berbeda dibandingkan dengan cara kerjanya pada produksi. Tes otomatis juga menjalankan sistem dalam keadaan berbeda. Situasi seperti menguji fitur baru pada server pementasan juga menjadi lebih rumit - jika server pementasan tidak memiliki salinan baru-baru ini dari basis data, itu dapat secara tak terduga berbeda dari produksi.
Kita dapat mengurangi itu dengan melakukan keadaan baru ke repositori sesekali (misalnya dengan menambahkan migrasi data), tetapi sepertinya pendekatan yang salah. Apakah itu?
Adakah cara terbaik untuk menyelesaikan masalah ini? Apakah ada pendekatan yang lebih baik untuk menangani konten yang saya abaikan?
Jawaban:
Anda harus memikirkan konten yang dapat diedit sebagai fitur lengkap .
Tetapi, alih-alih membuat konten dapat diedit, Anda bisa menjadikan orang teknis itu bagian dari alur pengembangan Anda. Alih-alih mengembangkan -> menyebarkan -> mengubah data, Anda bisa mengubah data -> mengembangkan -> menyebarkan. Mungkin Anda bisa meminjam beberapa ide dari platform blogging statis seperti Octopress .
sumber
Ini adalah tugas yang baik untuk DevOps Anda. :) Anda dapat melakukan hal berikut:
Memungkinkan untuk mengotomatiskan semuanya kecuali penggabungan dengan Chef atau alat lain, sehingga solusi ini bisa nyaman bagi pengguna, pengembang, dan SQA.
sumber
Kami memiliki situasi yang sama. Kami akhirnya menggunakan aplikasi Django berikut:
Ini tidak sempurna, tetapi memberi Anda semua yang Anda butuhkan:
Agar pengembang mengalami halaman yang sama seperti pada sistem produksi, jika itu merupakan persyaratan aktual, ekspor dari produksi ke pengembangan dan uji dengan menggunakan fixture.
Secara konseptual, saya pikir Anda berada di jalur yang benar. Tanyakan pada diri Anda apakah Anda perlu menerapkan solusi Anda sendiri, atau apakah Anda dapat hidup dengan semacam CMS. Flatpages adalah salah satu versi yang sangat sederhana. CMS yang lebih canggih tersedia.
sumber