Que coisas do programador todo administrador de sistemas deve saber?

20

Inspirado por essa pergunta , pergunto o contrário: quanto de programação os administradores de sistema precisam saber? Mais especificamente, quais ferramentas de programação são úteis para um administrador de sistemas ter?

Tim
fonte
11
Isso não deveria ser uma pergunta SO. Eu acho que já foi perguntado lá de qualquer maneira.
Tim Matthews
2
Sim, mas como foi observado nessa questão, existem duas comunidades muito separadas no SF e no SO. Eu acho que seria interessante ver o que os administradores de sistemas pensam que os administradores devem saber, em vez de o que os programadores pensam que os administradores devem saber.
Tim

Respostas:

29
  • Controle de versão . Ser capaz de gerar, ler e aplicar patches. Saiba como usar um sistema de controle de versão que apresente versões amplas do repositório e por que você deseja uma. Saiba como escrever registros de alterações descritivos e por que você os deseja. Saiba como pesquisar nos logs de um repositório por palavras-chave e prazos.
  • Script . Faça algo uma vez e esteja a caminho. Faça duas ou mais vezes, faça uma vez e depois escreva um script.
  • Depuração . Saiba como ler um rastreamento de pilha e como relatar erros relevantes ao seu contato de suporte de software. Encontrar o erro é bom e útil, mas saber como corrigi-lo pode exigir muito investimento na leitura do código. Faça a parte que é mais fácil para você e deixe-os fazer a parte que é mais fácil para eles.
  • Teste . Monitore continuamente e registre erros. Utilizado em conjunto com o controle e teste de versão, você tem uma forte idéia do que pode ter dado errado quando e o que mudou nessa época. Monitore a produção e a pré-produção.
  • Revisão por pares . Propor e revisar alterações nos sistemas de produção. Teste na pré-produção, determine exatamente o que precisa ser feito e registre quais serviços podem ser afetados por quanto tempo. Não deixe o Gerenciamento de Mudanças se degradar em batalhas políticas de poder burocrático.
  • Estudo de criptografia . Um administrador de sistema moderno é responsável pelos recursos da rede; adicionar segurança como etapa final está entre algo impossível e uma proposta muito cara. Compreender a criptografia de chave pública, práticas de manipulação de senha e criptografia em geral será extremamente valioso.
4 rotações
fonte
E mesmo que você não consiga fazer um script (ou um bom script), ser capaz de reconhecer quando automatizar algo é muito importante.
Éter
O que é um sistema de controle de versão rápido e fácil para uma loja pura do Windows?
jftuga
SVN? Quero dizer, parece bom o suficiente para esse idiota: codinghorror.com/blog/2008/04/…
jldugger
9

Eu começaria com:

  1. Como escrever mais do que os scripts mais básicos, independentemente do idioma. A automação é sua amiga.
  2. Como executar um depurador / sei ler algum tipo de relatório de falha: torna mais fácil descobrir um relatório de falha e quem perguntar o que isso significa.
  3. Controle de versão - não apenas para código, mas para qualquer coisa que valha a pena manter um histórico ou alterar o controle.
Chealion
fonte
7

A administração do sistema é apenas programação. Um sistema de gerenciamento de configuração permite que você veja toda a sua infraestrutura como uma máquina distribuída. Como administrador de sistema, seu trabalho é programar esta máquina.

Conheça um editor de texto. Geralmente vi para sysadmins, emacs para programadores.

Saiba como fazer script. Escolha uma linguagem de script. Perl é um eterno favorito, assim como a combinação shell / sed / awk. Ruby e Python podem funcionar, mas para muitas coisas os objetos são o paradigma errado.

Saiba como escrever documentação legível.

Controle de versão. Crucial para manter arquivos de configuração e trilhas de auditoria.

Aprenda a pensar em termos de programação. Entenda os paradigmas de programação procedural, orientada a objeto e funcional. Eles nunca podem ser usados, mas conhecê-los torna você infinitamente mais produtivo.

Aprenda a usar um depurador (ou mais) e log.

Aprenda a usar um RDBMS. Existem muitos requisitos de processamento de dados que podem ser simplificados usando um RDBMS corretamente. Mesmo poder mudar para uma função de DBA sob demanda pode fazer maravilhas.

Teste antes da implantação. Veja a filosofia de desenvolvimento orientada a testes.

A programação de pares é boa. Peça a alguém que cuide do seu ombro para aprender / aconselhar / corrigir.

Aprenda a pelo menos ter uma familiaridade passageira com vários idiomas. Aprenda um novo idioma todos os anos.

Devdas
fonte
De volta ao mundo real ... ainda não conheci um administrador de sistema que faz nada disso (além de testar e escrever um pouco de documento). Talvez eu tenha trabalhado para empresas erradas!
PowerApp101
11
Então sua versão da realidade é péssima. Cada um dos meus trabalhadores prefere o vi (aprendi emacs e não sinto vontade de passar por essa tortura duas vezes); temos centenas de scripts perl e uma dúzia de sites php únicos para fins de suporte. Executamos o Opsview / nagios para monitoramento, que é realmente apenas um teste de formulário em execução contínua - feedback instantâneo quando você confirma uma alteração. Ainda assim, eu gostaria de obter mais controle de versão para sites e scripts e melhores trilhas de auditoria.
Jldugger #
Vocês são administradores do Unix? No mundo do Windows, muitas dessas coisas ainda não chegaram à consciência dos administradores de sistemas. Acredite, eu adoraria se tivesse.
PowerApp101
Garoto do século XX, incentivamos nossos administradores do Windows a aprender essas coisas. Eles ainda não estão lá, mas é melhor aqui do que quando entrei. Os maiores problemas que estamos enfrentando agora são questões políticas / de gestão, e não as questões técnicas que tivemos.
Devdas
Ah, e também temos desenvolvedores do Windows com uma pista, para que eles realmente apoiem esses esforços.
Devdas
5
  • Saiba como programar. Sim, isso é importante: como disse um comentarista, se você fizer isso mais de uma vez, escreva um script - e escreva-o bem.
  • Conheça as ferramentas incluídas em uma instalação padrão do sistema operacional. Para administradores UNIX, isso significa ferramentas como Korn Shell (ksh) e Perl e vi. Não confie na presença do Emacs, Ruby, Tcl ou C.
  • Conheça a rede. Como os pacotes Ethernet são reunidos? Como é um pacote? Quais são os diferentes tipos de pacotes? Conheça ferramentas como tcpdump, wireshark, snoop e outras.
  • Escreva código portátil. Se o código for executado no Linux - e Tru64 - e Solaris - e OpenVMS -, escreva um código portátil. Mesmo que seja executado apenas em duas versões do UNIX, torne-o portátil. Mas, se não precisar ser portátil, não gaste tempo extra com isso.
  • Saiba onde está a documentação. Para Perl, isso significa perldoc, Perl Mongers, perl.org, etc. Para ksh, isso significa a página de manual e seus livros de shell Korn favoritos.
  • Documento, documento, documento, documento! Documente seu código, crie páginas de manual, crie documentação Perl embutida e o que mais for apropriado. Explique como usar o programa e por que você o codificou dessa maneira.
  • Conheça as ferramentas de empacotamento do seu sistema. Saiba como criar RPMs para os depósitos Red Hat, HP-UX ou Solaris: isso permitirá criar pacotes para seus sistemas e, assim, integrá-los ao processo de instalação.
Mei
fonte
3

O script é essencial, mas eu recomendaria que conhecer algumas línguas "reais" seja um bônus definitivo. Você pode fazer algumas coisas muito úteis com o namespace .NET System.DirectoryServices, por exemplo.

Maximus Minimus
fonte
3

Sou programador e administrador / integrador sênior. Para trabalhar onde trabalho, você precisa saber o seguinte:

  • Como escrever scripts de shell (POSIX, sem Bashisms), um pouco de Perl, um pouco de Python
  • C básico (especificação UNIX única)
  • Como instalar uma cadeia de ferramentas do compilador
  • Como criar bibliotecas e outros projetos OSS a partir da origem
  • O que é o Valgrind e como usá-lo para detectar vazamentos de memória
  • Como rolar pacotes .rpm e .deb
  • Embora não seja necessário , um pouco de PHP e um pouco de LISP não prejudicam

A maioria dos administradores juniores pode olhar para um de nossos programadores e dizer (com autoridade): sim, eu o instalei corretamente, é aqui que você tem um vazamento, e é por isso que o código que você acabou de enviar está quebrando. Ou "Não, não é a nossa versão do MySQL, veja sua consulta aqui ..."

Eu acho que somos meio diferentes, quando contratamos um administrador talentoso ... esperamos que eles acabem encontrando o caminho para a programação, mesmo que seja apenas uma invasão de algo que usamos para funcionar da maneira que eles precisam. .

Em resumo, ser bem-educado nunca vai machucá-lo.

Tim Post
fonte
1

Muitos anos atrás (Windows NT 3.1, de fato), comecei como programador especializado em serviços de gravação e até mesmo em drivers de dispositivos ocasionais. Isso significa que você conhece o kernel do Windows muito bem. Com o tempo, fiquei um pouco entediado com a programação e mudei para o gerenciamento de rede. Descobri que minha formação em programação tem sido imensamente valiosa repetidamente.

Não é apenas que escrever scripts VBScript seja relativamente indolor. Saber como funcionam as tripas do Windows, e particularmente como o IP, ajuda bastante a resolver problemas estranhos de servidor e rede. Também é uma mentalidade. Os programadores estão acostumados à documentação e ao controle de versão, e me horroriza ver quantos administradores do Windows tentam algo para ver se funciona e se preocupam em desfazer a bagunça depois.

Tudo muito bem, mas não é um conselho muito útil dizer ir embora e trabalhar como programador por dez anos! No entanto, acho que ajudaria a maioria dos administradores de sistemas a ter alguma experiência em programação em uma linguagem "difícil" como C ++ ou C #. E se você tem programadores mansos em sua organização, vá beber com eles!

John Rennie

John Rennie
fonte
1

Coisas ruins acontecem, seu código terá mais tempo do que você pensa. Falha normalmente, com mensagens de erro úteis. Você ficará sem disco, memória ram, CPU, tempo, etc, para lidar com isso.

Não seja tão otimista, que uma vez estranha a cada milhão de edições acontecerá com muita frequência na produção.

Ronald Pottol
fonte
1

Com todas as descrições aqui, não vou dizer que sou administrador de sistemas. Mas o fato de eu ter construído e gerenciado um servidor Windows / Linux, devo admitir algo:

  • no linux, o bash scripting é essencial - se você sabe como integrá-lo ao perl / awk / etc, é melhor. Eu descobri que muitas tarefas se tornaram mais fáceis usando-as.

  • Saber programar em C / C ++ ajuda muito. Às vezes, é necessário modificar um código-fonte GNU (se você usar um) para atender às suas necessidades, porque se tornou um produto GNU, não garante que você sempre obtenha a ajuda que precisa no prazo - e muitas vezes eles são escritos em C / C ++.

Mario Patty Fc
fonte
0
  • SQL - Tudo funciona com bancos de dados
  • Programação - o idioma não importa, contanto que você entenda a lógica e o processo, poderá aprender e se adaptar a qualquer idioma.
  • Como código de código e alterações - este é enorme. Quantas vezes você ficou parado olhando uma configuração tentando descobrir por que diabos alguém fez isso e o que isso afetará se mudarmos de volta. Este vai além de qualquer coisa que você codifique ou script, este abrange quando você faz alterações nas configurações do firewall para lidar com um caso marginal quando o usuário X recebe email do domínio Y em uma tarde de terça-feira, quando está chovendo. E pode não ser você, pode ser o PFY que decide ir em frente e faze-lo e, em seguida, tem que ligar para você às 2 da manhã em suas férias, porque tudo quebrou de uma maneira horrível.
  • Linguagens de sistema - No Windows, são coisas como o Powershell e o WMI que permitem que suas linguagens de script se vinculem a recursos bastante poderosos e façam qualquer coisa em um PC. O Unix / Linux tem seu próprio conjunto de ferramentas que eu não estou qualificado para falar.
Shial
fonte
0

Saber como vincular-se ao LDAP e recuperar as informações necessárias na linguagem de script de sua escolha é essencial para tudo, desde a solução de problemas até a intensificação de vários tipos de automação (provisionamento de contas e recursos, verificações mais inteligentes nas contas de usuários ou máquinas).

Pode parecer básico, mas eu já vi muitas lojas de pão e manteiga, onde as pessoas não acham que precisam desse tipo de administração do sistema. Muitos lugares gastam muito dinheiro em grandes conjuntos de ferramentas administrativas e, até onde eu sei, 95% do que eles usam as ferramentas poderiam ter sido feitos com algumas horas de script se alguém soubesse disso ou soubesse como faça.

damorg
fonte
0

Descobri que o conhecimento dos scripts bash, dos batch e powershell fornece ao administrador do sistema a estrutura para fazer praticamente qualquer coisa, em qualquer sistema popular.

Bip Bip
fonte