Apa gunanya pementasan?

18

Saya pikir saya sudah menyelesaikan ini, tetapi setelah membaca Continuous Delivery (buku bagus) saya agak bingung. Mereka berbicara tentang memiliki server untuk:

  • pengembangan
  • berbagai bentuk tes otomatis
  • pengujian penerimaan pengguna (UAT) - yaitu duduk bersama klien dan menunjukkannya kepada mereka, dan membiarkan mereka melakukan pengujian eksplorasi. Penguji in-house juga bisa menggunakan pengaturan ini untuk pengujian eksplorasi.
  • pementasan
  • produksi.

Saya selalu berpikir pementasan sebagai menyediakan fungsi UAT, tetapi mereka tampaknya memiliki pementasan sebagai tingkat yang terpisah. Jadi dalam skema itu, fungsi apa yang disediakan oleh server pementasan?

Hamish Downer
sumber
10
Saya tidak bisa mengatakan saya setuju dengan metodologi itu. UAT harus selalu dilakukan pada spesifikasi sedekat mungkin dengan sistem live (yaitu pementasan). Saya tidak dapat menghitung berapa kali kami melakukan UAT dan membuat semua orang mengeluh tentang masalah kecepatan, yang harus kami jelaskan ribuan kali bahwa "Sistem siaran langsung akan lebih cepat". Dan kemudian ketika sistem langsung TIDAK lebih cepat, karena bug dalam kode, atau permintaan SQL, Anda harus makan kata-kata Anda sendiri.
Mark Henderson
UAT = Pengujian penerimaan pengguna, kan?
Martin Thoma

Jawaban:

13

Pementasan akan menempatkan sistem produk lengkap pada tempatnya, tetapi belum benar-benar menggunakannya. Ketika mereka mulai digunakan akan menjadi "produksi". Anda harus meletakkan semuanya di tempatnya karena akan digunakan, uji, lalu balik saklar.

UAT umumnya menggunakan lingkungan "pengujian" yang sangat berbeda dari perangkat keras / lunak / konfigurasi yang akan digunakan dalam produksi.

Misalnya, tempat saya bekerja, kami meminta pelanggan menguji semuanya dalam lingkungan VM yang berjalan di server kami. Ketika sistem mereka ditayangkan, itu akan berjalan pada perangkat keras mereka, di fasilitas mereka, mungkin berintegrasi dengan sistem mereka yang ada; itu sama sekali tidak ada hubungannya dengan server kami atau lingkungan pengujian (kecuali bahwa kode dan beberapa konfigurasi telah disalin dari sana ...)

Chris S
sumber
Lebih banyak pengujian biasanya terjadi pada server pementasan juga, tidak hanya di UAT - sesaat sebelum mulai berproduksi.
jftuga
3
@ jftuga, lihat kalimat terakhir paragraf pertama ...
Chris S
@ Chris S: Jika saya mengerti Anda dengan benar, maka tidak ada yang namanya "server pementasan" hanya server produksi yang keluar dari kolam, saat ini tidak melayani pengguna akhir. Itu masuk akal, dan merupakan metodologi yang saya ikuti, tetapi saya tidak menyebut server itu "staging server", hanya server produksi (yang tidak ada di kolam renang). Karena di mana-mana saya telah bekerja yang menggunakan server staging memiliki mereka sebagai server terpisah, saya tidak berpikir deskripsi Anda tentang server staging adalah penggunaan standar istilah itu. Ide yang bagus, tetapi bukan apa yang biasanya dimaksud dengan "staging server" (dalam pengalaman saya, sih).
iconoclast
1
@Brandon Dalam pengalaman Anda, apa itu "Staging Server"? Ini mungkin perbedaan regional, seperti "memantul" server.
Chris S
Sepertinya saya berbeda-beda menurut organisasi. Saya pernah melihatnya digunakan sebagai server UAT, sebagai server bagi pengembang untuk menempatkan aplikasi di lingkungan yang konon identik dengan produksi, dan mungkin hal-hal lain. (Secara pribadi saya pikir satu-satunya strategi yang baik adalah menggunakan server produksi nyata untuk pementasan.) Ketika berbagai organisasi mengembangkan budaya mereka sendiri, saya pikir mereka juga mengembangkan leksikon mereka sendiri, dan kata-kata yang seharusnya memiliki makna standar di industri seringkali sayangnya tidak.
iconoclast
17

Saya bekerja pada tim manajemen rilis di perusahaan internet yang sangat besar. Kami pada dasarnya menggunakan proses yang telah Anda uraikan di atas, dan kami memilih proses itu dengan sengaja. Dalam metodologi kami, pementasan berfungsi sebagai mekanisme percabangan untuk tingkat akhir pengujian dalam produksi.

Jelas Anda ingin melakukan semua pengujian sebelum mulai berproduksi, tetapi dalam lingkungan yang besar dan kompleks dengan banyak pengguna, itu adalah tujuan yang sangat sulit untuk dicapai. Secara khusus, hampir tidak mungkin untuk memuat perangkat lunak uji secara memadai dalam QA. Pengujian fungsional jauh lebih mudah untuk diotomatisasi daripada pengujian beban. Ketika Anda memiliki ribuan pengguna yang menghantam server Anda, banyak hal gagal dengan cara yang aneh dan sulit diprediksi.

Jadi inilah yang kami lakukan:

  • Pengembangan
    • termasuk integrasi berkelanjutan dan pengujian otomatis
  • pengujian rilis
    • grup saya menganalisis rilis itu sendiri
    • meninjau log instalasi
    • pengujian rollback
  • QA
    • pengujian penerimaan pengguna

Itulah titik di mana kita bercabang antara pementasan dan produksi. Kami menggunakan model kereta untuk rilis, dengan kereta baru dimulai setiap beberapa minggu. Bahkan kereta bernomor masuk ke server pementasan (yang sedang dalam produksi). Kereta bernomor ganjil tidak.

Di antara kereta genap, para pengembang memiliki kemampuan untuk mendorong perubahan individu ke server pementasan ( setelah perubahan tersebut diuji oleh QA tentu saja). Ini memungkinkan mereka untuk memvalidasi bahwa perangkat lunak mereka berkinerja seperti yang diharapkan dalam lingkungan produksi nyata. Ini umumnya dicadangkan untuk komponen yang dianggap berisiko lebih tinggi, kami tidak mendorong setiap bagian kecil ke panggung.

Kemudian, semua orang mengerti bahwa ketika kereta api berikutnya dimulai, itu akan menghapus apa yang ada di server pementasan dan mengaturnya kembali ke garis dasar kereta. Pengembang baik memastikan bahwa perubahan mereka naik kereta, atau memutuskan mereka belum siap untuk penggunaan umum, dalam hal ini perubahan itu baru saja terhapus di server panggung.

Singkatnya, jawaban singkat (setidaknya bagi kami) adalah bahwa tidak mungkin untuk sepenuhnya menguji sistem yang kompleks di QA. Pementasan menyediakan cara yang aman untuk melakukan pengujian produksi terbatas.

Pada catatan terkait, inilah slide saya dari presentasi yang saya berikan tentang bagaimana proses rilis kami bekerja.

Phil Hollenback
sumber
5

Penjelasan paling sederhana untuk pementasan adalah menguji proses penyebaran Anda dan menguji menggunakan sumber data nyata. Beberapa sistem menggabungkan pementasan dengan lingkungan pengujian mereka, tetapi untuk sistem skala besar proses penyebaran bisa sangat kompleks atau mereka mungkin langkah-langkah pengujian tambahan yang diperlukan setelah Anda terhubung ke sumber data langsung / produksi. Dalam hal ini lingkungan pementasan memungkinkan Anda menguji proses penyebaran Anda dan memeriksa bug menit terakhir menggunakan data langsung, dan setelah hal-hal telah diverifikasi sebagai bekerja, Anda dapat dengan cepat mengubah lingkungan panggung ke lingkungan produksi.

Contohnya adalah Windows Azure, yang membutuhkan 5-25 menit untuk menggunakan versi baru, tetapi Anda dapat menggunakan ke lingkungan pementasan, melakukan tes dan kemudian langsung menukar produksi dan lingkungan pementasan .

Greg Bray
sumber
0

Saya baru saja menemukan artikel ini tentang pementasan lingkungan yang mengatakan

Pementasan adalah tempat Anda memvalidasi yang tidak diketahui yang diketahui dari sistem Anda.

Artikel ini layak dibaca secara penuh.

Hamish Downer
sumber