Entendendo Cloud Computing

Vamos imaginar uma história para facilitar o entendimento do que é Cloud Computing. Suponha que José da Silva comprou um computador novinho…

English version: click HERE

José trata o computador com todo zelo do mundo. Ele tem todo o processamento e memória necessários para suprir suas demandas com seu computador novo.

Agora imagine que 5 anos se passaram… o computador de José não consegue lidar da mesma forma com as demandas dele. Existem alguns motivos para isso.

Antes de falarmos sobre Cloud Computing, ou computação em nuvem, vamos falar sobre esses problemas enfrentados por José.

Recursos computacionais e o tempo

José gosta muito de jogar. Seus jogos possuem gráficos pesados que precisam de placas potentes para ter uma experiência fluida.

Além disso, José é programador. Sendo assim reliza diversos projetos e cada um deles demanda considerável espaço de armazenamento. A cada projeto ele aumenta o nível de espaço ocupado no SSD (ou HD).

Imagine ainda que José realiza simulações computacionais a fim de modelar fenômeos externos, como: comportamentos de indivíduos em grandes eventos.

Concorda que uma hora o computador tão querido de José não dará mais conta do recado. Qual a solução para isso?

Para contornar esse problemas podemos investir em hardware modificando componentes como: CPU, RAM DDR5, SSD… Contudo, concorda comigo que depois de um tempo teremos os mesmo problemas?

Imagine isso em uma empresa. Investir verticalmente nos servidores de um datacenter consiste em um custo considerável. Além disso, na maior parte do tempo os recursos computacionais não são utilizados em sua totalidade.

Quando Cloud Computing pode ser útil?

Para entender essa questão, suponha a rotina de vendas da Americanas. Agora, imagine como esta demanda sofre modificação durante a Black Friday. Neste caso, uma infraestrutura robusta será dedicada a uma demanda pontual da empresa.

Entretanto, no restante do ano essa infraestrutura criada fica ociosa. Claro, podemos utilizar SGBDs NoSQL para melhorar a disponibilidade e escalabilidade do sistema.

Contudo, ainda assim precisariamos investir em equipamento e pessoal.

Foi por esta demanda que grandes empresas direcionaram seus esforços na criação das plataformas Cloud. Surgiu então um novo cenário com computação como serviço.

Cloud Computing – Computing as a Service

Afinal… o que é Cloud Computing?

Cloud computing, surgiu da ideia de fornecer serviços tradicionais de TI, tais como: infraestrutura, virtual machines, armazenamento, banco de dados, aplicações entre outros, como serviço.

Para disponibilizar todo esse ecossistema foram utilizados conceitos de sistemas distribuídos.  Sendo assim, as empresas como Amazon (AWS), Microsoft (Azure) e Google (GCP) passaram a oferecer diversos serviços para empresas e pessoas física.

Com o avanço da tecnologia e amadurecimento das plataformas de cloud computing, os serviços de TI foram estendidos para conceitos mais modernos, tais como: machine learning (ML), internet of things (IoT), SGBDs NoSQL, assim como Artificial intelligence (IA).

Dessa forma, ao invés da infraestrutura, dispositivos e servidores estarem inseridos dentro de um datacenter local, eles estão distribuídos globalmente pelos data centers da empresa mantedora.  

Por que cloud (nuvem)? A nomeação deste tipo de serviço como computação em nuvem vem do desconhecimento da infraestrutura fornecida pela plataforma cloud. Além disso, os data centers estão distribuído por diversos pontos do globo. 

Modelo em camadas na Cloud

Quais as vantagens de utilizar plataformas Cloud? 

Você pode estar se perguntando porque que eu usaria uma plataforma cloud em detrimento do meu datacenter, que está sob meu controle? A resposta para essa pergunta, por que mais complexa do que você imagina? Sendo assim, temos alguns pontos para serem esclarecidos. 

Algumas das vantagens são:

  • Recursos “infinitos”​
  • Baixo custo inicial​
  • Escalabilidade​
  • Transparência/Abstração​
  • Pagar pelo que usa

Vamos falar sobre alguns cenários que englobam as vantagens, do uso de Cloud, listadas acima. Vamos lá…

Alocação de Recursos e Tarefas Operacionais

Falamos sobre o cenário de escala vertical e como isso afeta o bolso das empresas e demais pessoas em geral. Se na maioria do tempo você não utiliza todo o potencial da sua máquina, que tal pagar apenas pelo que de fato usa?

Esse conceito simples, mas poderoso, fornece as empresas de adequar sua infraestrutura de acordo com a demanda. Além disso, uma vez que esta demanda não exista mais precisamos apenas remover a instância do sistema na plataforma Cloud.

Imagine você como profissional de dados, realizar o processamento paralelo de grande volume de dados na nuvem.

Agora, isso ocorre sem a preocupação de lidar com atividades cotidianas de operação. Isso vale para banco de dados, armazenamento de dados, containers, entre outros sistemas.

Imagine definir replicas de banco de dados com alguns cliques. Com essa mesma facilidade remover as instâncias de BD que não são mais necessárias.

A facilidade de alocar recursos computacionais e pagar apenas pelo que utiliza tem sido uma das vantagens mais atrativas para as empresas.

Armazenamento em Cloud Computing

Storage & Cloud Computing

Falamos que José estava començando a perder espaço no HD devido seus inumeros projetos. Integração com banco de dados, front-end da aplicação, testes e inumeras bibliotecas para o código rodar.

Além de armazenamento para dados (como S3 da AWS), as plataformas oferecem um espaço para desenvolvimento de aplicações dentro da nuvem.

Existem diversos tipos de armazenamento de dados dentro das plataformas. A disponibilidade dos dados, operações sobre eles e preço variam de acordo com o nível de storage e acesso aos dados.

A plataforma AWS possui alguns tipos de serviços para armazenamento de dados: S3, Glacier, EBS, EFS, EC2. Variando de acordo com usabilidade, disponibilidade, tipo de tratamento (file, objeto, bloco) e outras features.

Escalabilidade e Processamento 

Podemos determinar a escalabilidade como um dos pontos principais nesta discussão. Imagine, que você precise aumentar seu poder computacional para suprir uma constante alta na demanda pelos seus serviços.  

Neste cenário, temos 2 fatores envolvidos, tempo e dinheiro. Tempo no que diz respeito. No prazo que você terá para que um datacenter seja construído. Dinheiro, porque você vai precisar investir para que comprar novos equipamentos, servidores e dispositivos de rede. 

Escalar verticalmente seu datacenter custa mais caro do que alocar serviços na nuvem. Além disso, se o datacenter pode ficar com o tempo ocioso, ou seja, você pode acabar investindo em algo que não está sendo utilizado em todo seu potencial. 

Se você ainda está adicionando outros serviços ao seu datacenter, adicionando novos dispositivos, novos softwares, você realmente vai precisar contratar pessoas ou treinar o seu pessoal. 

Considerações

Como tudo na vida, ao seu trade off. Serviços em nuvem não são baratos, o custo apenas para manter a instância, já é elevado. Por isso, é preciso que você estude com cuidado a sua solução/Aplicação. 

A pergunta a ser feita, será: Preciso de uma solução robusta centrada em nuvem ou o meu data center de pequeno porte da conta do recado? Plataformas em cloud fornecem diversas vantagens (como mencionamos neste artigo), contudo, estude com atenção o seu caso. Não existe bala de prata. 

Posts Simplificando Redes

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer