Pementasan situs, bagaimana Anda mengelola sinkronisasi pembaruan di DB?

11

Sudah diterima secara luas bahwa pengembang harus menguji pembaruan melalui situs pementasan sebelum melepaskannya ke server langsung, namun begitu pembaruan pengembangan memerlukan modifikasi dalam Wordpress DB, hal-hal menjadi rumit, karena pengguna di situs langsung akan memperbarui DB juga.

Satu-satunya aliran (kacau) yang bisa saya bayangkan adalah sebagai berikut:

  1. Tes di server lokal (WAMP, XAMP, dll)
  2. Setelah siap digunakan, taruh situs langsung dalam mode pemeliharaan
  3. Cadangkan situs langsung (Duplikator, sqldump, dll)
  4. Buat tiruan dari situs langsung yang dikunci ke situs pementasan
  5. Unggah modifikasi dari lingkungan lokal ke situs pementasan
  6. Uji situs pementasan
  7. Dorong situs pementasan untuk hidup.
  8. Hapus mode perawatan

Kelemahan dari aliran di atas:

  • waktu henti mungkin lebih lama dari yang diharapkan untuk pengguna sementara pengembang dengan hati-hati menguji pembaruan di situs pementasan;
  • mungkin memerlukan manajemen modifikasi manual: misalnya, layout pagebuilder siteorigin disimpan di db, jadi setelah layout dimodifikasi, itu harus diimpor secara manual di situs pementasan; dalam hal ini cukup memadai untuk hanya menjatuhkan & mengimpor halaman ke situs pementasan, dan jika berfungsi, mengimpornya di situs langsung

Saya ingin tahu apakah ada cara yang lebih baik dan lebih otomatis untuk mencapai ini.

Bagaimana menurut anda?

EDIT, seperti yang diminta, beberapa solusi telah diusulkan di masa lalu tetapi tidak ada yang menawarkan solusi yang pasti:

Riccardo
sumber
@ Dan9, saya pikir akan lebih aman untuk meminimalkan akses ke situs langsung. Apakah kebiasaan umum mengedit tata letak di situs langsung? Mungkin saya terlalu khawatir!
Riccardo
Anda dapat membuat, memperbarui, menghapus, mengembalikannya. Apa yang kamu khawatirkan?
MinhTri
Jadi, biasanya mengunggah tata letak tanpa pengujian di situs pementasan? Apa alur kerja khas Anda (lokal / pementasan / live)?
Riccardo
Lihatlah plugin wp-sync-db .
MinhTri
Apakah ini dapat diandalkan? Apakah Anda menggunakan alat ini?
Riccardo

Jawaban:

2

Penyedia hosting baru yang melayani secara khusus untuk WordPress biasanya memiliki alat di tempat untuk meringankan rasa sakit ini. Saya menempatkan klien saya di Pantheon yang memiliki alur kerja yang diaktifkan Git yang rapih ini , di mana kode hanya bergerak ke atas (dari dev ke pementasan ke produksi) dan hal-hal DB hanya bergerak ke bawah (sebaliknya dari kode). Menyalin database dari produksi ke pementasan adalah satu klik dengan antarmuka mereka. Asalkan alur kerja ini dihormati, ini cukup banyak menghilangkan masalah yang pernah mengacaukan basis data produksi, memungkinkan saya untuk selalu menguji perubahan saya pada klon baru dari data produksi DB baik dalam tahap pengembangan.

Anda tidak harus menggunakan Pantheon - Anda dapat mengadopsi pendekatan serupa dalam proses Anda menggunakan alat Anda sendiri (Git + plugin kloning DB seperti WP Migrate DB). Saya hanya menemukan cara ini bekerja dengan baik untuk saya.

Pertanyaan: mengapa Anda menempatkan lokasi produksi Anda dalam mode pemeliharaan saat menguji pementasan? Seharusnya tidak ada kebutuhan untuk itu dalam sebagian besar kasus. Satu-satunya kasus yang dapat saya pikirkan adalah memiliki semacam sistem yang sangat rapuh yang sangat sensitif terhadap data pengguna tambahan yang dimasukkan ke dalamnya, dengan bug bencana untuk di-boot - tetapi itu mungkin merupakan indikasi masalah yang berbeda, lebih besar, di mana orang akan membutuhkan untuk memikirkan kembali seluruh arsitektur produk mereka.

montrealis
sumber
Penyedia saya memungkinkan membuat situs pementasan satu-klik dan push-to-live dengan pilihan granular pada tabel yang ditulis ulang, namun saya masih perlu mengunci pengguna sementara tes terakhir dijalankan karena bagian dari penyebaran adalah menyuntikkan data sisi pengembang dalam DB (tata letak halaman sitebuilder misalnya disimpan dalam DB), yang mengharuskan pengguna untuk berhenti memperbarui selama fase ini. Jika Anda memiliki ide yang lebih baik bagaimana mencapai langkah ini, saya akan senang berbagi dengan Anda!
Riccardo
BTW, apakah Anda melewati aliran dev / staging / live setiap kali sedikit modifikasi telah dibuat? Misalnya, sedikit mengubah tata letak halaman dalam editor, atau memodifikasi menu
Riccardo
Yap - file melalui dev -> staging -> prod setiap kali (mungkin Anda dapat menonaktifkan staging atau dev - tidak ingat). Dev adalah untuk tim dev, pementasan adalah untuk QA atau persetujuan desainer / klien sebelum mendorong ke prod.
montrealist
1

Lihat VersionPress yang membawa versi GIT ke seluruh proses (file dan basis data)

Seperti yang dijelaskan di situs mereka:

VersionPress menyediakan pementasan tanpa rasa sakit . Ini berarti bahwa Anda dapat dengan mudah membuat lingkungan pengujian yang aman untuk perubahan Anda dan hanya menggabungkannya kembali ketika sudah siap. Menggabungkan adalah kata kunci di sini - VersionPress menangani situasi di mana situs langsung Anda memiliki konten baru sementara itu mulus.

marekeiba
sumber
1
Bagaimana saya bisa memverifikasi keandalan alat ini?
Riccardo