Hal-hal programmer apa yang harus diketahui setiap sysadmin?


20

Terinspirasi oleh pertanyaan ini , saya bertanya sebaliknya: berapa banyak tentang pemrograman yang perlu diketahui oleh administrator sistem? Lebih khusus lagi, alat pemrograman apa yang berguna untuk dimiliki sysadmin?


1
Bukankah ini pertanyaan SO. Saya pikir itu sudah ditanyakan di sana.
Tim Matthews


2
Ya, tetapi seperti yang telah dicatat pada pertanyaan itu, ada dua komunitas yang sangat terpisah di SF dan SO. Saya pikir itu akan menarik untuk melihat hal-hal programmer apa sysadmin pikir sysadmin harus tahu, daripada apa programmer hal programmer pikir sysadmin harus tahu.
Tim

Jawaban:


29
  • Kontrol Versi . Mampu menghasilkan, membaca, dan menerapkan tambalan. Ketahui cara menggunakan sistem kontrol versi yang menyajikan versi lebar repositori dan mengapa Anda menginginkannya. Ketahui cara menulis changelog deskriptif dan mengapa Anda menginginkannya. Ketahui cara mencari log repositori untuk kata kunci dan kerangka waktu.
  • Scripting . Lakukan sesuatu sekali dan terus jalan. Lakukan dua kali atau lebih, lakukan sekali lalu tulis skrip.
  • Debugging . Ketahui cara membaca jejak tumpukan dan cara melaporkan kesalahan yang relevan ke kontak dukungan perangkat lunak Anda. Menemukan kesalahan itu bagus dan bermanfaat, tetapi mengetahui cara memperbaikinya dapat membutuhkan banyak investasi dalam membaca kode. Lakukan bagian yang mudah bagi Anda, dan biarkan mereka melakukan bagian yang mudah bagi mereka.
  • Pengujian . Monitor terus menerus dan catat kesalahan. Digunakan bersama dengan kontrol versi dan pengujian, Anda memiliki gagasan kuat tentang apa yang mungkin salah ketika dan apa yang berubah saat itu. Pantau produksi dan praproduksi.
  • Peer Review . Usulkan dan tinjau perubahan pada sistem produksi. Uji praproduksi, tentukan dengan tepat apa yang perlu dilakukan dan catat layanan apa yang mungkin terpengaruh selama berapa lama. Jangan biarkan Manajemen Perubahan merosot ke dalam pertarungan politik kekuasaan birokrasi.
  • Belajar Kriptografi . Administrator sistem modern bertanggung jawab atas sumber daya jaringan; menambahkan keamanan sebagai langkah terakhir ada di antara mustahil dan proposisi yang sangat mahal. Memahami kriptografi kunci publik, praktik penanganan kata sandi, dan enkripsi secara umum akan sangat berharga.

Dan bahkan jika Anda tidak dapat skrip (atau skrip dengan baik), untuk dapat mengenali kapan untuk mengotomatisasi sesuatu adalah sangat penting.
Eter

Apa itu sistem kontrol versi yang cepat dan mudah untuk toko Windows murni?
jftuga

SVN? Maksudku, sepertinya cukup baik untuk orang idiot ini: codinghorror.com/blog/2008/04/…
jldugger

9

Saya akan mulai dengan:

  1. Cara menulis lebih dari skrip paling dasar apa pun bahasanya. Otomasi adalah teman Anda.
  2. Bagaimana menjalankan debugger / tahu cara membaca laporan kerusakan dari beberapa jenis: itu membuat mencari tahu laporan kerusakan dan siapa yang bertanya apa deuce menjadi lebih mudah.
  3. Kontrol Versi - tidak hanya untuk kode tetapi untuk apa pun yang berharga menjaga riwayat atau mengubah kontrol.

7

Administrasi sistem hanyalah pemrograman. Sistem manajemen konfigurasi memungkinkan Anda melihat seluruh infrastruktur Anda sebagai mesin terdistribusi. Sebagai sysadmin, tugas Anda adalah memprogram mesin ini.

Tahu satu editor teks. Biasanya vi untuk sysadmin, emacs untuk programmer.

Tahu cara menulis naskah. Pilih bahasa scripting. Perl adalah favorit abadi, seperti combo shell / sed / awk. Ruby dan Python dapat bekerja, tetapi untuk banyak hal objek adalah paradigma yang salah.

Ketahui cara menulis dokumentasi yang dapat dibaca.

Kontrol versi. Penting untuk memelihara file konfigurasi dan jejak audit.

Belajar berpikir dalam istilah pemrograman. Memahami paradigma pemrograman prosedural, berorientasi objek dan fungsional. Ini mungkin tidak pernah digunakan, tetapi mengetahuinya membuat Anda jauh lebih produktif.

Pelajari cara menggunakan debugger (atau lebih) dan masuk.

Belajar menggunakan RDBMS. Ada banyak persyaratan pemrosesan data yang dapat disederhanakan dengan menggunakan RDBMS dengan benar. Bahkan dapat beralih ke peran DBA sesuai permintaan dapat melakukan keajaiban.

Tes sebelum penyebaran. Lihat filosofi pengembangan yang digerakkan oleh tes.

Pemrograman pasangan itu baik. Mintalah orang lain mengawasi bahu Anda untuk belajar / memberi saran / mengoreksi.

Belajar untuk setidaknya memiliki keakraban lewat dengan banyak bahasa. Belajar bahasa baru setiap tahun.


Kembali ke dunia nyata ... Saya belum pernah bertemu seorang sysadmin yang melakukan semua ini (selain menguji dan menulis sedikit dokumen). Mungkin saya pernah bekerja untuk perusahaan yang salah!
PowerApp101

1
Kemudian versi realitas Anda menyebalkan. Setiap pekerja saya lebih suka vi (saya belajar emacs dan tidak merasa ingin menjalankan penyiksaan dua kali); kami memiliki ratusan skrip perl dan selusin situs web php satu kali untuk tujuan dukungan. Kami menjalankan Opsview / nagios untuk pemantauan, yang sebenarnya hanya beberapa pengujian formulir yang berjalan terus menerus - umpan balik instan saat Anda melakukan perubahan. Namun, saya ingin mendapatkan lebih banyak kontrol versi untuk situs web dan skrip, dan jejak audit yang lebih baik.
jldugger

Kalian adalah admin Unix? Di dunia Windows, banyak hal yang belum meresap ke dalam kesadaran sys admin. Percayalah, saya akan senang jika itu terjadi.
PowerApp101

Bocah abad ke-20, kami menendang admin Windows kami untuk mempelajari hal ini. Mereka belum ada di sana, tetapi lebih baik di sini daripada ketika saya bergabung. Masalah besar yang kita hadapi sekarang adalah masalah politik / manajemen, bukan masalah teknis yang kita miliki.
Devdas

Oh, dan kami juga memiliki pengembang Windows dengan petunjuk, sehingga mereka sebenarnya mendukung upaya tersebut.
Devdas

5
  • Tahu cara memprogram. Ya, itu penting: seperti yang dikatakan seorang komentator, jika Anda melakukannya lebih dari sekali, maka tuliskan skrip - dan tulislah dengan baik.
  • Ketahui alat yang disertakan dalam instalasi sistem operasi standar. Untuk administrator UNIX, ini berarti alat seperti Korn Shell (ksh) dan Perl dan vi. Jangan mengandalkan Emacs atau Ruby atau Tcl atau C shell yang hadir.
  • Ketahui jaringannya. Bagaimana paket Ethernet disatukan? Seperti apa bentuk paket? Apa jenis paket yang berbeda? Kenali alat seperti tcpdump, wireshark, snoop, dan lainnya.
  • Tulis kode portabel. Jika kode akan dijalankan di Linux - dan Tru64 - dan Solaris - dan OpenVMS - maka tulis kode portabel. Bahkan jika itu akan berjalan di bawah dua versi UNIX saja - membuatnya portabel. Tapi kemudian, jika tidak perlu portabel, jangan menghabiskan waktu ekstra untuk itu.
  • Ketahui di mana dokumentasinya. Untuk Perl, ini berarti perldoc, Perl Mongers, perl.org, dll. Untuk ksh, ini berarti halaman manual dan buku-buku shell Korn favorit Anda.
  • Dokumen, dokumen, dokumen, dokumen! Dokumentasikan kode Anda, buat halaman manual, buat dokumentasi Perl inline, dan apa pun yang sesuai. Jelaskan cara menggunakan program dan mengapa Anda mengkodekannya seperti itu.
  • Ketahui alat pengemasan sistem Anda. Ketahui cara membuat RPM untuk Red Hat, atau depot HP-UX, atau paket Solaris: ini memungkinkan Anda membuat paket untuk sistem Anda, dan dengan demikian mengintegrasikannya ke dalam proses instalasi.

3

Menulis naskah itu penting, tetapi saya menyarankan saran bahwa mengenal beberapa bahasa "nyata" adalah bonus yang pasti. Anda dapat melakukan beberapa hal yang sangat berguna dengan namespace .NET System.DirectoryServices, misalnya.


3

Saya seorang programmer dan admin / integrator senior. Untuk bekerja di tempat saya bekerja, Anda perlu mengetahui hal-hal berikut:

  • Cara menulis skrip shell (POSIX, no Bashisms), sedikit Perl, sedikit Python
  • Basic C (Spesifikasi UNIX tunggal)
  • Cara menginstal rantai alat kompiler
  • Cara membangun perpustakaan dan proyek OSS lainnya dari sumber
  • Apa itu Valgrind dan bagaimana menggunakannya untuk menemukan kebocoran memori
  • Cara menggulung paket .rpm dan .deb
  • Meskipun kami tidak memerlukannya , sedikit PHP dan sedikit LISP tidak akan sakit

Sebagian besar admin yunior dapat melihat salah satu programmer kami dan berkata (dengan otoritas), ya, saya menginstalnya dengan benar, di sinilah Anda memiliki kebocoran yang mengapa kode yang baru saja Anda dorong rusak. Atau "Tidak, ini bukan versi MySQL kami, lihat permintaan Anda di sini ..."

Saya pikir kita agak berbeda, ketika kita menyewa administrator yang berbakat .. kita setengah berharap mereka akan (pada akhirnya) menemukan jalan mereka ke pemrograman, bahkan jika itu hanya meretas sesuatu yang kita gunakan untuk bekerja dengan cara yang mereka butuhkan untuk bekerja .

Singkatnya, berpengetahuan luas tidak akan pernah menyakiti Anda.


1

Banyak, bertahun-tahun yang lalu (Windows NT 3.1 sebenarnya) saya mulai sebagai seorang programmer yang mengkhususkan diri dalam layanan penulisan dan bahkan driver perangkat sesekali. Ini berarti Anda mengenal kernel Windows dengan sangat baik. Akhirnya saya bosan dengan pemrograman dan beralih ke manajemen jaringan. Saya mendapati latar belakang saya dalam pemrograman telah sangat berharga berulang kali.

Bukan hanya menulis skrip VBScript relatif tidak menyakitkan. Mengetahui bagaimana nyali Windows bekerja, dan khususnya bagaimana IP bekerja, sangat membantu mencegah masalah server dan jaringan yang aneh. Itu juga pola pikir. Programmer terbiasa dengan dokumentasi dan kontrol versi, dan itu membuat saya ngeri melihat berapa banyak admin Windows yang akan mencoba sesuatu untuk melihat apakah itu berfungsi dan khawatir tentang mengurai kekacauan setelahnya.

Semua baik-baik saja, tetapi itu bukan saran yang sangat berguna untuk mengatakan pergi dan bekerja sebagai programmer selama sepuluh tahun! Namun saya pikir itu akan membantu sebagian besar sysadmin untuk memiliki pengalaman pemrograman dalam bahasa "keras" seperti C ++ atau C #. Dan jika Anda memiliki programmer yang jinak di organisasi Anda, minum bersama mereka!

John Rennie


1

Hal-hal buruk terjadi, kode Anda akan ada lebih lama dari yang Anda pikirkan. Gagal dengan anggun, dengan pesan kesalahan yang bermanfaat. Anda akan kehabisan disk, ram, cpu, waktu, dll, menanganinya.

Jangan terlalu optimis, bahwa aneh sekali dalam sejuta masalah akan terjadi terlalu sering dalam produksi.


1

Dengan semua deskripsi di sini, saya tidak akan mengatakan bahwa saya seorang sysadmin. Tetapi kenyataan bahwa saya membangun dan mengelola beberapa server windows / linux, saya harus mengakui sesuatu:

  • di linux, bash scripting adalah suatu keharusan untuk mengetahui - jika Anda tahu bagaimana mengintegrasikannya dengan perl / awk / etc, lebih baik. Saya menemukan bahwa banyak tugas menjadi lebih mudah dengan menggunakannya.

  • Mengetahui program di C / C ++ sangat membantu. Terkadang Anda harus memodifikasi kode sumber GNU (jika Anda menggunakannya) sesuai dengan kebutuhan Anda karena menjadi produk GNU tidak memastikan Anda akan selalu mendapatkan bantuan yang Anda butuhkan tepat waktu - dan sering kali mereka ditulis dalam C / C ++.


0
  • SQL - Semuanya berfungsi dengan basis data
  • Pemrograman - Bahasa tidak masalah, asalkan Anda memahami logika dan proses Anda dapat belajar dan beradaptasi dengan bahasa apa pun.
  • Cara DOKUMEN KODE dan PERUBAHAN - ini sangat besar. Berapa kali Anda terjebak melihat konfigurasi mencoba mencari tahu mengapa sih seseorang melakukan ini dan apa yang akan mempengaruhi jika kita mengubahnya kembali. Yang ini melampaui apa pun yang Anda kode atau skrip, yang satu ini mencakup ketika Anda membuat perubahan dalam pengaturan firewall untuk menangani kasus pinggiran ketika pengguna X menerima email dari domain Y pada sore hari Selasa ketika hujan turun. Dan mungkin bukan Anda, mungkin PFY yang memutuskan untuk melanjutkan dan melakukannya dan kemudian harus menelepon Anda pada jam 2 pagi pada liburan Anda karena semuanya pecah dengan cara yang mengerikan.
  • Bahasa sistem - Di Windows, ini adalah hal-hal seperti Powershell dan WMI yang memungkinkan bahasa skrip Anda menyatu dengan beberapa sumber daya yang sangat kuat dan melakukan apa pun pada PC. Unix / Linux memiliki seperangkat alat sendiri yang saya tidak memenuhi syarat untuk berbicara.

0

Mengetahui cara mengikat LDAP Anda dan mengambil info yang diperlukan dalam bahasa skrip pilihan Anda adalah kunci untuk semuanya, mulai dari pemecahan masalah hingga benar-benar meningkatkan berbagai jenis otomatisasi (penyediaan akun dan sumber daya, pemeriksaan yang lebih cerdas pada akun pengguna atau mesin).

Mungkin tampak mendasar tetapi saya telah melihat banyak toko roti-n-mentega di mana orang tidak berpikir mereka perlu untuk administrasi sistem semacam ini. Banyak tempat menghabiskan $$$ besar untuk set besar alat administrasi dan, sejauh yang saya tahu, 95% dari apa yang mereka gunakan untuk alat bisa dilakukan dengan beberapa jam penulisan jika ada yang tahu atau tahu bagaimana caranya. lakukan.


0

Saya telah menemukan bahwa mengetahui bash, dos batch, dan scripting PowerShell menyediakan admin sistem dengan kerangka kerja untuk melakukan apa saja, pada sistem populer.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.