Jakie rzeczy programisty powinien znać każdy sysadmin?

20

Zainspirowany tym pytaniem zadaję odwrotnie: ile o programowaniu powinni wiedzieć administratorzy systemów? Mówiąc dokładniej, jakie narzędzia programistyczne są przydatne dla sysadmin?

Tim
źródło
1
Czy to nie powinno być pytanie TAK? Myślę, że i tak już o to pytano.
Tim Matthews
2
Tak, ale jak zauważono w tym pytaniu, istnieją dwie bardzo różne społeczności na SF i SO. Myślę, że to będzie interesujące zobaczyć, co programista rzeczy administratorów myśleć administratorzy powinni wiedzieć, a nie to, co programista rzeczy programiści myśleć administratorzy powinni wiedzieć.
Tim

Odpowiedzi:

29
  • Kontrola wersji . Być w stanie generować, czytać i stosować łatki. Wiedzieć, jak korzystać z systemu kontroli wersji, który prezentuje wersje dla całego repozytorium i dlaczego go potrzebujesz. Wiedz, jak pisać opisowe dzienniki zmian i dlaczego ich potrzebujesz. Dowiedz się, jak przeszukiwać dzienniki repozytorium pod kątem słów kluczowych i ram czasowych.
  • Skryptowym . Zrób coś raz i bądź na swojej drodze. Zrób to dwa razy lub więcej, zrób to raz, a następnie napisz skrypt.
  • Debugowania . Dowiedz się, jak odczytać ślad stosu i jak zgłosić odpowiednie błędy kontaktowi z pomocą techniczną oprogramowania. Znalezienie błędu jest miłe i pomocne, ale wiedza na temat jego naprawy może wymagać dużych nakładów inwestycyjnych przy czytaniu kodu. Wykonaj część, która jest dla Ciebie łatwa i pozwól im wykonać część, która jest dla nich łatwa.
  • Testowanie . Monitoruj w sposób ciągły i rejestruj błędy. W połączeniu z kontrolą wersji i testowaniem masz dobre pojęcie o tym, co mogło pójść nie tak, kiedy i co się wtedy zmieniło. Monitoruj zarówno produkcję, jak i przedprodukcję.
  • Recenzja . Proponuj i przeglądaj zmiany w systemach produkcyjnych. Przetestuj na etapie przedprodukcyjnym, określ dokładnie, co należy zrobić, i zapisz, na jakie usługi może to wpłynąć na jak długo. Nie pozwól, by Zarządzanie Zmianami przekształciło się w polityczne bitwy o władzę biurokratyczną.
  • Studiuj kryptografię . Nowoczesny administrator systemu odpowiada za zasoby sieciowe; dodanie bezpieczeństwa jako ostatniego kroku jest gdzieś pomiędzy niemożliwą a bardzo kosztowną propozycją. Zrozumienie kryptografii klucza publicznego, procedur obsługi haseł i ogólnie szyfrowania będzie niezwykle cenne.
obrotami
źródło
I nawet jeśli nie umiesz pisać (lub dobrze pisać), bardzo ważna jest umiejętność rozpoznania, kiedy zautomatyzować coś.
Eter
Co to jest szybki i łatwy system kontroli wersji dla sklepu z systemem Windows?
jftuga
SVN? To znaczy, wydaje się wystarczająco dobre dla tego idioty: codinghorror.com/blog/2008/04/…
jldugger
9

Zacząłbym od:

  1. Jak pisać więcej niż najbardziej podstawowe skrypty bez względu na język. Automatyzacja jest twoim przyjacielem.
  2. Jak uruchomić debugger / wiedzieć, jak czytać raporty o awariach: dzięki temu łatwiej jest dowiedzieć się o raporcie o awarii i komu zapytać, o co chodzi.
  3. Kontrola wersji - nie tylko dla kodu, ale dla wszystkiego, co warte jest zachowania historii lub zmiany kontroli.
Chealion
źródło
7

Administracja systemem to tylko programowanie. System zarządzania konfiguracją pozwala zobaczyć całą infrastrukturę jako maszynę rozproszoną. Jako administrator systemu Twoim zadaniem jest zaprogramowanie tego komputera.

Zna jeden edytor tekstu. Zwykle vi dla sysadmins, emacs dla programistów.

Umieć pisać. Wybierz język skryptowy. Perl jest wiecznym ulubieńcem, podobnie jak kombinacja shell / sed / awk. Ruby i Python mogą działać, ale w wielu przypadkach obiekty są niewłaściwym paradygmatem.

Umieć pisać czytelną dokumentację.

Kontrola wersji. Kluczowe dla utrzymania plików konfiguracyjnych i ścieżek audytu.

Naucz się myśleć w kategoriach programistycznych. Zrozumienie proceduralnych, obiektowych i funkcjonalnych paradygmatów programowania. Nie można ich nigdy używać, ale ich znajomość sprawia, że ​​jesteś nieskończenie bardziej produktywny.

Naucz się korzystać z debugera (lub więcej) i logowania.

Naucz się korzystać z RDBMS. Istnieje wiele wymagań dotyczących przetwarzania danych, które można uprościć, używając poprawnie RDBMS. Nawet możliwość przejścia na rolę DBA na żądanie może zdziałać cuda.

Przetestuj przed wdrożeniem. Zobacz filozofię programowania opartą na testach.

Programowanie par jest dobre. Niech ktoś czuwa nad twoim ramieniem, aby uczył się / doradzał / poprawiał.

Naucz się przynajmniej znać znajomość wielu języków. Ucz się nowego języka każdego roku.

Devdas
źródło
Z powrotem w prawdziwym świecie ... Nie spotkałem jeszcze sysadmina, który to robi (oprócz testowania i pisania odrobiny dokumentów). Może pracowałem dla niewłaściwych firm!
PowerApp101
1
Twoja wersja rzeczywistości jest do bani. Każdy z moich pracowników woli vi (nauczyłem się emacsa i nie mam ochoty dwa razy poddawać się tej torturze); mamy setki skryptów Perla i kilkanaście jednorazowych stron php do celów wsparcia. Do monitorowania używamy Opsview / nagios, co w rzeczywistości jest tylko testem formy, który działa nieprzerwanie - natychmiastowa informacja zwrotna po wprowadzeniu zmiany. Mimo to chciałbym uzyskać większą kontrolę wersji dla stron internetowych i skryptów oraz lepsze ścieżki audytu.
jldugger
Jesteście administratorami Uniksa? W świecie Windows wiele z tych rzeczy musi jeszcze przedostać się do świadomości administratorów sys. Uwierz mi, bardzo bym to zrobił.
PowerApp101
Chłopak z XX wieku, skopaliśmy naszych administratorów Windowsa do nauki tego. Jeszcze ich tam nie ma, ale tu jest lepiej niż kiedy dołączyłem. Większe problemy, przed którymi teraz stoimy, to problemy polityczne / związane z zarządzaniem, a nie problemy techniczne, które mieliśmy.
Devdas
Aha, mamy też programistów Windowsa ze wskazówką, więc faktycznie wspierają takie wysiłki.
Devdas
5
  • Umieć programować. Tak, to ważne: jak powiedział jeden z komentatorów, jeśli zrobisz to więcej niż jeden raz, to napisz skrypt - i napisz go dobrze.
  • Zna narzędzia zawarte w standardowej instalacji systemu operacyjnego. Dla administratorów UNIX oznacza to narzędzia takie jak Korn Shell (ksh) oraz Perl i vi. Nie polegaj na obecności Emacsa, Ruby, Tcl lub C.
  • Poznaj sieć. Jak są łączone pakiety Ethernet? Jak wygląda pakiet? Jakie są różne typy pakietów? Poznaj narzędzia takie jak tcpdump, wireshark, snoop i inne.
  • Napisz przenośny kod. Jeśli kod będzie działał w systemach Linux - i Tru64 - oraz Solaris - i OpenVMS - wówczas napisz kod przenośny. Nawet jeśli będzie działał tylko w dwóch wersjach UNIX - uczyń go przenośnym. Ale jeśli nie musi być przenośny, nie poświęcaj na to dodatkowego czasu.
  • Dowiedz się, gdzie jest dokumentacja. Dla Perla oznacza to perldoc, Perl Mongers, perl.org itp. Dla ksh oznacza to stronę podręcznika man i twoje ulubione książki z powłokami Korna.
  • Dokument, dokument, dokument, dokument! Dokumentuj swój kod, twórz strony podręcznika, twórz wbudowaną dokumentację Perla i cokolwiek innego jest odpowiednie. Wyjaśnij, jak korzystać z programu i dlaczego go tak zakodowałeś.
  • Poznaj narzędzia do pakowania swojego systemu. Dowiedz się, jak tworzyć RPM dla magazynów Red Hat, HP-UX lub pakietów Solaris: pozwoli ci to zbudować pakiety dla swoich systemów, a tym samym zintegrować je z procesem instalacji.
Mei
źródło
3

Skrypty są niezbędne, ale poparłbym radę, że znajomość niektórych „prawdziwych” języków jest zdecydowaną zaletą. Na przykład możesz zrobić kilka bardzo przydatnych rzeczy z przestrzenią nazw .NET System.DirectoryServices.

Maximus Minimus
źródło
3

Jestem programistą i starszym administratorem / integratorem. Aby pracować tam, gdzie ja, musisz znać następujące rzeczy:

  • Jak pisać skrypty powłoki (POSIX, bez baszizmów), trochę Perla, trochę Pythona
  • Podstawowy C (specyfikacja Single UNIX)
  • Jak zainstalować łańcuch narzędzi kompilatora
  • Jak budować biblioteki i inne projekty OSS ze źródła
  • Co to jest Valgrind i jak go używać do wykrywania wycieków pamięci
  • Jak rzutować pakiety .rpm i .deb
  • Chociaż nie wymagamy tego, trochę PHP i LISP nie zaszkodzi

Większość młodszych administratorów może spojrzeć na jednego z naszych programistów i powiedzieć (z upoważnieniem), tak, zainstalowałem go poprawnie, tutaj jest przeciek, dlatego właśnie kod, który właśnie wypuściłeś, łamie się. Lub „Nie, to nie jest nasza wersja MySQL, spójrz na swoje zapytanie tutaj ...”

Wydaje mi się, że jesteśmy nieco inni, kiedy zatrudniamy utalentowanego administratora. Spodziewamy się, że w połowie (ostatecznie) znajdą sposób na programowanie, nawet jeśli po prostu włamuje się do czegoś, czego używamy do pracy w sposób, w jaki potrzebują .

Podsumowując, bycie dobrze zaokrąglonym nigdy cię nie skrzywdzi.

Tim Post
źródło
1

Wiele, wiele lat temu (w rzeczywistości Windows NT 3.1) zacząłem jako programista specjalizujący się w usługach pisania, a nawet sporadycznych sterownikach urządzeń. Oznacza to, że bardzo dobrze poznajesz jądro systemu Windows. Z czasem trochę się nudziłem programowaniem i przestawiłem na zarządzanie siecią. Odkryłem, że moje doświadczenie w programowaniu było niezwykle cenne w kółko.

Nie chodzi tylko o to, że pisanie skryptów VBScript jest stosunkowo bezbolesne. Wiedza o tym, jak działa wnętrzności systemu Windows, a zwłaszcza jak działa protokół IP, pomaga w rozwiązywaniu problemów z serwerem i siecią. To także sposób myślenia. Programiści są przyzwyczajeni do dokumentacji i kontroli wersji. Przeraża mnie to, że ilu administratorów systemu Windows po prostu spróbuje czegoś sprawdzić, czy to działa, i martwię się o rozwiązanie problemu.

Wszystko bardzo dobrze, ale nie jest zbyt przydatną radą powiedzieć, żebyś odszedł i pracował jako programista przez dziesięć lat! Myślę jednak, że pomogłoby to większości sysadminów mieć doświadczenie w programowaniu w „twardym” języku, takim jak C ++ lub C #. A jeśli masz oswojonych programistów w swojej organizacji, napij się z nimi!

John Rennie

John Rennie
źródło
1

Zdarzają się złe rzeczy, Twój kod będzie trwał dłużej, niż myślisz. Z wdziękiem zawodzą dzięki przydatnym komunikatom o błędach. Skończy Ci się dysk, ram, procesor, czas itp., Poradzisz sobie z tym.

Nie bądź tak optymistyczny, że dziwne przypadki na milion zdarzają się zbyt często w produkcji.

Ronald Pottol
źródło
1

Biorąc pod uwagę wszystkie opisy tutaj, nie powiem, że jestem administratorem systemu. Ale fakt, że zbudowałem i zarządzam kilkoma serwerami Windows / Linux, muszę coś przyznać:

  • w Linuksie skrypt bash jest koniecznością - jeśli wiesz, jak go zintegrować z perl / awk / etc, lepiej. Przekonałem się, że wiele zadań stało się łatwiejszych dzięki użyciu.

  • Znajomość programowania w C / C ++ bardzo pomaga. Czasami musisz zmodyfikować kod źródłowy GNU (jeśli go używasz), aby dopasować go do swoich potrzeb, ponieważ produkt GNU nie gwarantuje, że zawsze otrzymasz potrzebną pomoc na czas - i wiele razy są one napisane w C / C ++.

Mario Patty Fc
źródło
0
  • SQL - wszystko działa z bazami danych
  • Programowanie - język nie ma znaczenia, o ile rozumiesz logikę i proces, którego możesz się nauczyć i dostosować do dowolnego języka.
  • Jak DOKUMENTOWAĆ KOD i ZMIANY - ten jest ogromny. Ile razy utknąłeś patrząc na konfigurację, próbując dowiedzieć się, dlaczego, do cholery, ktoś to zrobił i na co wpłynie to, jeśli zmienimy ją z powrotem. Ten wykracza poza wszystko, co kodujesz lub piszesz, ten obejmuje, gdy wprowadzasz zmiany w ustawieniach zapory ogniowej, aby obsłużyć przypadek, gdy użytkownik X otrzymuje wiadomość e-mail z domeny Y we wtorkowe popołudnie, gdy pada deszcz. I to może nie być Ty, to może PFY decyduje się to zrobić, a potem musi zadzwonić o 2 nad ranem na wakacjach, ponieważ wszystko zepsuło się w ohydny sposób.
  • Języki systemowe - w systemie Windows są to takie elementy, jak Powershell i WMI, które pozwalają Twoim językom skryptowym łączyć się z dość potężnymi zasobami i wykonywać dowolne czynności na komputerze. Unix / Linux ma własny zestaw narzędzi, o których nie mam uprawnień.
Shial
źródło
0

Umiejętność łączenia się z LDAP i uzyskiwania potrzebnych informacji w wybranym języku skryptowym jest kluczem do wszystkiego - od rozwiązywania problemów po naprawdę przyspieszenie różnych rodzajów automatyzacji (zapewnianie kont i zasobów, bardziej inteligentne kontrole kont użytkowników lub komputerów).

Może się to wydawać podstawowe, ale widziałem wiele sklepów z masłem, w których ludzie nie sądzą, że potrzebują takiej administracji systemem. Wiele miejsc wydaje duże $$$ na duże zestawy narzędzi administracyjnych i, o ile mogę powiedzieć, 95% tego, do czego używają tych narzędzi, można było zrobić za pomocą kilku godzin pisania skryptów, gdyby ktokolwiek wiedział o tym lub wiedział, jak to zrobić Zrób to.

damorg
źródło
0

Przekonałem się, że znajomość skryptów bash, dos batch i PowerShell zapewnia administratorowi systemu frameworki do robienia wszystkiego, w dowolnym popularnym systemie.

Sygnał dźwiękowy
źródło