DEV Community

Cover image for Cloud Computing / Computação na nuvem (surgimento, características, vantagens etc.)
Luigi Belanda
Luigi Belanda

Posted on

Cloud Computing / Computação na nuvem (surgimento, características, vantagens etc.)

🔴 Aviso

Todo esse texto foi criado para uma pesquisa / trabalho da matéria Arquitetura e Organização de Computadores da minha faculdade, o texto pode apresentar erros e desde já deixo claro que isso é apenas a base sobre o assunto, recomendo o uso das fontes citadas no final desse post para consulta e melhor entendimento no geral do assunto. Qualquer sugestão sobre o texto / assunto será de extrema importância e ajuda.


💡 Surgimento

A Cloud Computing é um dos alicerces da construção do mundo conectado atualmente, servindo de grande apoio para o Big Data, IOT e muitas outras tecnologias / conceitos, podemos desde já deixar claro que apesar de estarmos falando de uma tecnologia nova, o conceito / ideia de “Cloud Computing” é mais antigo do que se parece, segundo alguns relatos históricos essa ideia tem seu surgimento em meados da década de 60.

Um dos grandes nomes para a ciência da computação, John McCarthy [1], inventor de um dos termos que anda em alta já há alguns anos, inteligência artificial, fez uma vez a defesa da proposta de “time-sharing”, em outras palavras podemos dizer computação por tempo compartilhado.

O cientista disse que a computação poderia permitir que uma máquina de computador pudesse ser utilizada de forma simultânea por dois ou mais usuários. Neste caso, as pessoas poderiam realizar tarefas e aproveitar o tempo disponível dos recursos. Na visão do mesmo esse compartilhamento poderia reduzir custos e além disso permitir o pagamento conforme o período de uso dos serviços. Aqui se dava os primeiros passos para os conceitos fundamentais da Cloud Computing.

Essa teoria, com esse modelo, foi apresentada pelo cientista durante um discurso no Massachusetts Institute of Technology (MIT), nos Estados Unidos, no ano de 1961. Nesse discurso, ele sugeriu a criação da “Utility Computing” ou podemos dizer computação como serviço de utilidade pública.

Pesquisando sobre o termo “Utility Computing” ou “The Computer Utility” podemos entender ele um pouco melhor, a computação utilitária é um modelo / processo de prestação / fornecimento de serviços de computação com forte vínculo na ideia de cobrança sob demanda e pagamento por uso, em vez de se pagar uma taxa fixa, outra parte importante disso tudo é que esse modelo segue a ideia do fornecedor disponibilizar seus recursos computacionais e o mesmo irá gerenciar e operar sua infraestrutura, os usuários / clientes / assinantes acessam esses recursos disponibilizados quando necessário, seja por meio de contratos, planos de assinatura, aluguéis etc.

Já em 1962, Joseph Carl Robnett Licklider [2] (a influência mais importante no desenvolvimento da ARPANET), do MIT, já falava sobre a criação de uma rede que seria interligada por uma rede de computadores, John McCarthy e o Joseph Carl Robnett Licklider, foram os pioneiros do conceito já citado.

Após muito tempo, apenas em 1997 o termo “Cloud Computing” foi usado pela primeira vez pelo professor de sistemas de informação, Ramnath Chellappa [3], em uma palestra acadêmica em 1999, o professor até hoje é considerado aquele que fundou o termo amplamente utilizado, aliás apenas por curiosidade empresa Salesforce [4] foi a primeira a disponibilizar aplicações empresariais pela web e dentro de alguns anos as empresas começaram a fazer sua migração para a nuvem.

Mas afinal, por que o nome “Cloud Computing”? A origem de seu nome vem dos diagramas das antigas redes de dados ISDN [5] (Services Digital Network, ou rede de serviços digitais, projetadas pelas operadoras de telefonia. A interligação dessas redes era demonstrada por desenhos de nuvens, como pode ser visto nas imagens abaixo, para sinalizar algo que estava fora do alcance das empresas. Por isso, a palavra sugere uma ideia de um ambiente desconhecido, toda a infra e recursos computacionais ficam “escondidos”, onde o usuário tem o acesso apenas a uma interface padrão.

Diagrama ISDN
Exemplo de diagrama ISDN (note o símbolo de nuvem, ressaltando o que foi dito na explicação sobre o nome “Cloud”)

Finalmente, o que podemos definir como "computação em nuvem"? A computação em nuvem nada mais é do que um servidor remoto que conecta o dispositivo de um usuário a recursos centralizados em um servidor, que por sua vez armazena todos os dados e programas de que você precisa e pode estar localizado em qualquer lugar geograficamente.

Exemplos mais comuns de de serviços de Cloud Computing: O AWS Amazon, o iCloud, o Google Drive e o Microsoft Azure, assim como os streaming de músicas e de vídeos são exemplos de plataformas que utilizam esta tecnologia.


📝 Características

Apesar de já sabermos que Cloud Computing é algo que às vezes nem sabemos onde fica o servidor que estamos acessando, na máximo que país fica o servidor / data center [6], que não temos tanto controle muitas vezes sobre o hardware que vamos usar, que é necessário conexão com a internet e muito mais, mas podemos citar como principais características da computação em nuvem os seguintes pontos: Elasticidade e Escalonamento, Faturamento e medição de uso, Autoatendimento sob demanda, Amplo acesso, Serviços mensuráveis, Customização e Pool de recursos. Todos esses pontos tem uma breve explicação abaixo.

  • Elasticidade e Escalonamento (praticamente sempre que necessário serão providos recursos adicionais para o usuário caso a demanda aumente, como também a diminuição dos recursos computacionais do usuário caso a demanda diminua);
  • Faturamento e medição de uso (uma vez que o usuário tem a opção de requisitar e utilizar somente a quantidade de recursos e serviços que ele julgar necessário, os serviços devem ser precificados com base, por exemplo, no número de horas de uso, as nuvens devem implementar recursos que garantam um eficiente comércio de serviços, um exemplo disso é a questão do monitoramento e otimização de uso, custos / tarifação adequada, contabilidade e faturamento);
  • Autoatendimento sob demanda (se o usuário quiser aumentar as capacidades computacionais de seus serviços ele pode fazer isso muitas vezes até sem atendimento humano, só efetuando a compra de um outro plano ou algo do tipo);
  • Amplo acesso (os serviços da nuvem são muitas vezes acessíveis de diversas plataformas, desde PCs, celulares etc com esse ponto ainda ganhamos outra coisa que é a mobilidade, se podemos acessar os serviços de quase qualquer dispositivo e tendo conexão com internet então não precisamos estar na empresa para isso, podemos analisar alguma coisa sempre que necessário de qualquer lugar praticamente etc.);
  • Serviços mensuráveis (os serviços são controlados e monitorados automaticamente, ficando nítido para o consumidor o que pode ser feito para otimizar sua utilização e para o provedor a cobrança dos recursos);
  • Customização (no atendimento a múltiplos usuários verifica-se a grande disparidade entre as necessidades dos mesmos, tornando essencial a capacidade de personalização dos recursos da nuvem);
  • Pool de recursos (os recursos computacionais da nuvem ficam reunidos geograficamente, seus recursos virtuais são dinamicamente atribuídos ou retribuídos pelo cliente conforme sua demanda, mas o cliente não possui controle sobre a real localização dos recursos que está utilizando, tendo somente uma ou outra informação mais ampla, como por exemplo, o país em que se encontra o servidor / data center, estado, situação do servidor etc).

Características da computação em nuvem
Imagem com algumas características já citadas e outras não sobre computação em nuvem


🔒 Segurança

Sobre essa questão podemos escutar muito o termo “Segurança da Nuvem” ou até mesmo “Segurança em Nuvem”, este é um termo amplo que engloba a tecnologia e as práticas recomendadas criadas para proteger os dados e as informações em uma arquitetura de nuvem, um ponto importante é que pelo fato da arquitetura em nuvem ser distribuída e dinâmica há pontos específicos quando tratamos de segurança.

Apesar de haver pontos específicos da segurança na nuvem, muitas das preocupações são as mesmas de um sistema de TI convencional, como por exemplo: uma eventual exposição e vazamento de dados não autorizados, seja por conta de alguma vulnerabilidade do sistema, algum ataque, phishing etc. controles de acesso fracos (contas com acessos desnecessários, não registrar em logs quem acessou o sistema e muito mais), suscetibilidade a ataques e interrupções na disponibilidade.

Sendo assim, alguns dos pontos principais da segurança da nuvem são, por exemplo: controles de segurança, melhorias de processo para proteger os sistemas, alertar possíveis invasores, segurança dos dados e detectar incidentes ocorridos e até mesmo outros pontos.

Todos esses pontos citados tem como objetivos principais:

  • Possibilitar a recuperação no caso de perda de dados (seja por meio de backups, por exemplo);
  • Proteger o armazenamento e as redes contra roubo malicioso de dados (controles de acesso, logs, regras bem definidas de autenticação);
  • Determinar se houve erro humano ou negligência na causa vazamento de dados (levantamento e gerenciamento dos riscos);
  • Mitigar o impacto de qualquer comprometimento de dados ou sistemas.

Muitas coisas são usadas para a maior segurança possível do serviço, como criptografia dos dados, utilização de VPNs [7] para transferência dos dados, gerenciamento de identidade e acesso, etc.

Vale destacar que como boas práticas de segurança em nuvem temos os seguintes pontos: Autenticação Multifator (MFA), Classificação de dados (entender quais dados estão sendo armazenados, como estão sendo armazenados, quais dados são sigilosos e muito mais), Identificação e Autenticação (nesta questão não envolve só controlar o acesso de usuários, mas também controlar o acesso de aplicações, APIs etc.), Criar contas separadas e controladas para administradores (não é nada recomendado criar uma conta única para a empresa, onde se essa conta for comprometida tudo é perdido) e Logs (com os Logs podemos registrar cada ação na nuvem, assim alertando os administradores sobre ações suspeitas / perigosas e acessos de máquinas indevidos).

Uma questão importante é que não devemos pensar na questão de segurança da nuvem apenas como software ou hardware, tudo começa com um levantamento e gerenciamento dos riscos, pensar no que pode dar errado e como isso afeta o negócio, mesmo que a chance disso acontecer seja muito baixa.

Como benefícios de se aprimorar no quesito segurança, temos maior proteção contra ataques, maior disponibilidade e confiabilidade dos serviços e muito mais.

Questões de segurança AWS
Imagem com exemplos de ideias para segurança na nuvem, em questão muitas das coisas contidas na imagem fazem parte da AWS


🗼 Arquitetura

A arquitetura de nuvem é a forma como as tecnologias individuais são integradas para criar nuvens, é a organização de componentes e subcomponentes em uma estrutura lógica, permitindo que esses componentes trabalhem juntos e assim criando uma nuvem.

A arquitetura de nuvem varia de acordo com o que você quer fazer. No entanto, a maioria das nuvens requerem software de automação, gerenciamento, middleware e hardware. A maioria das nuvens também usam a virtualização para abstrair os recursos de hardware com gerenciamento central. Já outras nuvens conhecidas podem conectar os clientes diretamente ao hardware. De forma geral os componentes mais básicos são redes, roteadores, switches, servidores, firewalls [8], sistemas de segurança e muito mais.

Indo um pouco mais além podemos dividir a arquitetura de nuvem em quatro níveis: funções, atividades, componentes e subcomponentes.

As funções são divididas em Consumidor de nuvem (pessoa ou empresa que usa o serviço de nuvem), Provedor de nuvem (pessoa ou companhia que fornece os serviços para criar os servidores, máquinas virtuais, armazenamento de dados etc.), Corretor de nuvem (pessoa ou empresa que gerencia o uso e desempenho da nuvem para o cliente), Operadora da nuvem (provedor de serviços que conecta uma empresa à nuvem) e Auditor de nuvem (pessoa ou empresa que realiza a auditoria de um provedor de nuvem).

As parte de atividades definem o acesso e o consumo de SaaS, PaaS e IaaS (serão explicados logo mais), incluindo principalmente nesta parte as questões de orquestração (gerenciamento de um ambiente de nuvem para cumpri determinados objetivos), auditorias (análises na questão de segurança, desempenho e conformidade do provedor) e segurança (confidencialidade, integridade dos dados e disponibilidade).

Já a parte de componentes visa escolher os componentes necessários da arquitetura da nuvem para chegar a um objetivo, nessa questão entram decisões, como por exemplo, se a nuvem é privada, pública ou híbrida. Outros dois pontos fundamentais para a escolha dos componentes são a interoperabilidade e a portabilidade. Tudo isso deve ser levado em conta para que a empresa em questão não fique presa em uma estrutura inadequada ou sofra com isso.

Por fim, a parte dos subcomponentes visa permitir que a empresa trate de outras questões, como por exemplo, gerenciamento de SLA, provisionamento rápido e mudanças de recursos.

Todos os equipamentos comentados no começo dessa sessão e conceitos comentados nos últimos parágrafos fazem parte da arquitetura / estrutura básica de nuvem, declarando quem faz o que e com quais ferramentas e muito mais.

Podemos falar brevemente ainda de mais três coisas que podemos definir em uma estrutura / arquitetura de computação na nuvem: os Atores, Camadas e Cenários da nuvem. Existem três atores principais na computação em nuvem (prestadores de serviços - desenvolvem e deixam os serviços acessíveis aos usuários através de interfaces baseadas na Internet, usuários do serviço e os prestadores da infraestrutura - fornecedores da infraestrutura para criação dos serviços).

Diagrama de atores
Exemplo de imagem que ilustra os três atores

As camadas são divididas em infraestrutura (camada mais baixa), plataforma (abstração mais elevada e provê serviços para que as aplicações possam ser desenvolvidas) e aplicação (alto nível de abstração, e aquela que oferece diversas aplicações como serviços para os usuários), no qual podemos entender melhor na imagem a seguir.

Exemplo das camadas
Imagem representando as camadas

E os Cenários? Os cenários são como os serviços são disponibilizados para os usuários, no caso como SaaS, PaaS e IaaS, mas o que cada uma dessas siglas representa?Resumidamente:

  • Saas: o cliente pode usar o software de um computador ou servidor, exemplos comuns (Office 365 e Gmail), a única coisa necessário é que o cliente tenha um dispositivo conectado à internet;
  • Paas: oferece para o cliente uma forma de provisionar, implantar ou criar software;
  • IaaS: permite que a empresa crie seu próprio data center virtual (vDC).

Por conta das diferenças de cada um dos tópicos acima a arquitetura de nuvem comentada anteriormente pode variar dependendo de qual modelo ela segue (SaaS, PaaS e IaaS, como também se é uma nuvem privada, híbrida ou pública), mas no geral ela se mantém com a maioria dos pontos já comentados acima.


⭐ Vantagens

Depois de tudo que foi dito você estar se perguntando, quais são as reais vantagens da computação na nuvem? Pois bem, talvez a vantagem mais marcante para muitos de nós seja a possibilidade de conexão / acesso aos dados e aplicações de qualquer lugar, nos gerando assim uma economia de tempo pois assim o compartilhamento de arquivos, por exemplo, fica muito mais fácil e rápido, desde que haja conexão com a internet, assim ganhamos algumas coisas importantes como, por exemplo: mobilidade e flexibilidade.

A possibilidade de fazer o pagamento mediante ao seu uso dos recursos da “Cloud” ajuda a pagar somente o necessário e evitar desperdícios dos recursos.

Indo um pouco mais a fundo na questão da flexibilidade podemos ainda tocar em um ponto muito importante também que é a possibilidade do usuário escalar sua aplicação / serviço, caso necessário, ampliando a disponibilidade dos recursos, seja contratando um plano mais caro e com mais recursos, por exemplo.

Outras flexibilidades consistem em facilitar a utilização dos serviços e compartilhamento de recursos, além da confiabilidade dos serviços, até por que as empresas que prestam serviços de Cloud Computing são avaliadas por sua reputação, principalmente pela capacidade de manter os dados seguros através de cópias de segurança, criptografia, controle de acesso rigoroso, conseguir administrar eventuais falhas e ataques, prestar esclarecimento quando necessário etc.

Se pensarmos bem também veremos que a empresa pode obter uma produtividade maior utilizando cloud computing, tirando algumas preocupações de seu alcance, como por exemplo: e se o hardware quebrar? Neste caso, como a empresa não tem acesso ao hardware o provedor do serviço de cloud computing deve se preocupar com isso e muitas outras coisas. Essa questão ainda pode se tornar uma vantagem competitiva para a empresa, isso porque a empresa poderá focar em outras coisas de seu negócio e se preocupar menos com alguns pontos que serão comentados a seguir.

Outra questão é a redução de custos, usando um serviço de cloud computing a empresa não precisa se preocupar com a manutenção do hardware, com mão de obra para manter os serviços no ar, com a energia gasta etc. óbvio que tudo isso vai estar colocado nos preços de contratos / assinaturas pelo provedores para o uso dos serviços de computação na nuvem, mas provavelmente os gastos com isso serão infinitamente menores se comparados com a ideia da empresa construir seu próprio serviço de computação na nuvem etc.

A facilidade de se configurar esses serviços na nuvem também é um fator crucial para sua adoção pela empresas, até mesmo aspectos individuais como: controles de acesso, senhas etc. podem ser configurados facilmente muitas vezes por meio de interfaces, o que agiliza e muito na hora de colocar no ar seu serviço de computação na nuvem, sua aplicação etc.

Benefícios Cloud Computing
Imagem com exemplos de vantagens da computação na nuvem


😓 Desvantagens

Como é óbvio temos desvantagens na computação em nuvem, esses pontos são os mesmos que dificultam um pouco a adoção da mesma, por exemplo: segurança, escalabilidade, interoperabilidade, confiabilidade e disponibilidade.

Dos pontos citados acima talvez o mais impactante seja o fator da segurança, antes tínhamos um modelo onde nossas informações ou a de nossos sistemas ficavam armazenadas localmente, com a computação em nuvem essas informações ficam em locais normalmente desconhecidos por nós e não sabemos se existem mais dados sendo armazenados com os nosso, não temos muito controle também sobre o hardware, perdemos de certa forma o controle direto sobre as informações armazenadas etc, outra questão é o vazamento de dados, se as transferências de dados não forem criptografadas, representam um ponto adicional para possíveis fugas de dados.

Outro ponto próximo ao da segurança é a confiabilidade, quem nos garante que se o sistema falhar nossos dados na nuvem vão continuar intactos? O sistema falha muitas vezes? Sendo assim é nítido que as aplicações para a nuvem devem ser confiáveis, o serviço deve garantir que caso aconteçam falhas os dados permaneçam como estão e colocar de pé o quanto antes novamente os sistemas.

Atrelado à confiabilidade está a questão da disponibilidade, em sistemas / serviços na nuvem estamos fadados a depender de conexão com a internet, como também que o sistema ou serviço em si esteja no ar.

Normalmente, os serviços de computação em nuvem vão ser utilizados por várias empresas, ou seja, o uso de servidores e recursos compartilhados por diferentes empresas e utilizadores, favorece a possibilidade de falhas de acesso que geram acessos não autorizados. Com esse número grande de clientes utilizando os serviços de computação em nuvem, até mesmo “dividindo o mesmo espaço”, pode algum dia sobrecarregar o serviço e assim deixá-lo fora do ar.

A escalabilidade é um recurso fundamental da computação em nuvem como já vimos anteriormente, isso permite que os recursos usados ​​sejam alterados conforme necessário, mas para fazer isso, os aplicativos e seus dados devem ser suficientemente flexíveis, devem estar até mesmo estruturados para essa flexibilidade. Essa tarefa pode não ser simples e geralmente depende da implementação e da construção da aplicação e até mesmo de como o serviço de nuvem foi construído.

Um ponto que pode ser complicado para algumas empresas é o controle limitado, toda infraestrutura do serviço de cloud computing é controlado pelo provedor do serviço, dando ao cliente a opção de gerenciar apenas suas aplicações e dados, por exemplo, questões de mais baixo nível, como atualizações nos servidores, atualização de firmware [9] não são passadas aos clientes / usuários.

Outro ponto que pode deixar as empresas preocupadas é a questão da interoperabilidade, capacidade dos usuários de executar os seus programas e os seus dados em diferentes nuvens e plataformas, os usuários têm a preocupação de não conseguirem retirar seus dados e seus programas de uma nuvem e colocá-los em outra com relativa facilidade, havendo a sensação de que os dados ficam presos em uma determinada nuvem.


📚 Conteúdos extras

[1] “John McCarthy foi um cientista da computação estadunidense. Conhecido pelos estudos no campo da inteligência artificial e por ser o criador da linguagem de programação Lisp. Recebeu o Prêmio Turing de 1972 e a Medalha Nacional de Ciências dos Estados Unidos de 1991.”

[2] “J.C.R. Licklider, na íntegra Joseph Carl Robnett Licklider, nascido em 11 de março de 1915, St. Louis, Missouri, EUA — falecido em 26 de junho de 1990, Arlington, Massachusetts, cientista da computação americano que ajudou a estabelecer as bases para redes de computadores e ARPANET, a antecessora da Internet.”

[3] “Desde 1997, Ramnath K. Chellappa fundou o que é amplamente considerado como a primeira definição acadêmica de computação em nuvem, descrevendo-a como “um modelo computacional em que os limites não serão determinados pela tecnologia, mas pelas capacidades financeiras de todos”.”

[4] “A Salesforce foi fundada em 1999, nos Estados Unidos, por Marc Benioff, ex-executivo da Oracle. Atualmente, a companhia é uma das líderes mundiais em soluções de CRM, conhecida, principalmente, pela plataforma Sales Cloud. Ao longo de sua história, a Salesforce ganhou destaque no mercado por sua capacidade de inovação.”

[5] “A sigla ISDN (Integrated Services Digital Network) representa uma rede digital que integra serviços de diversas naturezas, como voz, dados, imagens etc, devendo substituir gradualmente a infra-estrutura física de comunicações, em que cada serviço tende a trafegar por segmentos independentes.”

[6] “Um centro de processamento de dados, também conhecido como data center, é um local onde estão concentrados os sistemas computacionais de uma empresa ou organização, como um sistema de telecomunicações ou um sistema de armazenamento de dados, além do fornecimento de energia para a instalação.”

[7] “VPN significa “Virtual Private Network” (rede virtual privada): um serviço que protege a sua conexão de Internet e privacidade online. Ela cria um túnel criptografado para os seus dados, protege a sua identidade online, oculta o seu endereço de IP e permite que você use pontos de acesso de Wi-Fi públicos com segurança.

[8] “Um firewall é um dispositivo de segurança da rede que monitora o tráfego de rede de entrada e saída e decide permitir ou bloquear tráfegos específicos de acordo com um conjunto definido de regras de segurança.”

[9] “Em eletrônica e computação, firmware é uma classe específica de software de computador que fornece controle de baixo nível para o hardware específico do dispositivo”


🔗 Fontes

Top comments (0)