Monthly Archives: September 2014

O que é hospedagem e por que precisamos dela?

Quando um site e acessado, nada mais é do que estar acessando dados que estão localizados em outro computador. Para colocar um site no ar, então, não existe mistério: é só deixar seu computador ligado na Internet e outras pessoas conseguirão acessá-lo. Isso se chama localhost, ou seja, é uma hospedagem local, feita por você, mantida por você.

Mas, imagine os custos de se manter um computador ligado o tempo todo? E o risco de algum invasor entrar em seus sistemas? Afinal, você não é um expert em segurança da informação. A boa notícia é: você não precisa ser.

Em um mundo onde a terceirização é o único caminho para elevar as margens de lucro, você pode contratar um serviço de alguma empresa que será responsável por manter seu site no ar por 99% do tempo. Além disso, eles possuem especialistas pagos para cuidar da segurança da máquina que seu site está. Isso se chama hospedagem.

Hospedagem é como alugar um escritório. Você pode fazer por conta própria (localhost) no quintal de sua casa ou pode pagar para ter um lugar com encanamento e segurança prontos e aos cuidados de terceiros. Para um escritório significaria alugar um espaço através de uma imobiliária e para aplicações web ou sites isso quer dizer alugar um serviço que proporcionará um espaço seguro para manter sua aplicação web no ar.
Assim como em um escritório, seu site também tem um endereço físico, chamado IP. E assim como um escritório pode ser encontrado numa lista telefônica, o site é encontrado através de servidores espalhados pelo globo chamados de DNS.

Um servidor DNS funciona como um GPS, que encontra a posição e localização exata de um servidor. Você digita um site (www.academiadocodigo.com, por exemplo), o servidor DNS descobre a posição da máquina em que o site está armazenado e pronto, se o site estiver hospedado em um endereço que esteja disponível, você recebe a resposta e visualiza a página ou aplicação web.
Existem vários tipos de hospedagem:

  • Hospedagem Virtual: como computadores com configurações potentes são caros, fica mais barato dividir o mesmo computador com diferentes sites. Os recursos da máquina são compartilhados entre todos os sites hospedados, e os custos também. Existem alguns sites que disponibilizam hospedagem gratuita, com recursos mínimos e em troca colocam propagandas no seu site. Não existe almoço grátis, nem na internet.
  • Revenda: uma empresa de hospedagem maior libera grandes lotes de máquinas para serem revendidos por outras pessoas ou companhias. A maior parte das hospedagens que você encontra na internet no Brasil é desse tipo: uma empresa aluga uma máquina potente em um grande servidor de hospedagem, como o UOL Host, e revende os mesmos serviços, mas com outra embalagem.
  • Co-location: Se você tem uma máquina própria, toda configurada do jeito que você precisa, mas necessita apenas de energia elétrica, uma banda de ótima qualidade para acesso a Internet e local refrigerado e seguro, você pode alugar um espaço e deixar seu servidor aos cuidados de uma empresa especializada. No entanto, manutenção relacionada a segurança do servidor, trocas de peças, etc. são todas de responsabilidade do cliente.

Existem outros inúmeros termos para definir uma hospedagem.
Atualmente uma das palavras mais faladas pelos profissionais da área de TI e questionadas pelos executivos da área de negócio é “computação nas nuvens”. Para que ela exista, é necessária uma hospedagem nas nuvens. Mas isso fica pra um outro post. =)

Particularidades entre desenvolvedores e programadores

Antes de mais nada devo dizer que a opinião aqui descrita é pessoal, pois este é um assunto meramente subjetivo, que nada afeta a produção de código. Você deve apenas levá-la em consideração à medida que for criando sua própria opinião.

Programadores criam programas. Eles precisam ter uma boa base matemática, mas não precisam se tornar matemáticos. Programadores precisam conhecer as melhores soluções para os problemas. Um bom conhecimento de algoritmos e raciocínio lógico é essencial. Programadores têm habilidades que abrangem uma grande área da programação e de áreas correlatas. Habilidade de comunicação e interpessoal são desejáveis, mas não imprescindíveis. As grandes empresas que produzem software na maior parte procuram programadores, pois são eles que leem as especificações e resolvem o problema, mas não projetam as soluções. Em geral são especialistas em algumas tecnologias e acabam se tornando referência por seu conhecimento em determinado assunto. Seu trabalho começa e acaba com o código.

Desenvolvedores também criam programas. Conhecimento matemático profundo é opcional, mas ajuda em momentos que precisam criar soluções para os problemas que estão enfrentando. Habilidade interpessoal e de comunicação são necessárias. São generalistas, portanto não possuem conhecimento especializado em certas áreas, mas conhecimento abrangente em várias áreas. Tem noção dos diferentes métodos e tecnologias existentes e sabe qual aplicar para conseguir o que quer.

Eu tento ser um desenvolvedor. Diferentemente de programadores, o objetivo do desenvolvedor é criar algo completo, portanto você precisa conhecer os diversos componentes e como eles se ligam para criar o resultado esperado. Programadores buscam resolver um problema, criando algoritmo, programando. Desenvolvedores são responsáveis por uma sequência de tarefas, sendo programar apenas uma delas. Ele entende o problema, busca uma solução (e de preferência que já exista pronta) para somente então programar, testar e documentar. É um processo mais amplo, mais alto, que requer menos conhecimento matemático, pois seu objetivo é entender os componentes e fazê-los funcionar juntos, programando-os caso necessário, mas não sendo necessário criar ferramentas e código que exija colocar a mão na massa em um nível que seja necessário um conhecimento matemático mais profundo. Para o desenvolvedor, o processo de programar é uma parte de um todo, pois o que ele busca é criar um produto ou serviço final por completo. Assemelha-se muito mais a um engenheiro civil, enquanto um programador se assemelha a um mestre de obras (mas um engenheiro civil que coloca a mão na massa!).

Todos os desenvolvedores são programadores, mas nem todos os programadores são desenvolvedores.

O único caminho para criar programas é se tornar primeiro um programador, conhecer as ferramentas, a lógica de programação, criar algoritmos e resolver problemas específicos, para somente então, inevitavelmente e de forma natural, se tornar um desenvolvedor que além de programar precisará entender os requisitos e a solução, buscando obter produto ou serviço desenvolvido por completo em todos os ângulos.

Se você for novo na programação, recomendo que entenda o princípio do Programador vs. Desenvolvedor e a partir de hoje busque se tornar um bom desenvolvedor: que saiba programar, mas que saiba mais ainda unir todas as melhores tecnologias e métodos para conseguir o que você quer. Deixe o difícil e trabalhoso para os gênios, nosso objetivo é eliminar complexidades.