O que eu preciso saber sobre servidores em uma função de desenvolvimento da Web? [fechadas]


12

Eu sei que isso pode parecer um pouco vago, então vou tentar explicar um pouco mais ...

Depois de ser desenvolvedor por conta própria por muitos anos, agora estou em busca de uma função comercial de desenvolvedor web. Minha única experiência com servidores e hospedagem é fazer upload através de FTP e brincar um pouco com o CPanel / WHM. As funções que eu estou procurando são funções de desenvolvimento PHP, MySQL, HTML, CSS, mas em entrevistas recentes me perguntaram sobre a configuração de coisas no servidor, que eu não tinha ideia do que estava sendo dito ... o que não era o ideal!

Sem saber mais do que sei, é difícil explicar exatamente o que estou procurando aprender, mas são basicamente os elementos do servidor que eu deveria conhecer como desenvolvedor da Web? Se você é desenvolvedor da Web, tem alguma relação com o servidor além de enviar arquivos e, em caso afirmativo, o que? São coisas como o Subversion (SVN) e os sistemas de controle de versão frequentemente configurados pela equipe de desenvolvimento da web, seria sobre isso que eles estavam falando?



3
Acho que este é mais específico sobre servidores embora :)
Michael Durrant

2
Odeio dizer isso a você, mas se você não pode configurar um servidor da Web, não é um desenvolvedor da Web muito valioso e não é algo que possa aprender rapidamente em um livro. Em vez de fazer um trabalho duro no aprendizado de componentes de servidor de um livro. É melhor aperfeiçoar suas habilidades em PHP e se inscrever como programador em PHP.
Reactgular

@MathewFoscarini porque não sou bom nisso, devo evitá-lo e aperfeiçoar apenas o que sei? Esse conselho não faria o mundo parar? not a very valuable web developeré o que estou tentando superar, por isso estou feliz em aprender sobre isso corretamente, só não sei qual a melhor maneira de realizar esse aprendizado e em quais áreas focar primeiro.
Joao18

@ john Você perguntou no contexto de ser contratado como desenvolvedor web. Algo para o qual você não está qualificado. Se é assim que você deseja ser contratado, faça o possível, mas não espere uma solução de curto prazo para responder a perguntas em uma entrevista. Eu esperava que o empregador estivesse tentando eliminar candidatos que não têm experiência prática em trabalhar em servidores. Minha impressão da sua pergunta foi que você está tentando conseguir um emprego fazendo o que não poderia fazer como freelancer. Você pode tentar encontrar um cliente disposto a pagar enquanto aprende essas habilidades no servidor.
Reactgular

Respostas:


10

Esse é um grande conjunto de perguntas, mas suspeito que muitas pessoas precisam abordar, principalmente quando começam a avançar em uma carreira que começou com um foco pesado no front-end.

Você menciona que está assumindo uma função que inclui desenvolvimento PHP e MySQL. São coisas que precisam ser executadas no servidor. Ser capaz de fazer bons julgamentos técnicos como desenvolvedor exige que você entenda como essas coisas funcionam no servidor e como elas interagem com o front-end da web. Portanto, você claramente precisa desenvolver um entendimento do servidor.

Em vez de tentar descobrir de antemão o corpo exato de conhecimento que você pode precisar sobre o servidor, eu recomendaria mergulhar e criar algo que inclua a instalação de todo o software do servidor. Uma ótima maneira de se molhar é instalar o Linux no seu computador. Você pode usar algo como o VirtualBox para permitir que ele seja executado ao lado do seu sistema operacional atual. Instale o MySQL, instale e configure o servidor para PHP e tente fazer tudo funcionar em conjunto. O bom é que, atualmente, um laptop moderadamente bem equipado pode executar tudo isso e ser o "servidor".Isso pode ser difícil no começo, principalmente se você não tiver experiência com o Linux e a linha de comando. Como desenvolvedor, você deve pelo menos saber o suficiente para conseguir fazer esse exercício e isso lhe dará um impulso para descobrir como aprimorar seu conhecimento.

Existem três áreas em que você provavelmente precisará se atualizar:

  1. O básico do sistema operacional Linux. Talvez comece com uma distribuição fácil de instalar como o Ubuntu.
  2. Configurando um servidor web e PHP. A instalação do Apache é um bom lugar para começar. Existem outras alternativas, mas é aqui que a maioria das pessoas começa.
  3. Aprendendo o básico da instalação e execução do MySQL. No mínimo, como desenvolvedor, você provavelmente precisará escrever DDL para criar tabelas e outras estruturas no banco de dados e, definitivamente, precisará consultar o banco de dados no servidor para explorar os dados e garantir o que deseja. o aplicativo está cuspindo corresponde ao que está no banco de dados.

Se você fosse usar o Ubuntu, poderia seguir as instruções básicas aqui para começar a funcionar. Observe que você precisará acelerar bastante o básico do Linux antes de começar a instalar e jogar com os servidores da Web / componentes do banco de dados.

Em termos de como os desenvolvedores precisam interagir com o servidor, além do upload de arquivos, acho que isso varia muito de organização para organização.

  1. Os desenvolvedores costumam lidar com a administração de pelo menos o ambiente de desenvolvimento. Às vezes, são os desenvolvedores que estão configurando o sistema de controle de revisão (por exemplo, SVN) e o processo de implantação (movendo o código pelos ambientes).
  2. Para o seu ponto, pelo menos os desenvolvedores precisarão usar o sistema de controle de revisão que vive no servidor.
  3. Você também precisará fazer coisas como examinar os logs em um servidor para ver quais mensagens estão sendo geradas para ajudar a diagnosticar e resolver problemas.
  4. Pode ser necessário trabalhar com uma equipe de infraestrutura para determinar coisas como a configuração de rede ou a configuração de armazenamento do servidor. Geralmente, os problemas de aplicativos são uma combinação da configuração e do código.

O ponto é que não existe uma resposta única para exatamente como você precisará tocar no servidor, mas no decorrer de sua carreira, certamente irá além de apenas enviar arquivos por meio de FTP. Começar aprendendo o básico agora ajudará.


Ótima resposta, obrigado! Então, quando estou configurando o 'Mamp' para o trabalho local, é o mesmo, mas sem acesso ao mundo exterior? Instalei alguns sistemas operacionais Linux e conheço algumas coisas sobre a linha de comando, mas nada me lembraria facilmente. Meu conhecimento de servidores é inexistente, mas sempre penso neles como sendo acessados ​​apenas pela linha de comando, e não como um sistema operacional amigável, é esse o caso?
18713 John

2
É melhor se sentir confortável usando a linha de comando. A maioria dos servidores Web 'reais' com os quais você lidará serão máquinas remotas e não terão GUIs instaladas.
precisa

2
Como o @GrandmasterB escreveu, é útil entrar em contato com a linha de comando. Na minha opinião, o Linux é uma boa plataforma de aprendizado porque obriga você a ficar "próximo do metal" para aprender sobre o que o sistema operacional está fazendo além do que você vê na tela. Veja o arquivo httpd.conf, entenda o que o servidor da Web está realmente fazendo e como o módulo PHP se integra a ele. Obtenha um entendimento básico da plataforma e ela o tornará um desenvolvedor melhor.
DemetriKots

Mudei do Linux para servidores Windows há alguns anos e nunca olhei para trás. O Linux é excelente e poderoso, mas você precisa seguir as ferramentas que melhor atendem aos requisitos do trabalho.
Reactgular

2

Meu primeiro conselho é não se limitar exclusivamente a qualquer função. É ótimo ser especialista e ter um conhecimento profundo de um conjunto de habilidades específico (PHP, por exemplo). No entanto, é igualmente importante ter um amplo conhecimento que se estende pelo resto do seu domínio.

Na minha experiência, a maioria das equipes não procura contratar alguém que possua o conhecimento necessário para reescrever a funcionalidade principal do PHP, mas alguém que possa lidar com qualquer problema que lhes seja causado (apesar de ter esse nível de conhecimento certamente não prejudicaria). Ou pelo menos alguém que possa ajudar a resolver quaisquer problemas que a equipe encontre. Por exemplo, imagine uma situação em que seu aplicativo seja desativado e os clientes estejam sendo afetados. Você pode levantar as mãos e dizer "Não tenho idéia do que fazer ..." ou pode fazer o SSH no servidor, iniciar a verificação de logs, observe que o espaço em disco de um sistema de arquivos específico está cheio e prossiga para limpá-lo. Este é um exemplo menor, mas acho que o ponto é claro. Com esse conhecimento básico, como desenvolvedor, você pode escrever um script que monitore esse sistema de arquivos específico e o limpe assim que atingir um determinado limite. Agora você se tornou muito mais valioso para o seu gerente.

Outra coisa que aprendi durante a minha carreira é que as coisas acontecem rapidamente e, se você não acompanhar, será deixado para trás. Quanto mais você souber sobre todo o seu ambiente (incluindo os aspectos comerciais), melhor estará. Isso não quer dizer que você precise ser especialista em tudo o que faz, mas pelo menos tenha o conhecimento para não ser rotulado como sem noção. Quanto mais familiar você estiver, mais adaptável será e mais valioso será um ativo para sua empresa.

Para responder especificamente às suas perguntas ...

  • Quais elementos do servidor devo conhecer como desenvolvedor?

Familiarize-se com toda a pilha de aplicativos. Saiba qual servidor web, banco de dados, mecanismos de cache etc. estão sendo usados. E quais versões também. Tenha familiaridade suficiente para recriar o ambiente em seu próprio servidor. O que, por si só, é de vital importância. Você deve se esforçar para ter mais ou menos os mesmos ambientes de desenvolvimento e produção, pois isso reduz surpresas ( http://12factor.net/dev-prod-parity ).

  • Como desenvolvedor, que transações você tem com o servidor?

Isso realmente depende da equipe. No meu caso particular, os desenvolvedores desempenham um papel enorme na organização dos ambientes. Estamos mais familiarizados com o funcionamento interno do aplicativo e, portanto, estamos na melhor posição para determinar quais tecnologias de servidor existem para executá-lo. Imagino que nem todas as equipes tenham essa abordagem prática, mas ter familiaridade suficiente para poder se envolver nas discussões é uma grande vantagem. Especificamente, no que diz respeito ao controle de versão, você como desenvolvedor é altamente afetado pela tecnologia escolhida (Git, Subversion, Mercurial etc.) e, portanto, deve se esforçar para se envolver no processo de decisão.

Então e agora?

Quanto à minha sugestão sobre a melhor forma de abordar a aprendizagem de tudo isso? Mova seus pés . Não se preocupe em tentar ler tudo o que puder sobre o assunto, a maioria provavelmente vazará do seu cérebro quando você terminar. Em vez disso, comece a desenvolver algo do zero. Comece com o Vagrant ; permitirá criar e gerenciar facilmente uma máquina virtual que você pode usar como seu novo playground. Em seguida, instale um servidor web e um banco de dados e comece a criar. Se você tem uma idéia para um aplicativo, perfeito, vá em frente ... se não, encontre um tutorial ou tente recriar um aplicativo existente. O ponto é apenas para se familiarizar com todo o processo. Além disso, como desenvolvedor PHP, não deixe de conferir o PHP: The Right Way... realmente contém muitas informações excelentes. E o mais importante, não se estresse. Eu imagino que você seguiu o caminho de um desenvolvedor, porque é algo que você gosta e é apaixonado ... não perca de vista!


1

Focando no que você precisa saber sobre servidores para ser um desenvolvedor web? ...

Na verdade, surpreendentemente pouco. Suas principais áreas de conhecimento devem ser programação, html, php, etc.

O que você precisa saber é como executar as coisas localmente e, quando fizer isso, estará usando sua caixa como um 'servidor'. Portanto, ao executar localmente, você usa um navegador da web para visualizar as páginas, assim como em qualquer site da Internet ... exceto que o seu será http://localhostouhttp://127.0.0.1

Quanto à configuração de cgi, http, etc. Não espero que você precise saber disso. Você sempre pode trabalhar em qualquer livro geral sobre a configuração de um servidor Web para o sistema operacional em que trabalha e isso seria cobertura suficiente para conhecer os termos gerais.

Para uma visão geral, eu recomendo entrar no Linux e aprender como instalar e configurar máquinas, como servidores da web. Mas somente se você realmente tiver interesse nas coisas. Não apenas para impressionar nas entrevistas.

Finalmente, eu recomendaria que você considerasse fazer anotações durante entrevistas sobre áreas que você não conhece o suficiente. Ajudaria se sua pergunta fosse mais específica sobre quais termos etc. você não sabia.


Obrigado. Eu gostaria de aprender de qualquer maneira, se o tempo permitir. Um livro do tipo 'linux para manequins' me ajudaria aqui. Em breve estarei mudando de host. O Amazon AWS está hospedando na nuvem algo que me beneficiaria com um pouco de trabalho ou é completamente diferente?
Joao18

1
Eu não usaria um livro de bonecos. Grande parte pode não ser relevante. Eu tentaria desnatação algo como servidores Administrar Web, por exemplo cengagebrain.com/shop/en/US/storefront/...
Michael Durrant

sim, execute o linux como sua máquina de desenvolvimento e configure um servidor web nele. Acostume-se a brincar com ele e configurá-lo. Você aprenderá o suficiente dessa maneira. Isso é basicamente como você aprende no trabalho. Metade das coisas está sob controle de administradores de sistema, o que pode ser bom para começar, mas à medida que você avança, você prefere receber mais controle da instalação.
Wobily_col #

0

Você precisa saber as coisas abaixo para concluir o ciclo de desenvolvimento da web.

1) IDE (Netbeans e Eclipse etc.)

2) Qualquer linguagem de programação para codificação. (PHP, Java, etc.)

3) Tecnologia frontal para criação de páginas (HTML, CSS etc.)

4) Banco de dados com suporte para armazenar e recuperar dados. (MySQL etc)

3) Sistema de controle de versão para verificar e recuperar seu repositório de formulários de código.

4) ferramenta de compilação para compilar seu código com arquivos dependentes. (Formiga, Maven)

6) Servidor da Web para implantar e executar seu código.

7) É necessário conhecer o processo básico de implantação nos servidores para executar e testar seu componente web e ejb. (Tomcat, servidor Web-Logic)


0

Além da resposta do DemetriKots, eu também adicionaria soluções para implantação automatizada e integração contínua. A configuração inicial do servidor é apenas uma etapa, e a implantação por FTP é dolorosa e propensa a erros, sem solução adequada para reverter implantações ruins.

  • Hudson - servidor de integração contínua
  • Phing - ferramenta de criação automatizada, especificamente para PHP, baseada em Ant
  • Ant - ferramenta de construção automatizada
  • Capistrano - crie scripts de implantação para automatizar e facilitar a implantação de seu aplicativo da web.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.