Apakah praktik terbaik untuk menyebarkan proyek ke file server dengan file secara manual?

26

Perusahaan tempat saya bekerja saat ini belum menerapkan pengiriman berkelanjutan. Kami masih menyebarkan proyek secara manual ke server, file per file. Yang merupakan praktik terbaik: untuk secara manual menggunakan satu artefak proyek untuk setiap penyebaran atau terus melakukan penyebaran file demi file?

Jake Muller
sumber
12
Bahkan tidak ada "satu latihan untuk semua situasi" untuk tugas ini.
whatsisname
26
Biasanya saya akan menautkan ke Mengapa mengajukan pertanyaan tentang "praktik terbaik" adalah hal yang buruk? Saya pikir kita semua bisa sepakat bahwa ini adalah praktik terburuk . Itu peringkat sedikit di atas "membakar server."
3
relevan: en.wikipedia.org/wiki/…
Jens Schauder
9
Saya menduga bahwa OP mengajukan pertanyaan ini karena dia sudah tahu jawabannya, dan tempat kerjanya adalah Doing It Wrong (tm), dan OP sedang berusaha mengumpulkan bukti untuk membuat kasus untuk mengubah cara mereka melakukan sesuatu.
user1936
2
Kami melakukannya dengan cara ini di milenium kedua. Harus baik-baik saja! ;)
Don Branson

Jawaban:

103

Yang merupakan praktik terbaik? untuk menggunakan secara manual satu proyek artefak setiap penyebaran atau terus melakukan file dengan penyebaran file?

Tidak juga.

Praktik Terbaik adalah untuk mengotomatiskan penyebaran Anda, sepenuhnya dan eksklusif. Itu berarti tidak ada yang bisa memasukkan apa pun ke server secara manual.

"Untuk meringkas ringkasan ringkasan: Orang adalah Masalah." (Douglas Adams)

Orang-orang membuat kesalahan. Jika salah satu file yang Anda lupa salin adalah "pustaka" bersama yang telah diubah secara luas, Anda dapat menghancurkan seluruh situs Produksi.

Phill W.
sumber
17
@ JohnHamilton Jika mengotomatiskan kompilasi adalah tugas yang sulit, maka itu sendiri adalah sesuatu yang harus diselesaikan dalam jangka panjang. Anda tidak harus memiliki lingkungan pengembangan, pengujian, praproduksi lengkap dengan penyebaran terotomatisasi sepenuhnya, tetapi pembuatan paket penerapan standar harus menjadi praktik standar.
Neil
20
Eh, ukuran perusahaan sebenarnya bukan masalah (sampai taraf tertentu). Biaya akan terkait sejauh penyebaran otomatis dan juga terkait dengan kompleksitas lingkungan produksi. Tapi ada gradien otomatisasi dan gradien "biaya" (waktu / uang) mulai dari hal-hal sederhana seperti script untuk menyalin output build ke produksi (investasi kecil dengan penghematan biaya berwujud langsung), dan naik dari sana, dan itu lebih tergantung pada buy-off manajemen dari ukuran perusahaan.
BurnsBA
39
@JohnHamilton: Perusahaan kecil yang tidak dikelola dengan baik mungkin menipu diri sendiri untuk berpikir begitu, tentu saja. Mengotomatiskan menyalin file bukanlah tugas yang sulit, dan biaya menyuruh orang yang dipekerjakan melakukan ini secara teratur akan jauh lebih besar daripada biaya penulisan bahkan skrip yang paling sepele untuk melakukannya.
GManNickG
8
@JohnHamilton: Biaya otomatisasi harus ditimbang terhadap risiko kesalahan yang dibuat selama penyebaran manual.
Robert Harvey
7
Anda bahkan tidak perlu Jenkins. Hanya skrip check-in dengan banyak perintah scp (atau apa pun yang Anda gunakan saat mengunggah secara manual) akan menjadi peningkatan.
user253751
14

Langkah-langkah manual membutuhkan banyak upaya dan berisiko: Anda mungkin lupa file yang diperlukan. Mungkin tidak semua orang di tim Anda tahu file mana yang perlu disalin. Semua masalah ini membuat penyebaran menjadi besar, menakutkan, dan langka - sama sekali tidak perlu. Alamat otomatisasi ini.

Bahkan langkah otomatisasi yang paling sederhana pun dapat memiliki manfaat besar, karena penyebaran menjadi sepele. Sebuah skrip yang menyalin file atau artefak melalui (S) FTP atau Rsync atau teknologi lain adalah langkah pertama yang bagus. Anda nanti dapat memperluas skrip itu untuk melakukan langkah pra-penempatan dan pasca penempatan di server secara otomatis, seperti memulai ulang layanan.

amon
sumber
Jika jumlah total server adalah 2 atau kurang, manual kurang berisiko daripada otomatis. Otomatis membutuhkan pemeriksaan bug yang ekstensif. Saya belum pernah melihat solusi otomatis sepele yang tetap sepele.
Yosua
3
@ Yosua Saya tidak yakin jumlah server harus menjadi faktor di sini. Otomatisasi juga memiliki nilai ketika Anda menggunakan ke server yang sama beberapa kali. Pertanyaannya adalah, siapa yang lebih Anda percayai: komputer dengan setia menjalankan skrip yang berfungsi sekali, atau kemampuan Anda untuk mengingat semua langkah yang diperlukan setiap kali? Sebagai manusia yang keliru dan pelupa, saya memiliki preferensi yang kuat untuk tidak melakukan hal-hal secara manual. Kadang-kadang saya bahkan membuat skrip tugas satu kali hanya supaya saya bisa meninjau perintah sebelum menjalankannya. Itu jauh lebih tidak berisiko daripada melakukan hal-hal acak secara manual sampai berhasil!
amon
Saya memiliki pengalaman luas dalam kedua cara. Hal-hal yang saya buat untuk penyebaran manual adalah instalasi xcopy sehingga sebenarnya tidak ada langkah untuk melupakannya.
Joshua
9

Praktik terbaik adalah dengan menerapkan semacam proses otomatis.

Berhati-hatilah untuk memeriksa bahwa tidak ada alasan khusus untuk pendekatan 'file per file' yang harus Anda perhitungkan.

Ewan
sumber
1
Saya mengajukan pertanyaan ini karena saya hanya ingin memastikan bahwa itu sama sekali bukan praktik terbaik di dunia. Saya ingin tahu apakah masih ada perusahaan / pengembang yang masih secara manual menyebarkan aplikasi / proyek mereka, dan yang membuatnya lebih buruk adalah file dengan file yang digunakan setiap iterasi pengembangan.
Jake Muller
4
Pertanyaan terbaik untuk ditanyakan adalah "mengapa kita melakukannya dengan cara ini?" Saya tidak dapat memikirkan alasannya, tetapi saya tahu bahwa beberapa perusahaan suka mempertahankannya secara manual
Ewan
8
@JakeMuller Apa yang harus Anda baca di antara baris-baris jawaban ini adalah bahwa keputusan harus dibuat dengan alasan tentang situasi, bukan kepatuhan terhadap apa yang oleh seseorang yang tidak memiliki pengetahuan tentang hal itu menyatakan selalu jawaban yang tepat.
Blrfl
Alasan untuk pendekatan file dengan file mungkin karena ketergantungan antara file dan pembaruan file yang digunakan sebelum perubahan ke file lain yang bergantung pada file-file tersebut. Memperbarui file dalam urutan yang salah mungkin sebentar rem sistem.
bdsl
6

Dengan Pengiriman Berkelanjutan (atau Penempatan, sebenarnya) dan memindahkan setiap file dengan tangan, Anda melihat dua ekstrem. Dapat dimengerti bahwa Anda tidak dapat / tidak ingin membuat pipa yang sepenuhnya otomatis (belum). Namun, Anda harus mempertimbangkan mengotomatisasi bagian dari proses.

Memindahkan setiap file dengan tangan cukup berisiko, dan Anda dapat mengurangi risiko itu dengan, misalnya, menandai penyimpanan kode Anda, memeriksa tag itu di komputer Anda, membuat artefak Anda dan mengunggahnya ke server Anda. Setiap langkah ini dapat diotomatisasi sehingga dijalankan dengan beberapa klik mouse, dan ini akan sangat mengurangi risiko melupakan file atau secara tidak sengaja mendorong untuk menghasilkan beberapa file tambahan.

Otomatiskan apa yang Anda bisa, satu langkah sekaligus. Fakta bahwa Anda tidak mampu membeli pipa CD otomatis sepenuhnya seharusnya tidak membuat Anda tidak bisa mengotomatisasi beberapa bagian.

Blueriver
sumber
1

Praktik terbaik adalah melakukan analisis biaya / manfaat untuk penyebaran khusus Anda untuk perusahaan Anda.

Jawaban umum adalah "jangan lakukan hal-hal secara manual, otomatiskan." Ini umumnya jawaban yang tepat untuk jenis umum perusahaan. Keseragaman jawaban yang Anda terima harus menjadi indikasi betapa kuatnya komunitas menemukan ini sebagai praktik terbaik. Jika perusahaan Anda merasa bahwa otomasi bukan alat yang tepat, mereka harus memahami apa yang membuatnya unik. Keunikan itu harus diperhitungkan dalam proses pengambilan keputusan Anda. Tidak ada "praktik terbaik" ketika set sampel adalah 1.

Pertanyaan seperti "berapa banyak file" dan "seberapa sering hal-hal diperbarui" dan "apa konsekuensi dari memecahkan sesuatu" dan "seberapa cepat Anda dapat mengembalikan perubahan yang buruk" adalah pertanyaan penting untuk dijawab. Jika Anda mengotomatisasi, banyak dari pertanyaan ini menjadi tidak penting, tetapi sangat penting untuk menetapkan biaya dan manfaat dengan benar untuk proses pembaruan manual.

Cort Ammon - Pulihkan Monica
sumber
1

Ada banyak nuansa abu-abu di antara salinan file-demi-file manual dan pengiriman berkelanjutan.

Mulailah dengan mengurangi kerumitan proses penyebaran, misalnya dengan menggunakan file zip, kemasan gaya rpm, infrastruktur sebagai alat manajemen kode (seperti boneka atau koki) atau bahkan hanya skrip sederhana yang menyalin file untuk Anda dari area pementasan pada server ftp.

Proses penyebaran dengan langkah-langkah manual lebih cenderung memiliki kesalahan (dan dengan demikian gagal) - seperti yang orang lain katakan, ambil elemen manusia darinya.

Anda tidak perlu menerapkan pengiriman kontinu penuh (yang mahal, dan membutuhkan upaya / investasi / inovasi dari waktu ke waktu) - mulai sederhana, membuatnya bekerja, menunjukkan manfaatnya - dan pergi dari sana.

vikingsteve
sumber
0

Itu tergantung pada teknologi perangkat lunak (atau tumpukan) yang Anda gunakan (bahasa yang ditafsirkan, bahasa yang dikompilasi, aplikasi desktop, seluler, dll.), Lunak. dev. kebijakan departemen, jika Anda memiliki alat untuk mengotomasinya, seberapa penting aplikasi Anda, dan satu hal penting untuk dipertimbangkan adalah arsitektur perangkat lunak Anda (bagaimana aplikasi Anda dirancang). Inilah sebabnya mengapa Anda memiliki jawaban berbeda di sini. Sebagai pedoman praktis, pendekatan terbaik adalah mengurangi intervensi manusia dalam tugas penyebaran, untuk menghindari kesalahan. Praktik yang baik akan menguji segala sesuatu dalam QA Server (pertimbangkan untuk menggunakan server virtual jika anggaran merupakan masalah) sebelum penyebaran, dan memiliki prosedur terbalik untuk mengembalikan ke versi sebelumnya jika terjadi bencana ( SELALU punya cadangan).

Edu Garcia
sumber