Cloud computing: tudo o que você precisa saber sobre o assunto!

O cloud computing já é uma tecnologia consolidada, utilizada pelos melhores projetos digitais, desde games que exigem poderosos servidores até e-commerces de atividade intensa. Contudo, os benefícios da nuvem não são apenas para os grandes negócios que estão na internet: ela também é uma ótima aliada dos desenvolvedores.

Por isso, preparamos este guia completo com tudo o que você precisa saber sobre o cloud computing, desde as motivações para adotar essa solução, passando por peculiaridades sobre o desenvolvimento e questões como a escalabilidade, a segurança e os custos. Boa leitura!

Por que investir em cloud computing?

Se você já tem o próprio negócio na área de desenvolvimento de sites e outros sistemas ou lida com diversos projetos como freelancer, existem algumas vantagens que a computação em nuvem pode oferecer. Elas variam conforme o plano contratado, mas de modo geral, se baseiam em recursos dedicados, escalabilidade e estabilidade, como listamos a seguir.

Recursos dedicados

A maioria dos serviços de hosting oferece a hospedagem compartilhada, em que o seu projeto vai dividir os mesmos recursos com sites de outros clientes instalados no mesmo servidor. Apesar de ser uma alternativa mais barata, ao atingir um nível de maturidade que exija mais performance, seu projeto demandará recursos dedicados, sendo melhor partir para uma solução de Cloud.  

Com o cloud computing os recursos são dedicados.Você terá direito aos recursos que contratou e melhor desempenho para a sua aplicação rodar com a agilidade esperada.

Escalabilidade

É possível aumentar ou diminuir os recursos conforme a sua necessidade.

Pode ser que o projeto no qual você esteja trabalhando lide com picos sazonais de usuários em datas comemorativas ou na Black Friday, por exemplo. Nesses casos, a escalabilidade dos servidores é capaz de se adaptar à demanda.

Assim, o serviço mantém o bom desempenho da aplicação, prevenindo instabilidades e a consequente frustração do usuário. Após o período sazonal, basta voltar aos recursos que o projeto utiliza normalmente.

Estabilidade

Atualmente, ter uma página que carregue rapidamente e não sofra com instabilidades já não é mais um diferencial. Essa é uma questão de necessidade frente aos concorrentes, que investem cada vez mais em infraestrutura, e de respeito aos usuários, que certamente ficarão frustrados se o site demorar alguns segundos para abrir.

Com a nuvem, sua aplicação terá uma velocidade estável e não ficará inacessível porque o vizinho está recebendo um pico de acessos. Você terá propriedades de rede estáveis e qualidade de conexão conforme contratado.

Como o cloud computing impacta na rotina de um desenvolvedor?

Antes de seguirmos, precisamos lembrar que existem tipos diferentes de cloud: o IaaS (Infrastructure as a Service) e o PaaS (Platform as a Service).

Quando o desenvolvedor lida com o IaaS, significa que terá a autonomia para configurar o ambiente do zero, escolhendo o sistema operacional, tendo a liberdade de usar as linguagens de programação de acordo com os requisitos do projeto, entre outros. Resumindo, ele será responsável pela configuração e administração do servidor antes de qualquer coisa.

Nesse caso, a empresa provedora do serviço fica responsável basicamente pelas rotinas de segurança do servidor, disponibilidade de rede e recursos contratados.

Já com o PaaS, o dev utiliza uma plataforma para pôr no ar as suas aplicações — basta escolher um ambiente e ele estará pronto para usar. Não é preciso se preocupar com a manutenção da infra e nem com configurações avançadas de segurança e do sistema operacional.

O PaaS conta com um painel, que apesar de não oferecer toda a liberdade do modelo IaaS, favorece a agilidade e a produtividade do desenvolvedor.

A preferência por IaaS ou PaaS vai depender da própria disposição do dev, das necessidades do projeto e de sua experiência. Trabalhar com Infrastructure as a Service requer um conhecimento avançado em computação e certa prática para configurar a aplicação diretamente da infra, sem auxílio de um painel. Dessa forma, para quem ainda não tem conhecimento técnico avançado, ou busca por mais praticidade, o Platform as a Service acaba sendo mais indicado.

Seja qual for a escolha, quando o dev contratar o serviço, terá uma (ou mais, se desejar) máquinas virtuais na nuvem com as configurações que selecionou. Ou seja, não haverá compartilhamento de recursos com outros clientes, já que uma das premissas do cloud, como já falamos, são os recursos dedicados. Essa exclusividade fará toda a diferença para o desempenho dos projetos.

Assim, ele terá mais tranquilidade para subir as aplicações e saber que elas estarão dentro de um ambiente confiável, em que a estabilidade e a possibilidade de escalar os recursos computacionais do sistema são aspectos presentes.

Como funciona o desenvolvimento de software na nuvem?

Um dos maiores desafios no desenvolvimento de software para a nuvem está na administração das dependências da aplicação. Como isso envolve a integração de diversos serviços em um único sistema, a dificuldade em programar aquela solução só ficará mais clara posteriormente.

Ou seja, isso vai muito além da escolha da linguagem de programação, envolvendo desde bases de dados até outros tipos de serviço que funcionam em um ecossistema distribuído. Nessas circunstâncias, o que temos é uma série de serviços conversando uns com os outros e uma dificuldade inicial de saber quais serão as reais demandas do sistema que você está construindo.

Outra diferença marcante está na fase de testes do software. Durante o ciclo de desenvolvimento, é comum fazermos testes localmente e verificarmos como ele se comporta. Contudo, é muito difícil tentar reproduzir, em uma máquina local, o ambiente de cloud em que será realizado o deploy.

Apesar desses aspectos aparentemente intimidadores, as ferramentas voltadas para facilitar o trabalho de devs que lidam com a nuvem estão cada vez mais práticas. No passado, fazer um deploy para um servidor cloud era uma tarefa dispendiosa, mas atualmente — com o devido conhecimento —, isso já não toma tanto tempo.

A escalabilidade é realmente importante para um desenvolvedor?

Imagine a seguinte situação: depois de meses de trabalho, você entrega o projeto do cliente do jeito que ele esperava. É um e-commerce simples, mas com excelente performance.

Após algumas semanas trabalhando na atração de audiência para a loja virtual, ele decide fazer uma promoção especial. A campanha é um sucesso e se espalha rapidamente pelas redes sociais.

O seu cliente se anima com as perspectivas de aumento das vendas, quando, de repente, os consumidores começam a fazer reclamações. Os acessos foram tantos que o servidor não conseguiu dar conta e ficou durante horas fora do ar.

O que deveria ser motivo de comemoração se reverteu para uma queda de vendas e migração do público para a concorrência.

Esperamos que você não passe por um cenário como esse, mas é importante saber que é algo que ainda acontece. Além disso, esse tipo de circunstância poderia ser facilmente evitado se o ambiente estivesse em um cloud, no qual é possível aumentar os recursos em momentos sazonais.

No caso acima, o servidor estava trabalhando com a capacidade necessária e linear, mas poderia ter escalado mais recursos para o período da promoção e, após isso, voltar à demanda contratada em dias comuns.

Quando colocamos uma aplicação no ar, trabalhamos com uma estimativa da demanda, que nem sempre estará próxima da realidade. Logo, por que não programar o servidor para reduzir os recursos se eles não estiverem sendo utilizados?

Mesmo que o server sem escalabilidade esteja funcionando com capacidade ociosa, você precisará arcar com esses custos.

Em resumo, não importa se o potencial da infraestrutura contratada está acima ou abaixo da demanda dos usuários, as consequências para o orçamento — e para a sua reputação e do seu cliente — podem ser bastante desagradáveis.

Portanto, o ideal é evitar dores de cabeça com emergências que exigem a sua intervenção imediata para reconfigurar o servidor. Garanta que o projeto mantenha as configurações exigidas o tempo inteiro, usufruindo da vantagem de pagar apenas pelos recursos necessários — quando forem necessários.

Como tecnologias de base colaborativa na nuvem ajudam os desenvolvedores?

Agora vamos falar sobre a natureza colaborativa do cloud computing. Aqui, nos referimos à ideia de colaboração como a possibilidade de diversos desenvolvedores trabalharem de forma simultânea em um mesmo servidor.

Como o acesso é remoto, eles podem atuar no desenvolvimento do mesmo software sem a necessidade de estar fisicamente no mesmo lugar. Podem estar no escritório, em casa, em um café etc., e ainda assim trabalhar de forma colaborativa para criar uma nova aplicação.

Isso é ótimo, inclusive, para a condução de testes. Como as pessoas podem avaliar as funcionalidades em conjunto, maiores serão as possibilidades de encontrar eventuais inconsistências no sistema, resultando em um processo mais confiável.

Como fica a questão da segurança no cloud computing?

Já falamos sobre o impacto do uso do cloud computing na rotina do desenvolvedor, vimos a importância da escalabilidade e entendemos o papel fundamental das tecnologias colaborativas nesse contexto, mas e quanto à segurança?

Sem dúvidas, essa é uma das maiores preocupações antes da contratação de um serviço de infraestrutura na nuvem. Ela se deve, em especial, à facilidade que temos em acessar remotamente as configurações do servidor e fazer alterações com poucos comandos ou cliques. Será que alguém mal-intencionado não poderia conseguir as credenciais e fazer o mesmo?

Antes de respondermos, devemos deixar claro qual é a diferença entre os tipos de nuvem.

Nuvem pública

É aquela em que o cliente contrata um serviço na nuvem (uma instância), sendo que nessa mesma nuvem haverá outros clientes — não vamos confundir com compartilhamento de recursos, são somente usuários que estão na mesma nuvem computacional, mas continuam com seu espaço delimitado de acordo com o plano contratado.

Nuvem privada

Requer um investimento maior porque a estrutura ficará em um datacenter custodiado, mas é voltada para quem precisa de um controle mais rígido da infra.

O cliente fica responsável pelos níveis de segurança das informações, administra melhor a escalabilidade e usufrui de uma latência que se aproxima do zero e será o único naquela nuvem computacional.

Nuvem híbrida

É uma combinação entre a nuvem pública e a privada. Nesse tipo de nuvem, é comum que os dados mais sensíveis permaneçam na nuvem privada, enquanto ativos sem essa particularidade ficam na nuvem pública.

Muito se confunde a nomenclatura de nuvem pública com o fato de ela ser acessível por qualquer um, mas devemos esclarecer que não é bem assim.

Não existe sistema 100% a prova de falhas, mas devemos sempre optar por aqueles que oferecem a melhor proteção possível. Um fornecedor de soluções na nuvem de boa qualidade contará com medidas de monitoramento de segurança que dificilmente serão inferiores àquelas que os desenvolvedores adotariam em uma infraestrutura própria.

De todo modo, um dos aspectos mais pertinentes quando se trata de segurança na nuvem é a encriptação de dados transmitidos pelas redes (daí a importância de um certificado SSL, por exemplo) e armazenados em bancos de dados.

Se um vazamento de informações tiver origem em um datacenter onde está o seu servidor na nuvem, as máquinas do local estarão todas comprometidas?

Esse é outro mito que ronda a imaginação das pessoas quando o assunto é cloud computing. É preciso ter em mente que o isolamento é um dos princípios básicos da nuvem. Além da proteção do datacenter como um todo, do ponto de vista lógico, os servidores cloud funcionam como se fossem cápsulas separadas.

É responsabilidade da empresa fornecedora de serviços em cloud oferecer segurança principalmente nas 3 frentes que listamos a seguir.

Segurança da informação

Diz respeito à disponibilidade do serviço e à garantia de que os dados armazenados não serão perdidos enquanto sua preservação for de responsabilidade da companhia de cloud.

Isolamento dos clientes

Corresponde à maneira como as empresas arquitetam o datacenter e os servidores, de modo que não seja possível um cliente acessar as informações do outro, mesmo que estejam na mesma nuvem.

Segurança jurídica

Se os servidores estiverem geograficamente instalados no Brasil, precisarão obedecer às leis que regem os contratos dos serviços de tecnologia da informação e hospedagem no nosso país.

Quanto custa investir na nuvem?

Tratamos das mais variadas características do cloud computing e vimos as vantagens mais pertinentes dessa solução, então chegou o momento de falarmos de custos. Como os planos e termos variam de fornecedor para fornecedor, vamos usar a Locaweb como base para você ter uma ideia dos valores.

O plano Cloud Hosting, voltado para quem não tem muito conhecimento técnico e para aqueles que querem dar os primeiros passos na nuvem, tem opções começando por R$ 179,90 por mês. O valor varia conforme as necessidades de aplicação web e banco de dados.

Já com o Cloud Server Pro você terá mais liberdade para customizar o seu ambiente, além de contar com a infraestrutura escalável que destacamos ao longo do texto.

O plano com sistema operacional Linux e 1GB de memória sai a partir de R$ 79 por mês — lembrando que é possível aumentar esses recursos, já que essa solução conta com infra escalável.

Soluções que combinam a autonomia de um servidor virtualizado com performance e melhor custo-benefício com infra no Brasil, como o VPS Locaweb, podem ser opções válidas. Para se ter uma noção, há planos de pagamento mensal a partir de R$ 17,90 por mês.

Vale destacar que a contratação de serviços nacionais tem a vantagem de não trazer surpresas sobre a oscilação dos custos mês a mês. Na Locaweb os planos são cobrados em reais, já com impostos inclusos, evitando preocupações com a variação constante da cotação do dólar.

Como encontrar o serviço ideal em cloud para seu negócio?

Agora que você já tem bastante conhecimento sobre o cloud, vamos listar as principais informações que será preciso reunir para decidir qual fornecedor escolher. Acompanhe!

Demanda da aplicação

Estude bem os requisitos do projeto. Converse bastante com os responsáveis do negócio para entender a fundo o potencial daquela ideia. Chegando juntos à conclusão sobre o número estimado de acessos simultâneos, as chances de essa demanda se aproximar da realidade serão bem maiores.

Pense também nas particularidades da aplicação. O que ela precisa para funcionar sem gargalos? Assim, você conseguirá decidir sobre a quantidade de processamento, a memória e o espaço em disco necessários.

Lembre-se que contratar recursos a mais ou a menos sem medidas de proteção poderá gerar efeitos indesejáveis.

Nível de conhecimento em cloud computing

Em seguida, você terá que decidir entre IaaS e PaaS. Para ajudar nessa escolha, faça uma avaliação sobre a sua experiência e a dos membros do seu time com computação em nuvem.

Um trabalho competente, ágil e à altura da liberdade do IaaS exige prática, então capacite-se antes de seguir por esse caminho. Se ainda não estiver confiante ou quiser um processo mais direto ao ponto, a praticidade de um PaaS será a melhor pedida.

Latência

O tempo de resposta do servidor é outro ponto de atenção. Se o público-alvo do projeto estiver no Brasil, é fundamental contratar um serviço cujo datacenter está aqui no país para garantir baixa latência.

Apesar de o tempo de resposta de um servidor cloud em território nacional comparado a um nos Estados Unidos ser geralmente da ordem de frações de segundos, é uma diferença que importa — especialmente em aplicações de alto desempenho.

Necessidade de suporte

Contar com um suporte 24/7 é essencial para resolver crises ou até mesmo lidar com pequenos imprevistos sem desperdiçar tempo — mas não é só isso.

Há quem contrate um servidor fora do Brasil e esqueça que o suporte será em inglês. Dependendo da sua fluência, procure saber se os assistentes falam português.

Além disso, descubra se esse atendimento não é terceirizado, porque um time de suporte in-house receberá um treinamento muito mais apropriado ao contexto da empresa de hosting.

Escolha do serviço

Depois de saber o que a aplicação e a sua equipe precisam em relação a esses itens, você terá traçado o perfil de solução no cloud a buscar. O próximo passo é procurar uma empresa que ofereça serviços que se encaixem nesse perfil — ou que se aproximem o máximo possível dele.

Independentemente da sua escolha, é importante se manter em constante evolução, visto que a área de cloud computing avança com velocidade impressionante. Portanto, mantenha conexão com outros desenvolvedores, participe ativamente da comunidade que existe em torno do tema (em mídias sociais, fóruns e outros canais) e procure frequentar meetups que acontecem por todo o país.

Gostou de saber um pouco mais sobre o cloud computing? Quer ficar por dentro de mais conteúdos feitos especialmente para devs e voltados a quem pretende empreender com tecnologia? Então assine a nossa newsletter e receba as novidades do blog diretamente no seu e-mail!