Computação em Nuvem: Uma Introdução Executiva

Iury Rosal
Data Hackers
Published in
15 min readDec 18, 2021

Neste artigo iremos entender um pouco melhor sobre o que é o tal do Cloud Computing (Computação em Nuvem) e as possibilidades que temos com essa ferramenta. Também iremos comentar alguns termos que são comuns quando começamos a pesquisar sobre essa temática: IaaS, SaaS, PaaS, Serverless, pay-as-you-go, entre outros. Se você não sabe ou pouco viu sobre esse tema, este é um ótimo artigo para você começar a entender sobre computação em nuvem, que tem ganhado cada vez mais força nesses últimos anos.

Com computação em nuvem, sua organização é capaz de alcançar destaque diante da concorrência, alcançando níveis cada vez mais altos de qualidade e performance. Fonte: Pixabay.

A importância da Computação em Nuvem

Acredito que você, leitor deste artigo, já deve ter utilizado ou utiliza algum serviço de Google Drive ou OneDrive. Este é um belo exemplo de uso da Nuvem. Você está armazenando arquivos em um repositório que independe da sua máquina local, podendo acessá-lo de qualquer outro local, seja de outro computador ou algum dispositivo móvel. Vale ressaltar que mesmo que todos os seus dispositivos deem algum problema, seus arquivos continuam disponíveis.

A nuvem para o lado pessoal traz esses benefícios, agora imagina em um nível de ambiente corporativo, onde tudo é muito maior. Enquanto queremos armazenar gigabytes de arquivos, empresas desejam armazenar petabytes de arquivos. E os desafios vão muito além de apenas armazenar arquivos, envolve a oferta de produtos e serviços digitais que tenham confiabilidade, segurança e escalabilidade tanto para a própria empresa como para os seus clientes.

Às vezes alguns empresários podem achar que computação em nuvem envolve apenas redução de custos, mas vai muito além disso. Basta olharmos para as companhias que estão dentro deste ambiente: Twitter, Uber, Facebook, Instagram, Airbnb, QuintoAndar, Accenture. Todas essas companhias utilizam computação em nuvem nos mais diferentes âmbitos, pois perceberam o quanto de valor é agregado no uso dessa inovação e todo o seu potencial. Atualmente, o serviços de computação em nuvem movimentam mais de 400 bilhões de dólares no mercado internacional.

O que é Computação em Nuvem?

Vamos para uma parte desafiadora que é definir esse termo de uma forma que fique clara para você, leitor. Existem diferentes definições e explicações de computação em nuvem. Tentarei explicar da maneira que mais ficou clara para mim.

Vejamos um exemplo corporativo. Imagine que uma determinada organização deseja construir um grande repositório de dados que exigem petabytes de armazenamento. Agora só pensar um pouco o quanto custaria para comprar componentes para essa capacidade, o quanto custaria para contratar profissionais especializados para construir a infraestrutura e realizar sua manutenção, o quanto custaria para o desenvolvimento de mecanismos e processos de segurança e escalabilidade, entre muitas outras complexidades. E isso seria só para disponibilizar uma infraestrutura ideal, uma base estrutural para execução da atividade de armazenar os dados. Ou seja, são muitas preocupações e complexidades extras que você teria que lidar além de realizar a “simples” tarefa de armazenar todos os dados nesse repositório, que é uma atividade mais próxima do negócio e que já possui uma complexidade relacionada a ela. Com computação em nuvem, você transfere toda essa complexidade da infraestrutura para um terceiro, precisando unicamente se preocupar com a tarefa do negócio. Já dá para imaginar o quanto de dinheiro é economizado assim como tempo e outros recursos.

No resumo, isso seria a computação em nuvem. Você pega uma infraestrutura (terceirizada) emprestada para executar aplicações, armazenar arquivos ou realizar qualquer outra atividade. A infraestrutura vai além dos componentes físicos, inclui todos os mecanismos que são agregados a ela que promovem benefícios aos seus usuários, como segurança e escalabilidade.

Computação em Nuvem reduz custo, aumenta a velocidade, promove diversas facilitações e incrementa maiores possibilidades para você/sua organização. Existem muitas possibilidades de computação em nuvem. A sua finalidade geral irá de acordo com os seus interesses. Armazenar? Executar? Monitorar? Analisar? Construir? Distribuir? Cada resposta irá definir de que forma você utilizará a computação em nuvem e qual serviço utilizar.

Produtos da Nuvem e Serviços

Existem atualmente muitos produtos e serviços de Computação em Nuvem. Vejamos alguns provedores: Apple iCloud, Oracle Cloud, IBM Cloud, Cloudera, AWS (Amazon Web Services), Microsoft Azure e Google Cloud. Existem muitos outros. Esses são apenas alguns dos mais conhecidos/comuns. Cada provedor fornece um conjunto de serviços/ferramentas distintas. Qual a melhor? Bem a que resolve seu problema. É muito importante analisar o funcionamento e serviço de cada provedor para ver aquele que melhor está alinhado com o seu desejo e atenda suas necessidades.

Mas o que eles tem de comum? Todos possuem as mesmas características da Computação em Nuvem. Isso será o que discutiremos no tópico a seguir.

Características da Computação em Nuvem

Conexão com a Internet

Pelas explicações e exemplos, dá para perceber que Computação em Nuvem utiliza Internet. Sim, justamente a Internet entra no momento que você precisa acessar um ambiente terceirizado para armazenar seus dados ou executar suas aplicações. É a Internet que possibilita a conexão entre dispositivos. Se você não tiver internet, é impossível armazenar algum arquivo no Google Drive, ou seja, não consigo conectar minha máquina local com o componente da Google.

No entanto, Computação em Nuvem não é a mesma coisa que Internet. Digamos que a Internet é algo bem maior e que Computação em Nuvem utiliza do poder da Internet para fazer tudo acontecer. Afinal, é com a Internet que conseguimos conectar seu dispositivo local com um dispositivo da Amazon que está localizado em outro lugar, por exemplo. É no mesmo nível que para acessar um site precisa de Internet, para enviar um email precisa de Internet e, assim, por diante. Nós precisamos dessa conexão, pois quando nós utilizamos qualquer serviço de nuvem, isso significa que nós iremos utilizar algum componente computacional que não está presente no nosso computador físico local.

Uso de um Hardware Terceirizado

Todos as empresas que promovem serviços de computação em nuvem possuem grandes data centers (centros de dados), estruturas dedicadas, complexos inteiramente preenchidos por componentes de Hardware, com milhares de servidores e HDs, entre outros dispositivos computacionais. Esses complexos possuem diversos mecanismos de segurança, resfriamento, controle, manutenção e gerenciamento.

Data Center em Jundiaí — Ascenty

Existem diversos data centers espalhados pelo mundo, sendo muitos conectados entre si. Abaixo exibe a localização de complexos da Amazon.

Infraestrutura Global da AWS. Atualmente, existem 25 regiões da AWS. Cada região representa um conjunto de Zonas de Disponibilidade, em que cada uma representa um complexo de data center. Fonte: Onica

Esses data centers da Amazon não servem apenas para suprir demandas internas da Amazon. Esses data centers e toda essa infraestrutura vem justamente para a disponibilidade de serviços em nuvem para diversas regiões no mundo. Logo, essa é a infraestrutura que pegamos uma parte emprestada para executar nossas atividades.

Vale lembrar que não acessamos diretamente esses dispositivos do data center. Existe uma camada de Software, disponibilizada pelo próprio provedor, responsável por automatizar e gerenciar a conexão entre nosso dispositivo e o dispositivo do data center. Dessa forma, quem utiliza o serviço em nuvem não tem acesso diretamente ao Hardware que será utilizado. Funciona como uma camada de abstração para facilitar o uso de terceiros da infraestrutura do provedor.

Print do Software disponibilizado pela AWS. Por meio deste portal da AWS é possível utilizar os serviços em Nuvem da AWS sem ter contato direto com as camadas de infraestrutura da AWS. Fonte: Trailhead

Autoatendimento sob demanda

Cada provedor possui um portal, onde você cria sua conta, preenche detalhes de pagamento, seleciona o serviço/ferramenta desejada e com apenas um clique, tudo estará disponível para você utilizar. Em segundos, ocasionalmente em minutos, o que for solicitado será provisionado e estará disponível para uso. Esse processo remove a necessidade de qualquer interação humana em boa parte dos serviços em nuvem, promovendo flexibilidade e velocidade.

Outro aspecto interessante, é que, boa parte dos provedores, realizam a cobrança de acordo com o que você utiliza (modelo “pay-as-you-go”). Alguns serviços cobram por hora, dia ou mês de uso, além de envolver outras métricas, que dependem do serviço utilizado. Por exemplo, serviços de armazenamento podem envolver métricas em relação ao espaço de armazenamento utilizado, serviços que utilizam unicamente conexão podem ter métricas que envolvem consumo de energia elétrica, entre outras coisas. No geral, você será cobrado equivalente ao que foi utilizado (o custo que foi gerado). Para casos mais específicos, existem outros métodos de cobrança/pagamento que varia de provedor para provedor e de serviço para serviço.

Tudo isso está ligado com os benefícios da existência do software do provedor, que permite uma conexão entre o usuário e a infraestrutura do provedor, sem a necessidade, obrigatoriamente, de um contato direto com os componentes físicos. Essa ferramenta facilita toda essa automação tanto no uso como na cobrança.

Agrupamento de Recursos

Quando um usuário começa a utilizar um serviço em nuvem ele não terá, necessariamente, um único componente para ele (com seu nome registrado), mas sim um pedaço de uma gigantesca infraestrutura computacional, que também é compartilhada com outros usuários. Mesmo que o data center seja composto por diversos componentes computacionais, todos eles estão conectados em uma mesma rede (seja de forma física ou de forma virtual). Dessa forma, vários usuários podem utilizar esse mesmo ambiente compartilhado, de forma simultânea e independente, sem ter comprometimento do desempenho das atividades de cada um.

Na prática, quando armazeno um arquivo dentro de um serviço da AWS, jamais saberei em qual componente físico e nem em qual data center da Amazon esse arquivo está localizado. E está tudo bem! Afinal se meu arquivo está armazenado no data center de São Paulo ou no Texas ou na Alemanha, no fim, não faz diferença.

Um outro benefício desse ambiente compartilhado é a tolerância a falhas. Mesmo que seja feita todo o cuidado e manutenção, ocasionalmente algum HD pode vim a falhar. No entanto, todo o sistema da Amazon é desenvolvido para os arquivos terem mecanismos para evitar sejam perdidos, além de rapidamente identificar essa falha e resolvê-la rapidamente. Tudo isso é feita de uma forma que o usuário que está utilizando o serviço não perceba, afinal, ele não está utilizando um único HD, mas um conjunto de diversos HDs compartilhados e conectados. Logo, um HD falhando não afetará o ambiente compartilhado composto por diversos outros HDs.

Em Resumo

Então computação em nuvem envolve essas 4 características:

  • Conexão com internet para permitir a conexão entre seu dispositivo e a infraestrutura do provedor;
  • Uso de Hardware Terceirizado, onde o usuário final, que irá utilizar o serviço em nuvem, obrigatoriamente, não tem contato direto com esses componentes físicos;
  • Autoatendimento sob demanda, em que você solicita o que deseja e obtém em instantes o que foi solicitado, sendo normalmente cobrado pelo que foi utilizado;
  • Agrupamento de recursos, em que todos os usuários utilizam um pedaço de todo um ambiente compartilhado com outros usuários.

Tudo como serviço

Como comentamos existem diversos tipos de serviços e ferramentas na Nuvem, cada uma voltada para uma determinada finalidade. Para facilitar nosso entendimento, existe um agrupamento desses serviços em: Software como serviço (SaaS), Infraestrutura como serviço (IaaS) e Plataforma como serviço (PaaS). Vale ressaltar que muitos serviços estão surgindo, juntamente com novos conceitos e categorias. Logo, é comum se deparar com outros termos com a terminação “como serviço”, por exemplo, Base de Dados como Serviço (Database as a Service) ou Processo de Negócio como Serviço (Business Process as Service). Neste artigo, focaremos nos 3 primeiros citados por serem os mais comuns entre os provedores. Normalmente, as outras variações “como serviço” são derivações desses 3 principais, apenas com uma maior especificidade.

Software as a Service (SaaS)

Essa é a categoria mais fácil de compreender, pois muitos negócios utilizam esse modelo de serviço. Se você utiliza serviços de email como Gmail ou Outlook. Ou se você usa serviços para criação de documentos como o Office 365 ou o Google Docs. Ou se você utiliza ferramentas de colaboração como Slack ou Discord. Ou se você utiliza ferramentas de gerenciamento de projeto como Trello ou Pipefy. Ou se você utiliza alguma ferramenta de CRM como Salesforce ou CRM People. Tudo isso é SaaS. Existem milhões de serviços desse tipo. Um serviço do tipo SaaS é um programa com alguma funcionalidade específica que possibilita atender uma determinada necessidade. Por exemplo, digamos que eu desejo organizar os projetos da minha startup. Eu poderia desenvolver alguma ferramenta para isso, no entanto, já existem ferramentas desenvolvidas no mercado que auxiliam nisso. Então pra quê incrementar essa complexidade sendo que meu foco é apenas conseguir gerenciar meus projetos? Logo, utilizo o Trello que é um programa já desenvolvido no mercado que realiza essa função.

No entanto, em vez desses programas serem aqueles que você baixa, instala e executa na sua máquina local, estes estão sendo executados em servidores de algum datacenter qualquer. Você apenas conecta dentro desse programa para utilizá-lo. Essa conexão, muita vezes, é feito via uma visualização na web.

Aqui temos o uso da computação em nuvem. Você precisa estar conectado a internet, o programa está sendo executado em um hardware terceirizado (ou seja, independe do dispositivo do usuário final que utilizará o programa), é sob demanda e com autoatendimento (assim que você acessa sua conta dentro do programa você pode utilizá-lo à vontade) e é tudo executado sob um ambiente agrupado e compartilhado (muitos outros usuários utilizam o mesmo programa simultaneamente com recursos que são compartilhados).

O modelo de pagamento comum dos SaaS é justamente um pagamento por subscrição (mensal, anual, diário). Para utilizar o Netflix, por exemplo, eu não pago uma única vez, pago de forma contínua. Quando eu não efetuar o pagamento, não conseguirei utilizar o serviço. Isso é o SaaS, utilizado pelo público, no geral.

Infrastructure as a Service (IaaS)

Quando estamos interessados em ter um acesso mais profundo dos recursos computacionais que serão utilizados, permitindo que ocorra um trabalho de forma mais direta com os servidores e com as conexões necessárias, provavelmente estamos construindo algo que necessita desse maior controle. Quando um serviço em nuvem oferece esse tipo de opção estamos falando de IaaS.

Novamente, assim como no SaaS, temos todos os benefícios da computação em nuvem. Assim que entro no sistema do provedor da nuvem, sou capaz de configurar os recursos computacionais que desejo utilizar. Por exemplo, se eu desejar utilizar um servidor na AWS, posso especificar quanto de memória RAM desejo utilizar, quanto preciso de armazenamento, de processamento, posso selecionar qual região de data centers desejo que esse servidor seja alocado.

Um ponto importante a reforçar é que não estou alocando uma máquina única em específico com essas determinações para meu uso único. Afinal, estamos falando de computação em nuvem, tudo isso ocorrerá em um ambiente compartilhado. O que irá acontecer será a criação de uma máquina virtual com essas especificações dentro desse espaço compartilhado, que funciona como se estivesse com um computador físico dedicado. Os servidores físicos de um Data Center conseguem suportar diversas máquinas virtuais simultaneamente, que funciona da mesma forma como se fossem diversos usuários simultaneamente. E sou capaz de salvar uma máquina virtual, análogo a como salvar um documento. Posso executar essa mesma máquina virtual em outros componentes físicos, posso duplicar uma máquina virtual. As máquinas virtuais são uma forma de flexibilizar e facilitar todo esse processo.

Assim, você, se desejar, pode solicitar uma determinada configuração de ambiente para execução da sua aplicação, de acordo com sua necessidade. Isso é o IaaS, comumente utilizado por pessoas que trabalham com Infraestrutura e engenharia.

Plataform as a Service (PaaS)

O PaaS podemos imaginar como a seguinte situação: Desejo um servidor para hospedar uma página web. Esta é uma aplicação muito comum e simples. Logo, o provedor fornece de forma rápida um servidor já com todas as configurações padronizadas para esse caso de uso. Se você não deseja uma configuração especifica de recursos computacionais, mas apenas deseja o recurso computacional mínimo para executar a atividade desejada, o provedor fornece isso rapidamente para você. Retirando a necessidade do contato direto com os recursos computacionais, tornando mais prático para os casos em que isso não é necessário.

Esse tipo de serviço ajuda quando desejamos desenvolver uma aplicação em Python, por exemplo. O provedor disponibiliza um ambiente já preparado para desenvolver em Python, tirando a necessidade do desenvolvedor configurar todo o ambiente. O desenvolvedor simplesmente já começa seu trabalho de programação. Isso é o PaaS, mais utilizado por desenvolvedores de software.

Em Resumo

Para resumirmos os conceitos abordados, a imagem abaixo cumpre esse papel:

Fonte: Tecnomega

Se eu desejo utilizar uma máquina com características computacionais em específico, estou utilizando IaaS para isso. Agora se eu apenas desejo um servidor qualquer mínimo para executar uma determinada tarefa computacional, sem se preocupar com detalhes das características computacionais ou configurações, estou utilizando PaaS. Por fim, se o usuário final acessa uma determinada aplicação para uso de uma determina finalidade prática, isto é SaaS.

A imagem abaixo reforça muito bem a divisão dessas categorias de serviços:

Fonte: Dinamio Tecnologia

Praticamente todos os provedores disponibilizam serviços na Nuvem que englobam essas 3 categorias de serviço.

O mercado da Computação em Nuvem

Como já citado, existem diversos provedores em nuvem. Para entendermos a dimensão de serviços ofertados, vamos pegar a AWS, como exemplo. Atualmente, a AWS disponibiliza mais de 1000 diferentes tipos de serviços nas mais diferentes finalidades. Para se ter uma noção, só para armazenamento de dados, existem 20 tipos de serviços principais, sendo que cada um deles possui uma determinada finalidade e lógica de uso/cobrança. Por exemplo, se deseja trabalhar com bancos de dados relacionais você pode utilizar o Amazon Aurora ou o Amazon RDS. Agora se deseja trabalhar com dados não-relacionais no formato chave-valor você pode utilizar o Amazon DynamoDB. Enfim, dependendo de cada caso, existirá um serviço na AWS que atenderá essa necessidade, no caso de armazenamento, envolve tanto o tipo de dado como a finalidade de uso do dado que será armazenado.

Em um artigo como esse será muito complicado explicar todos os serviços e suas variações, afinal sairia muito do escopo. Portanto, vou comentar só alguns termos que você poderá se deparar dentro da AWS ou em outro provedor de computação em nuvem.

Opções de Desenvolvimento em Nuvem

  • Public Cloud: este é o mais comum e padrão do serviço em nuvem. É basicamente operar inteiramente na nuvem do provedor, utilizando seu hardware (terceirizado) e recursos compartilhados, que são utilizados por outros usuários, disponível ao público no geral.
  • Private Cloud: o menos comum, provavelmente presente apenas em grandes corporações. Utiliza recursos computacionais que são de uso exclusivo da organização, não sendo compartilhado com outros usuários. Estes recursos computacionais podem ser de terceiros inteiramente reservados pela organização ou envolver uma infraestrutura própria da organização. É o método mais caro de lidar com computação em nuvem, visto o uso de uma infraestrutura própria ou reservada.
  • Hybrid Cloud: é basicamente um mix. Usa uma parte em Public Cloud e outra parte em Private Cloud. Entra no caso das companhias que já possuem uma infraestrutura própria mas utiliza uma parte das suas atividades em uma infraestrutura terceirizada.
  • Multi-Cloud: envolve utilizar mais de um provedor de nuvem. Por exemplo, imagina que a equipe de data science da organização utilize serviços específicos da Azure, enquanto a equipe de engenheiros de software utilizam serviços da AWS. Esse é um exemplo de multi-cloud. Este uso incrementa complexidades no gerenciamento, afinal não estará tudo centralizado em um único ambiente, mas em diversos ambientes terceirizados.

Elastic

Você se deparará com diversos termos acompanhados de “Elastic”, como Elastic Storage, Elastic Computing e Elastic Network. O termo “Elastic” é autoexplicativo. Imagina elástico como uma mola que se adapta a situação, ela pode se contrair ou expandir dependendo da interação realizada, sem necessitar de modificação da sua estrutura. Em computação em nuvem, isso se refere a habilidade dos servidores, da conexão e do armazenamento se ajustarem automaticamente de acordo com o nível de demanda.

Por exemplo, quando colocamos uma aplicação em execução utilizando o serviço da AWS Amazon EC2, existe a habilidade de ampliar a quantidade de instâncias que executam essa aplicação quando ocorre um aumento de demanda do seu uso. Após redução dessa demanda, ocorre a redução do número de instâncias que executam a mesma aplicação. É análogo a uma recepção. Quando temos, em determinado momento, uma grande fila de clientes para serem atendidos por um única recepcionista, o melhor a se fazer é adicionar mais recepcionistas para distribuir essa fila e evitar esse congestionamento/lentidão no atendimento.

Na prática, essa característica auxilia a sempre manter a aplicação com disponibilidade e pouco congestionamento, ao mesmo tempo que evita ociosidade e desperdício de recursos (afinal você estaria pagando por instâncias a mais que não estariam sendo utilizadas).

Serverless Computing

Esse nome pode causar uma confusão, pois pode levar a falsa interpretação de que não é utilizado nenhum servidor. Mas não é isso, existe sim servidor que irá executar a aplicação. Esse serviço envolve a lógica do PaaS. Seria basicamente executar uma aplicação sem se preocupar com detalhes do servidor. Muitas vezes quando eu, desenvolvedor, estou construindo uma aplicação, o que desejo é justamente executar essa aplicação, testá-la, mas sem necessitar de mexer com detalhes do servidor, pois está fora da minha necessidade e escopo de trabalho. Então utilizarei um serviço que utiliza Serverless Computing.

Conclusão

Neste artigo, introduzimos os conceitos de computação em nuvem, além de alguns termos comuns desse ecossistema. Para quem desejar, deixo disponível minhas redes sociais: Linkedin e Youtube.

--

--

Iury Rosal
Data Hackers

Analista de Dados @Accenture | Bacharel em Engenharia de Computação @UFC