guia de sobrevivÊncia na...

18
O que você precisa saber para começar a se aventurar Guilherme Baptista NA NUVEM E-BOOK GUIA DE SOBREVIVÊNCIA

Upload: phungtuyen

Post on 16-Mar-2018

219 views

Category:

Documents


3 download

TRANSCRIPT

O que você precisa saber para começar a se aventurar

Guilherme Baptista

NA NUVEM

E-BOOK

GUIA DE SOBREVIVÊNCIA

Introdução

Utilizar um Computador em Casa

Hospedagem Compartilhada

Servidor Dedicado

Cloud Computing

Como Funciona Tecnicamente

Qual a Grande Vantagem desta Tecnologia

Começando na Nuvem

Como Funciona a Internet

Como Funciona um Servidor

Conclusão

Índice

01

02

03

05

07

07

10

11

12

13

15

Olá,

Como desenvolvedor, você sabe que, durante muito tempo, existiam basicamente 2 opções para colocar o seu site na internet:

Introdução01

Quais são as opções comuns para ter um site na internet?

Todas essas 3 opções podem resolver o problema de ter um site na internet, afinal de contas, passamos anos e anos nos virando com elas. Mas, todas elas possuem os seus pontos negativos.

Vamos conhecer melhor cada uma delas.

• Contratar a famosa “Hospedagem Compartilhada” ou • Contratar um Servidor Dedicado.

Para quem é mais underground, outra opção era utilizar o próprio computador de casa e a sua conexão de internet para oferecer o seu site ao mundo.

Com a sua Infraestrutura caseira você precisará cuidar de absolutamente tudo. E se o seu computador queimar? E se a energia cair? E se a sua conexão de internet ficar lenta ou precisar ser reiniciada perdendo o seu endereço previamente configurado?

Existem muitas coisas que podem acontecer e prejudicar o seu site e, além disso, você não terá toda a estrutura que comumente uma empresa possui (conexão de altíssima velocidade, confiável, com endereços fixos, redundância, equipe técnica responsável pelos equipamentos etc.).

Se você já possui um computador em casa e paga por uma conexão de internet, em teoria você tem tudo que precisa para oferecer um site ao mundo. As vantagens são o provável baixo custo e o controle total de tudo.

As desvantagens?

Utilizar um Computador em Casa

02

AS VANTAGENS SÃO O PROVÁVEL BAIXO CUSTO E O CONTROLE TOTAL DE TUDO.

COM A SUA INFRAESTRUTURA CASEIRA VOCÊ PRECISARÁ CUIDAR

DE ABSOLUTAMENTE TUDO - ESTRUTURA, MANUTENÇÃO, ETC.

RESUMINDO, É LEGAL ALGUMA VEZ NA VIDA VOCÊ TENTAR FAZER ISSO EM CASA SE VOCÊ GOSTA DE ENTENDER COMO AS COISAS FUNCIONAM E ESTUDAR SOBRE INTERNET E SERVIDORES. MAS NA PRÁTICA, NÃO CONSIDERO UMA OPÇÃO VIÁVEL PARA TER UM SITE NA INTERNET.

Provavelmente o método mais comum e difundido para ter um site na internet ao longo da história. Você tem a vantagem de ter tudo prontinho para apenas publicar o seu site. Você contrata, sobe os arquivos, aponta seu domínio e pronto.

Outra vantagem é o baixo custo. Em hospedagens compartilhadas, empresas montam uma infraestrutura de diversos servidores, e para cada um deles destina um número X de sites. Ou seja, ao contratar uma hospedagem compartilhada, você ganha um pedacinho de um computador onde o seu site ficará. No mesmo computador, outros sites de outros clientes também estarão lá, tudo seguro e bem organizado para cada cliente ter acesso apenas ao seu site.

03

Hospedagem Compartilhada

Com vários clientes em um único servidor, você consegue dividir os custos de ter aquele servidor na empresa entre eles, tendo assim um baixo custo final para cada um.

Um cliente por exemplo pode consumir muito mais recursos de memória, processamento, etc. do servidor, atrapalhando o desempenho de todos os outros sites de clientes “vizinhos” dele.

As empresas trabalham constantemente para controlar melhor a situação e não deixar isso acontecer, mas na prática é algo a que você está sujeito.

O outro problema é a limitação. Hospedagens compartilhadas possuem uma configuração física pré-definida de recursos, memória, processador, armazenamento, banda, etc. e também softwares pré-definidos. Ou seja, você terá que escolher entre as linguagens de programação mais “comuns” oferecidas como provavelmente ASP.NET ou PHP, algum banco de dados como MSSQL, MySQL ou PostgreSQL e o seu web server será o utilizado pela hospedagem no geral, como o Apache por exemplo.

As desvantagens?

> TUDO PRONTO PARA PUBLICAR O SEU SITE

> BAIXO CUSTO

> RISCO DE OUTROS CLIENTES CONSUMIREM MAIS RECURSOS E

ATRAPALHAR O DESEMPENHODO SEU SITE

> LIMITAÇÃO DE RECURSOS

04

Quer configurar um novo componente do PHP? Precisa ver se a hospedagem suporta isso. Quer fazer o projeto em Python, Java, Ruby? Pode ser que as hospedagens mais comuns não possuam suporte. Quer realizar uma configuração avançada do banco de dados MySQL que você acredita que irá melhorar o desempenho do seu site? Provavelmente você não poderá fazer essa configuração avançada. E por aí vai, você acaba ficando limitado tecnologicamente.

E se meu site começar a receber milhões de acessos da noite para o dia? Sua hospedagem pode não aguentar o tranco. E se o site de outro cliente atrapalhar o desempenho do meu? Paciência e muita conversa com o suporte técnico para resolver a situação…

Mas se o seu caso não é esse…

SE O SEU PROJETO É SIMPLES, OU É SE COMPLEXO, PORÉM UTILIZANDO LINGUAGENS E BANCOS “COMUNS” E NÃO TERÁ COM CERTEZA UMA IMENSIDÃO DE ACESSOS, PODE IR DE HOSPEDAGEM COMPARTILHADA SEM MEDO.

É ÓTIMO PARA COMEÇAR E VOCÊ NÃO GASTA DINHEIRO SEM NECESSIDADE. ;)

Mas, apesar das limitações e possíveis problemas aos quais você pode ficar exposto, é uma opção muito comum por atender a maioria dos sites e funcionar bem por um baixo custo.

Quer subir um blog com Wordpress que não terá muitos acessos? Isso é basicamente PHP e MySQL, vai funcionar bem na grande maioria das hospedagens compartilhadas e você vai pagar pouco por isso, vale a pena.

Subir seu portfólio pessoal em HTML/CSS? Hospedagem compartilhada resolve.

05

Servidor Dedicado

Contratar um servidor dedicado possui muitas vantagens. Primeiro, como o próprio nome já diz, ele é “dedicado”, ou seja, é para você, não tem outros clientes no mesmo computador disputando recursos.

Você escolhe exatamente os recursos que deseja: “Quero um processador de 2 núcleos, 200 GB de HD e 4 GB de memória. Além disso quero conseguir transferir 1 GB de dados por mês pelo meu site.”

Perfeito, é exatamente isso que você vai ter à sua disposição.

Além dos recursos só para você, existe a vantagem do controle tecnológico total. O servidor é “seu”, logo você o configura como desejar.

Quer utilizar o banco de dados Cassandra criado e utilizado pelo Facebook em seu projeto? Você pode. Quer programar em Ruby? PHP? Python? Haskell? Você pode. Prefere usar o mesmo web server utilizado pelo GitHub, o Unicorn, ao invés do Apache tão comum nas hospedagens compartilhadas? Está liberado. Quer alterar uma configuração avançada do IIS para algo em seu projeto ASP.NET? É só ir lá e fazer.

> LIBERDADE TECNOLÓGICA

> SEM OUTROS CLIENTES DISPUTANDO RECURSOS COM VOCÊ

1 GB

GitHubRuby

ASP.NET

VOCÊ TEM TOTAL LIBERDADE TECNOLÓGICA NO SEU PROJETO PARA USAR O QUE QUISER.

É COMO TER O SERVIDOR NA SUA CASA, COM A VANTAGEM DE TODA A ESTRUTURA, SUPORTE E CONFIANÇA DE UMA EMPRESA.

Pode existir também um desperdício de recursos. O seu site por algum motivo pode ter 1 milhão de acessos em toda sexta-feira, mas nos demais dias da semana possui menos de 500 acessos.

Ou seja, você precisa contratar um servidor que aguente 1 milhão de acessos por dia, mas na grande maioria do tempo menos de 20% dos recursos estão sendo utilizados e por conta de apenas um dia na semana, você precisa pagar por tudo isso o mês inteiro.

Você pode também criar um projeto, e imaginar que vai ter 1 milhão de acessos, contratar um Servidor Dedicado para suportar isso e quando lançar o site, ter uma quantidade muito pequena de acessos. Ou seja, você irá pagar por algo que não está sendo de fato utilizado.

Comparado à Hospedagem Compartilhada onde era só subir os arquivos, você precisará ter um conhecimento técnico considerável em infraestrutura de servidores para cuidar de tudo sozinho, pagar para a empresa por isso ou contratar profissionais qualificados para tal função.

O custo pode ser bem alto se comparado à uma Hospedagem Compartilhada, já que não existem outros clientes no mesmo servidor para “rachar a conta”.

Além disso, se você tiver uma quantidade maior que o prevista de acessos, o servidor pode não aguentar e você precisará contratar mais recursos e ter todo o trabalho de migrar o seu site para um servidor mais potente (aqui você possui o mesmo problema que teria em uma Hospedagem Compartilhada).

06

As desvantagens?

> NECESSIDADE DE CONHECIMENTO TÉCNICO CONSIDERÁVEL

> MAIOR CUSTO

> RISCO DE DESPERDÍCIO/FALTADE RECURSOS

07

Como Funciona Tecnicamente

Cloud Computing

Hospedagens Compartilhadas possuem baixo custo, porém são limitadas em recursos e opções tecnológicas.

Servidores Dedicados oferecem liberdade tecnológica e a possibilidade de recursos exclusivos, porém são caros e você continua com o problema de pagar por algo que não necessariamente é o que você precisa 100% do tempo.

Ou seja, se você hipoteticamente está resolvendo uma conta matemática muito grande e precisa de 4 GB de memória RAM para isso, você vai precisar de um computador com 4 GB de RAM para executar a tarefa, simples.

Porém, no conceito de Grid Computing você agora tem a opção de utilizar 8 computadores com 500 MB de RAM cada. Você pega esta tarefa, “divide” ela em 8 pedaços, cada pedaço vai para um computador e pronto, o problema será resolvido da mesma forma que em único computador com todos os 4 GB de RAM.

No final dos anos 90 surgiu um modelo computacional chamado Grid Computing. Podemos traduzir a ideia dele como basicamente utilizar diversos computadores para resolver um grande problema.

COM ESSES PROBLEMAS EM MENTE, A COMPUTAÇÃO EM NUVEM VEM PARA NOS AJUDAR A RESOLVÊ-LOS.

Se quisermos entender a fundo como funciona de verdade o conceito, precisaríamos de um livro todo sobre o assunto, então estou explicando de forma muito superficial com exemplos bem “bobos” que na prática não refletem como realmente a coisa funciona, mas dá para pensar que é mais ou menos por aí a ideia.

Como é uma Máquina Virtual, significa que você consegue criar mais de uma em uma mesma máquina real. Em um computador com 8 GB de memória RAM, você poderia tranquilamente criar 3 Máquinas Virtuais de 1 GB de RAM cada, totalizando 3 GB de RAM, menos do que todos os recursos da máquina real.

Ou seja, dentro de um computador físico, você consegue criar quantos Máquinas Virtuais quiser, contanto que elas não ultrapassem os limites de recursos do computador real.

E diferente de um computador real, se você criou uma Máquina Virtual de 1 GB, dependendo da tecnologia utilizada, você não precisa desligar, abrir o computador e trocar as memórias físicas para ter mais GB’s de memória RAM. Você pode apenas “redimensionar” a Máquina Virtual para ela ter 1 GB de RAM a mais e pronto.

08

Aí você pode pensar: “Está, mas como eu divido o meu problema em 8 pedaços para utilizar 8 computadores?” Na prática não precisamos se preocupar com isso, esta questão já está resolvida: Vamos entender o conceito de Máquina Virtual.

Se você consegue aumentar ou diminuir uma máquina com facilidade, a sua única limitação é a capacidade real do computador físico onde estão as Máquinas Virtuais.

Como lidar com esta limitação física então? Lembra do Grid Computing? Utilizar vários computadores reais para resolver um grande problema?

A partir de agora nós podemos por exemplo, “conectar” 3 computadores de forma que eles sejam vistos como um grande supercomputador imaginário e ir criando Máquinas Virtuais dentro deste supercomputador imaginário formado de diversos computadores reais.

Aí nasce a ideia da elasticidade. Você pode aumentar ou diminuir uma Máquina Virtual tranquilamente, alterando os seus recursos de memória RAM, processador e disco rígido.

UMA MÁQUINA VIRTUAL É UM COMPUTADOR “SIMULADO” QUE VOCÊ PODE CRIAR DENTRO DE UM COMPUTADOR REAL. E ELA FUNCIONA PERFEITAMENTE COMO UM COMPUTADOR REAL.

09

Com essa nova arquitetura, as empresas conseguem então oferecer um “Servidor Dedicado” exclusivo para o cliente sem necessariamente precisar ligar um computador físico real para ele.

O cliente quer um novo servidor? Vamos lá no nosso supercomputador imaginário criar uma nova Máquina Virtual para o cliente então, simples.

Acabaram-se os recursos físicos deste “supercomputador imaginário” para aumentar ou criar mais Máquinas Virtuais? Simples, conecte outro computador físico nessa rede de computadores e agora o seu supercomputador imaginário tem mais recursos. Se o seu supercomputador imaginário tem mais recursos, consequentemente as Máquinas Virtuais terão também. Ilustrando, seria algo assim:

1 CPU1 GB

de RAM

4 GBde RAM 4 CPUs

40 GBde HD

SUPER COMPUTADOR IMAGINÁRIO

40 GBde HD 1 CPU

1 GBde RAM

40 GBde HD 1 CPU

1 GBde RAM

40 GBde HD 1 CPU

1 GBde RAM

40 GBde HD

MÁQUINASVIRTUAIS

0,25CPU

200 MBde RAM

2 GBde HD 2 CPUs600 MB

de RAM30 GBde HD 1 CPU150 MB

de RAM5 GB

de HD

10

É “fácil” para a empresa aumentar seus recursos, basta ligar um novo computador físico aumentando a capacidade do supercomputador imaginário sem precisar desligar e reconfigurar tudo.

Qual a Grande Vantagem desta Tecnologia

Lembra do caso do site que tem milhões de acessos só na sexta-feira? Agora ele consegue deixar o seu servidor pequeno durante a semana e aumentar a capacidade dele apenas na sexta-feira, pagando desta forma somente pelo que realmente está utilizando.

Precisa de um servidor com liberdade tecnológica para utilizar o que quiser, mas seu projeto está no começo e não sabe quantos acessos realmente vai ter? Você não precisa contratar um computador físico pré-definido com custo elevado. Contrate uma Máquina Virtual que te dê a liberdade de trabalhar com o que quiser, porém com recursos muito pequenos, tendo assim um baixo custo. Se o projeto crescer e precisar de mais recursos, sua máquina é elástica, basta aumentá-la no futuro, gastando dinheiro apenas quando realmente precisar.

O CLIENTE GANHA A PARTIR DE AGORA ELASTICIDADE, OU SEJA, ELE CONSEGUE AUMENTAR OU DIMINUIR A CAPACIDADE DO SEU SERVIDOR DE FORMA SIMPLES.

11

Se você já trabalhou em projetos com Servidores Dedicados, provavelmente já possui um conhecimento técnico sobre como configurar um servidor sozinho.

Se está acostumado com Hospedagens Compartilhadas e não tem a mínima ideia de por onde começar, você possui 2 opções.

• A primeira é encontrar serviços que ofereçam a possibilidade de facilitar o processo de configuração do servidor.

Muitas empresas o oferecem e ele basicamente parte da ideia de oferecer todas as vantagens da computação em nuvem como pagar apenas pelo que usar, ter elasticidade na sua máquina, etc. com a facilidade que você teria em uma hospedagem compartilhada de “apenas suba seus arquivos e pronto!”.

Você provavelmente pagará um pouco mais caro por isso, porém pode valer a pena se você não quer investir tempo para configurar tudo do zero, não sabe como fazer isto ou não pretende contratar profissionais para isto.

• A segunda opção, é aprender a configurar um servidor e se virar.

Existem infinitos tutoriais e artigos na internet ensinando a configurar o servidor XYZ, mas antes disto tem um ponto onde todo mundo peca: Não entender o “básico” do funcionamento da internet e de servidores. Ao entender isso, vai ficar muito mais fácil buscar informações e se virar sozinho.

Começando na Nuvem

12

Quando o usuário acessa um site no seu navegador (www.sitetal.com.br), ele percorre um caminho para entregar o conteúdo daquele site. Resumindo, podemos dizer que este caminho é:

O computador do usuário “resolve o domínio” digitado. Ele vai sair da casa do usuário e passar pelo Provedor de Internet que por sua vez irá consultar servidores de DNS para descobrir onde ele deve procurar aquele site.

Como Funciona a Internet

Além deles, existem inúmeras réplicas espalhadas ao redor do mundo (inclusive no Brasil) para oferecer segurança e redundância.

Então, basicamente o que acontece é:

Uma Curiosidade: EXISTEM 13 SERVIDORES DE DNS RAIZ NO MUNDO

RESPONSÁVEIS POR TODOS OS ENDEREÇOS NA INTERNET.

COMPUTADOR DO USUÁRIO:Quero acessar o site

“www.sitetal.com.br”

PROVEDOR DE INTERNET:Onde está o site

“www.sitetal.com.br”?

CONSULTA AOS SERVIDORES DE DNS:

Está no lugar X

Após consultar os Servidores de DNS, o computador saberá onde procurar o site.

Por exemplo, algum dos Servidores de DNS pode responder: “o www.sitetal.com.br está na Locaweb!“. Então, o próximo passo é ir na Locaweb e perguntar: “Locaweb onde está o www.sitetal.com.br aí dentro? ”. A Locaweb irá localizar o site e responder: “Este site está no servidor tal, você pode acessá-lo através deste endereço de IP“.

E pronto, com o endereço de IP do site descoberto, uma requisição será enviada para este endereço e o servidor irá devolver o conteúdo do site.

Esta é a parte que você provavelmente não precisa se preocupar muito, uma vez bem configurado o seu domínio, DNS, etc. o que você precisa agora é saber como o seu servidor vai receber essa requisição e devolver o conteúdo.

É aí que precisamos conhecer o funcionamento de um servidor.

DNS

13

Para configurar um servidor, algumas camadas importantes precisam existir.

Como Funciona um Servidor

Um ponto interessante é que você poderia utilizar diretamente estes Web Servers sem Nginx, Apache, etc. por cima.

Não fazemos isso pois as vantagens de se ter um Nginx por exemplo como camada superior são: Você serve arquivos estáticos do projeto sem precisar chamar o Web Server que vai consumir mais recursos da máquina para entregar o mesmo tipo de arquivo. Você tem melhores opções para controle de cache, redirecionamento de URL’s, balanceamento de carga, etc. entre infinitas outras vantagens.

Se você deseja oferecer conteúdo dinâmico (ou seja, seu projeto trabalha com alguma linguagem de programação como Ruby, PHP, ASP.NET, etc.) você vai precisar de um Web Server. Um Web Server é responsável por “pegar” o código fonte e “processá-lo” para entregar ao usuário. Aí a gama de opções aumenta, pois vai depender da sua linguagem de programação.

No caso de ASP.NET, o próprio Microsoft IIS exerce este papel. Para PHP você pode utilizar FPM, FASTCGI… com Ruby você possui Puma, Unicorn, Passenger... pra Java temos o Tomcat, Jetty, GlassFish… pra Python o WSGI… e por aí vai.

A primeira coisa que precisamos é de um Servidor de Rede do tipo Reverse Proxy. Este servidor é responsável por receber todas as requisições externas e decidir o que fazer com elas. Se o seu servidor vai apenas fornecer conteúdo estático, como HTML, CSS, JavaScript, imagens, etc., este servidor Reverse Proxy é tudo o que você precisa.

As opções mais comuns são: Nginx, Apache e Microsoft IIS.

WEB SERVER

REVERSE PROXY

PROXY

WEBSERVER

14

Este é o básico de um servidor, podem existir mais camadas como Firewall, Load Balancing entre outros recursos, mas aí depende muito dos seus objetivos, do seu projeto, da empresa de Hosting, etc.

Algo bem comum é utilizar Load Balancing, que basicamente seria ter duas ou mais máquinas com o mesmo conteúdo, e uma camada na frente delas dividindo as requisições que chegam.

Para fazer isso, você pode ter uma máquina com algum servidor Servidor de Rede do tipo Reverse Proxy que possui recursos para distribuir as requisições ou utilizar alguma opção oferecida pela empresa de Hosting, o que é bem comum também.

Tal estratégia é utilizada para dividir a carga entre várias máquinas horizontalmente, ou seja, ao invés de precisar aumentar os recursos de uma máquina, você adiciona uma nova máquina para dividir as requisições que estão chegando.

Por conta disto, é comum optarmos por esta arquitetura. Para ilustrar, seria basicamente assim:

REVERSE PROXY

WEB SERVER

Nginx Apache Microsoft IIS

FPM FASTCGI Puma Unicorn

Passenger Tomcat Jetty GlassFish

WSGI Microsoft IIS

REQUEST REQUEST REQUEST

HTML

CSS

Imagens

Javascript

.php

.rb

.jsp

.asp

.aspx

.py

15

ConclusãoA computação em nuvem proporcionou uma grande evolução que trouxe incríveis possibilidades. Nunca foi tão fácil e barato ter um servidor na internet onde você consegue liberdade para utilizar a tecnologia que quiser a um custo acessível. Conseguir mudar rápido é uma característica vital para projetos de internet tanto em grandes empresas como em startups.

Chegamos ao ponto em que conseguir milhões de usuários da noite para o dia, não precisa ser um pesadelo fadado ao fracasso, a computação em nuvem oferece elasticidade para lidarmos com as incertezas do futuro.

VOCÊ NÃO PRECISA MAIS COMPRAR SERVIDORES DE CUSTOS ALTÍSSIMOS PARA

UM SITE QUE SÓ RECEBE UMA DEMANDA EXTREMA

DE ACESSOS DURANTE A BLACK FRIDAY.

As empresas de Hosting oferecem cada vez mais recursos em cima da

computação em nuvem onde tanto os usuários avançados que querem fazer

tudo “na mão” quanto os que preferem apenas publicar de forma fácil o seu

projeto conseguem usufruir das vantagens de pagar apenas pelo que

realmente precisa e ter sempre à disposição uma possibilidade de

mudança de recursos simples e rápida.

SE A COMPUTAÇÃO EM NUVEM É ALGO NOVO PARA VOCÊ ENTÃO, PODE ENTRAR SEM MEDO. AFINAL DE CONTAS, É FÁCIL E BARATO COMEÇAR A TESTAR E EXPLORAR

TODOS OS RECURSOS E POSSIBILIDADES, BASTA SE AVENTURAR!

16

Nosso propósito é fazer negócios nascerem e prosperarem por meio da tecnologia

Desde a nossa fundação, em 1998, temos crescido com maturidade e hoje contamos com uma moderna e segura infraestrutura, um time de mais de 1.000 funcionários e muitos parceiros alinhados

com nossos objetivos. Oferecemos um portfólio completo de serviços de internet e atendimento especializado com foco no sucesso dos nossos clientes.

Empreendedorismo e paixão por tecnologia

BLOG