Ketika datang ke sesuatu seperti server web produksi, apa praktik terbaik untuk tanggung jawab untuk sysadmin & pengembang? Secara khusus, saya berpikir untuk memperbarui / menginstal perangkat lunak. (Menurut pemahaman saya, dev seharusnya tidak memiliki akses root pada server produksi.)
Jadi server web produksi menjalankan Wordpress, dan perlu diperbarui ke versi terbaru. Siapa yang bertanggung jawab untuk memperbaruinya?
Bagaimana jika para pengembang memiliki plugin yang diretas khusus, atau file inti khusus pada aplikasi (dalam contoh ini, WP)?
Jawaban:
Saya telah menemukan bahwa dalam kebanyakan kasus, jika ANDA yang bertanggung jawab untuk server fisik yang terbaik untuk TIDAK memberikan akses root devs.
Ini sedikit perdebatan "perang suci" karena saya yakin Anda akan menemukan pengembang yang tidak setuju. Saya pribadi berada di kedua sisi perdebatan itu.
Alasan utama saya untuk tidak memberikan akses root devs (bahkan 100% devs terpercaya) adalah karena lebih sering ada paket yang mereka butuhkan untuk membuat XYZ berfungsi dengan benar. Mereka melanjutkan dan menginstalnya ... atau mengkonfigurasi ulang sesuatu yang sudah ada sehingga berfungsi ... atau ... yah ... Anda mendapatkan idenya.
Berbulan-bulan berlalu ... server harus diinstal ulang atau diciptakan kembali ... dan tiba-tiba tidak ada yang tahu mengapa "Ini bekerja pada server lama tetapi tidak pada yang baru."
Jawabannya tentu saja adalah bahwa dokumentasi yang Anda lihat tidak menyertakan semua paket kecil dan penyesuaian yang dilakukan pengembang untuk membuat sistem berfungsi pertama kali.
Ini bisa menyebalkan dalam $ untuk kedua belah pihak ... tetapi jika sysadmin bertanggung jawab untuk server, paket, dan dokumentasi ... dan pengembang bertanggung jawab untuk pengembangan dan perangkat lunak ... Saya pikir Anda ' Saya akan menemukan itu layak pada akhirnya.
Jika pengembang memerlukan plugin khusus, modul, konfigurasi, tweak ... tidak masalah ... lakukan untuk mereka ... tapi DOCUMENT IT sehingga Anda dapat mereproduksinya di lain waktu.
sumber
Golden Rule : Jangan biarkan non-admin menyentuh apa pun yang Anda tidak ingin rusak dan Anda akan bertanggung jawab.
Pengembang harus memiliki akses ke lingkungan pengujian. Setelah pekerjaan mereka siap untuk dimasukkan ke dalam mesin produksi itu harus diserahkan kepada admin sistem. Jika para dev telah melakukan pekerjaan mereka dan mendokumentasikan prosedur dengan baik, semua akan berjalan dengan baik. Jika tidak, mereka perlu bagian belakangnya ditendang karena tidak cukup pengujian.
sumber
Saya sudah dalam pertempuran ini juga. Jawaban saya adalah bahwa siapa pun yang bertanggung jawab atas uptime server adalah orang yang harus bertanggung jawab atas semua pembaruan, perubahan, dll., Dll. Tidak seorang pun yang seharusnya memiliki kemampuan untuk melakukan fungsi-fungsi jenis ini di server. Jika itu tugas Anda untuk memastikan server aktif dan berjalan dan jika bos meminta Anda bertanggung jawab dan bertanggung jawab atas server, maka itu adalah tanggung jawab Anda untuk memelihara dan mengamankannya.
Sebagian besar pengembang akan memberi tahu Anda bahwa mereka memerlukan akses tingkat admin ke server dan sebagian besar dari mereka akan tidak setuju dengan saya, tetapi saya yang harus reboot pada pukul 2 pagi ketika ditutup, harus membangun kembali setelah pembaruan yang gagal, downtime dibebankan pada departemen saya, dll., dll. Saya harus menjawab CIO untuk apa pun yang berdampak pada SLA kami, jadi karena itu saya satu-satunya yang mendapat akses tingkat admin ke server dan saya ' bertanggung jawab atas semua komponen, pembaruan, perubahan, dll.
sumber
Saya 100% setuju. Dev sebagian besar waktu tidak menyadari bagaimana syadmin bekerja. Jika mereka membutuhkan sesuatu, mereka bertanya kepada Anda, itu saja. Anda berpikir tentang bagaimana dan kapan dan Anda memberikan mereka paket yang bisa digunakan. (seperti mereka perlu mengirim email, ANDA adalah orang yang akan mengkonfigurasi postfix). Selain itu, mereka akan cenderung berpikir bahwa di sebagian besar waktu, akses root akan membuat hal-hal berfungsi jika mereka tidak dapat melakukannya dengan akses normal. Saya setuju dengan orang lain di sini, mereka tidak akan bersama Anda pukul 2 pagi ketika Anda akan melihat masalah. Saya memiliki kasus ini beberapa minggu yang lalu, seorang pengembang ingin memperbarui wordpress-nya. Saya mengatakan kepadanya untuk changelog RTF, baginya, itu tidak berguna, proses pembaruan dilakukan melalui antarmuka yang indah. Yah pembaruan tidak bekerja, saya sudah menyimpan aplikasinya, saya membuat skrip cadangan bukan dia. Tanpa saya, dia tidak akan dapat memulihkan situs.
sumber
Ada tren untuk mengaburkan perbedaan antara dev & operasi. Jadikan pengembang sysadmin Anda dan pengembang sysadmin Anda.
Dalam hal ini, wordpress akan mendapat manfaat dari beberapa pekerjaan tentang penyediaan blog secara otomatis (dan terprogram). Banyak pengguna wordpress mempertahankan lebih dari beberapa contoh WP / WPMU dan memperbarui mereka tepat waktu setidaknya rumit.
Anda dapat menemukan gambaran filosofi Agile Infrastructure yang bagus (dan menyenangkan) dari Agile 2009
sumber
Pengembang seharusnya tidak memiliki akar pada produksi; semua orang kecuali pengembang setuju akan hal ini. Tetapi para pengembang bisa semacam memiliki kue mereka dan memakannya juga. Saya agak terkejut bahwa tidak ada yang secara eksplisit menyebutkan ini:
Salah satu klien bisnis kecil saya yang sangat lama memiliki situs web dengan instalasi Drupal, beberapa situs WordPress, forum SMF, dan beberapa aplikasi web kecil acak lainnya. Saya adalah sysadmin kontrak (dan karena alasan historis juga memperbarui / meretas WordPress dan SMF bila diperlukan) dan klien saya memiliki kontrak pengembang Drupal sendiri. Lingkungan adalah beberapa mesin virtual VMware pada penyedia cloud publik.
Pengembang benar-benar ingin memiliki akses root dan semacam memerlukannya. Ini adalah tanggung jawab mereka untuk menulis aturan penulisan ulang nginx untuk membuat semua barang Drupal kustom mereka berfungsi, misalnya. Tapi tidak mungkin saya memberi mereka akses root di server produksi, dan klien saya setuju dengan saya tentang itu.
Jadi kami berkompromi: Mereka mendapatkan akses root pada server web pengujian (yang umumnya identik dengan produksi kecuali untuk alamat IP-nya dan berada di cloud yang sama). Yang, seperti produksi, memiliki dllkeeper sehingga saya bisa melihat perubahan apa pun yang mereka perlukan untuk membuat dan paket apa pun yang mereka instal. Saya kemudian dapat menarik perubahan ke dalam produksi atau memberi tahu mereka apa yang salah dengan apa pun yang ingin mereka lakukan. Dan jika mereka benar-benar kacau (mereka belum melakukannya, terima kasih Tuhan) Saya dapat dengan mudah mengembalikan perubahan mereka.
Mereka tidak memiliki akses sama sekali ke server database produksi; mereka bahkan tidak memiliki login pengguna. Hanya saya dan klien saya yang melakukannya.
(Aplikasi web itu sendiri, mereka menyebarkan secara langsung dengan git, dan jika mereka membobolnya, mereka bisa memperbaikinya dan menjelaskan kepada klien saya mengapa mereka harus terus menjadi pengembangnya. Meskipun klien saya akan mengirimi saya email seperti itu sehingga saya bisa memilih menertawakan mereka atau facepalm.)
sumber
Root == System Admin.
Pengguna == Pengembang, DBA, atau Pengguna.
Root tahu tidak tidur ketika server turun, root melindungi pengguna dari diri mereka sendiri, root melindungi data pengguna dari internet, root menempatkan kesehatan server di atas semua pengguna. Pantat Root ada di telepon ketika server sedang offline. Server senang, root selamat!
Alasan umum untuk waktu henti yang tidak dijadwalkan: Pengguna, perubahan tidak berdokumen di lingkungan, dan mundur. Server melakukan persis apa yang diperintahkan, mereka tidak hanya istirahat secara acak. Peretas yang Anda tanyakan, itu bukan jika, itu kapan ... dengan demikian perlunya "root".
00:33 CDT, tahukah Anda di mana cadangan dan dokumen pemulihan bencana Anda? :-p
sumber
Sysadmin harus memiliki akses admin (seperti judulnya). Tidak ada orang lain yang memerlukan akses ke server produksi. Jika pengembang perlu memecahkan masalah pada sistem produksi, masalah itu harus dapat direproduksi di lingkungan pengembangan. Jika tidak, mereka bisa duduk dengan sysadmin dan melihat melalui sistem.
Pengembang tidak suka tidak bisa menyentuh produksi, tetapi itu bukan pekerjaan. Tugasnya adalah menulis perangkat lunak dan menyerahkannya ke sysadmin untuk rilis produksi. Jika mereka telah mendokumentasikan semuanya (dan perlu diingat bahwa di sebagian besar toko dokumentasi adalah kata yang kotor) dengan benar maka rilisnya akan berjalan dengan baik.
Di perusahaan publik di AS, Anda harus berurusan dengan SOX, HIPPA, dll. Sebagian besar peraturan terkutuk ini sebenarnya membantu dengan argumen ini. SOX menentukan pemisahan tugas yang mengharuskan pengembang tetap di sana melepaskan sistem produksi.
sumber