051.3 Lição 1
Certificação: |
Open Source Essentials |
---|---|
Versão: |
1.0 |
Tópico: |
051 Os fundamentos do software |
Objetivo: |
051.3 Arquitetura no local ou em nuvem |
Lição: |
1 de 1 |
Introdução
Hoje em dia, só se fala em nuvem. As empresas estão avaliando serviços de diversos provedores — incluindo grandes empresas como Amazon.com e Microsoft — para ver o que a nuvem pode oferecer.
Mas a ideia da computação em nuvem remonta apenas ao final da década de 2000. E o termo é vago — tão vago que muitas pessoas, incluindo a Free Software Foundation, desencorajam seu uso.
No entanto, a ideia da computação em nuvem incorpora alguns conceitos específicos bastante úteis, além de ser uma tendência incontornável da computação moderna. Esta lição analisa o que é a nuvem e, num nível mais alto, como ela funciona, tanto no aspecto técnico como no financeiro. Vamos conhecer os benefícios e riscos da nuvem e, ao mesmo tempo, por que este tópico está relacionado ao código aberto.
Computação no local e em nuvem
Se você trabalha ou estuda em uma organização que possui um certo número de computadores, é quase inevitável que ela tenha um data center: uma sala separada para armazenar os servidores da organização, geralmente trancada e climatizada. Um data center no local (ou on-premise) é simplesmente aquele que a organização mantém para seu próprio uso.
Existem diversas alternativas para manter um data center localmente. Durante décadas, antes da tendência que chamamos de “computação em nuvem”, as empresas montavam data centers para hospedar computadores pertencentes aos clientes. Assim, era possível licenciar cinco servidores da empresa, fornecer a ela diversas especificações para a CPU, memória e armazenamento e, em seguida, carregar seu software nos servidores. Este modelo de negócios é chamado de hospedagem remota.
A hospedagem remota tem muitas vantagens. Ela permite a uma organização terceirizar a experiência administrativa de compra e configuração de servidores; por sua vez, a empresa de hospedagem ganharia com o volume de clientes. Em outras palavras, o cliente evita a responsabilidade de montar e manter uma infraestrutura de TI local. A empresa de hospedagem remota garante a segurança física, aliviando também o cliente dessa preocupação. Por fim, configurar um novo servidor em uma empresa de hospedagem remota é muito mais rápido do que comprar, enviar e configurar o servidor localmente.
Uma organização também pode manter um data center local enquanto licencia mais servidores num ambiente remoto para se recuperar após um desastre ou obter potência computacional extra durante períodos de uso intenso.
É importante notar que a computação remota pressupõe a existência de uma rede rápida e confiável. Vamos analisar essa questão, bem como outros benefícios e pontos fracos, em outra seção.
Todas as vantagens da hospedagem remota também se aplicam à computação em nuvem. A computação em nuvem é tecnicamente diferente porque nenhum computador físico específico é dedicado à uma única organização. Em vez disso, o provedor de serviços em nuvem mantém diversos sistemas rodando para vários clientes em cada sistema físico, usando uma camada extra de software conhecida como máquinas virtuais.
Assim, um serviço em nuvem administra um data center como qualquer outra organização, mas atende a outras organizações em vez de (ou além de) a si mesmo. O data center armazena milhares de computadores físicos. Em cada computador físico é executado um sistema operacional (geralmente chamado de hipervisor) que suporta múltiplas máquinas virtuais. As máquinas virtuais podem ser geradas e excluídas rapidamente. Cada máquina virtual suporta um sistema operacional executado por um cliente (Computação em nuvem).
![cloud computing](./images/cloud-computing.jpg)
Mas onde entram o software livre e o código aberto? Quando uma empresa possui um grande número de computadores e implanta sistemas operacionais dinamicamente, é importante não ter a preocupação extra de lidar com licenças. Embora existam modelos de licenciamento para sistemas operacionais proprietários na nuvem, eles são bem mais complicados do que simplesmente executar uma máquina virtual e um sistema operacional de código aberto. Além disso, o código aberto geralmente é gratuito.
O início da computação em nuvem remonta ao lançamento do Amazon Web Services (AWS) pela Amazon.com em 2006. Existem atualmente dezenas de empresas de serviços em nuvem, incluindo grandes nomes como Microsoft, Google, Alibaba e IBM. O AWS ainda é o maior de todos. Os provedores competem ferozmente no desenvolvimento de novos recursos e serviços, pois todos são fortes em termos de custo e confiabilidade.
As vantagens da computação em nuvem vêm na esteira da computação remota. Os custos são mais baixos porque um sistema físico tem a capacidade de executar diversos servidores para múltiplos clientes e pode ser mantido constantemente ocupado. Se um cliente precisar de mais poder de computação rapidamente, no caso de um pico de uso, é possível gerar novos sistemas em segundos. Os sistemas podem ser gerenciados automaticamente por meio de uma interface de programação de aplicativos (API). Examinaremos mais de perto os benefícios e riscos em breve.
Modelos comuns de operação em nuvem
Antes de detalhar os modelos de operação, vale destacar que muitas empresas têm adotado modelos em nuvem que mudam totalmente a sua forma de programar e oferecer serviços. Em vez de atualizar cada aplicativo uma ou duas vezes por ano, é possível fazer atualizações rápidas, uma vez que a nuvem permite desligar máquinas virtuais e iniciar outras novas quase instantaneamente com a nova versão do aplicativo. A organização também pode aumentar ou diminuir rapidamente a operação, dividindo para isso os aplicativos em diversas partes modulares, também chamadas de microsserviços.
Mas, nesta seção, vamos nos concentrar nos modelos de nuvem de uso cotidiano.
O modelo de custo da nuvem é muito diferente dos custos da computação local. Os data centers locais exigem a aquisição de um servidor, além das despesas rotineiras com energia, ar condicionado e administração. Isso tudo desaparece quando você contrata os sistemas de um provedor de nuvem. Nesse caso, você será cobrado pelo que usar. Os provedores de nuvem dividem o uso do seu computador em períodos de tempo e cobram por cada período. Eles também cobram pela quantidade de dados armazenados em seus sistemas.
Até agora, falamos sobre provedores que oferecem poder computacional aos clientes; isso é o que se chama de nuvem pública. Mas também pode haver uma nuvem privada. Algumas grandes organizações administram seus próprios data centers locais como uma nuvem. Eles fornecem serviços apenas para seus próprios departamentos ou subdivisões, mas tratam cada um de seus departamentos como se fossem clientes de um provedor de nuvem. O data center monitora quanto tempo de computação, dados, etc. são usados por cada departamento e cobra por esse uso.
Muitas organizações usam diversos serviços de nuvem por vários motivos, como a proteção contra falhas de provedores, manter dados em uma determinada região geográfica ou aproveitar recursos especiais oferecidos por um provedor específico. Além disso, é comum manter um data center local mais servidores na nuvem, uma prática chamada de computação híbrida.
Um cliente que se inscreve em um serviço de nuvem pode escolher em quais regiões geográficas prefere operar. Por exemplo, a Amazon oferece atualmente regiões no oeste dos EUA, no leste dos EUA, em diversas áreas da Europa e em todas as partes do mundo. Normalmente escolhemos a região mais próxima. Mas muitas organizações desejam operar em múltiplas regiões porque têm escopo internacional. Às vezes, as organizações precisam manter os dados em um local específico para aderir ao Regulamento Geral de Proteção de Dados (RGPD) da Europa ou à Lei de Proteção de Informações Pessoais (PIPL) da China.
Cada região normalmente é subdividida em zonas ou zonas de disponibilidade. A execução em várias zonas é recomendada no caso de um desastre causar a queda de uma zona.
Embora a nuvem seja notável por compartilhar computadores físicos entre diversos clientes, alguns provedores podem dedicar um único computador a um cliente específico que esteja preocupado com a segurança. Como nenhuma outra organização usa o computador, o cliente se sente um pouco mais seguro ao executar seus serviços confidenciais e ao enviar seus dados para a nuvem. Esta opção aproxima a computação em nuvem da antiga hospedagem remota.
Os tipos mais comuns de serviços em nuvem
Em diferentes níveis, a computação em nuvem parece muito diferente e destina-se a diferentes tipos de usuários.
A Infraestrutura como serviço (IaaS) é a categoria que geralmente é de responsabilidade dos administradores de sistema. A IaaS fornece apenas o hardware e o software que suportam as máquinas virtuais. Cabe aos administradores de sistema do cliente carregar um sistema operacional e os aplicativos desejados na máquina virtual. O administrador do sistema trata quase tudo da mesma forma que num data center local.
A Plataforma como serviço (PaaS) é uma invenção mais recente, usada principalmente por programadores. Aqui, o programador não se preocupa com o sistema operacional e não precisa carregar as bibliotecas que o programa utiliza. Tudo isso é feito pelo provedor de nuvem. O programador apenas carrega as funções que rodam na plataforma. Um conceito relacionado é a computação sem servidor.
O Software como serviço (SaaS) é um aplicativo executado em um sistema em nuvem. Cada vez que você faz login em um site de mídia social, encomenda um item em uma loja online, visita uma página web para inserir suas horas de trabalho no sistema da empresa ou responde a um formulário em um site governamental, você está usando SaaS. A maior parte do aplicativo está sendo executada no sistema remoto, e a única parte do aplicativo em execução no seu computador é a página web exibida pelo navegador.
O Banco de dados como serviço (DaaS) é frequentemente adicionado às categorias anteriores. Um serviço de dados, o S3 da Amazon, foi na verdade a primeira oferta de serviços em nuvem. Uma oferta de DaaS pode ser simplesmente uma instância de um servidor de banco de dados popular, como MySQL, Oracle ou MongoDB, executado na nuvem. Os grandes provedores de nuvem também oferecem bancos de dados proprietários que são executados apenas em suas ofertas de nuvem. De qualquer forma, você lê e grava o banco de dados como se ele estivesse em seus próprios sistemas.
Outras variações dessas categorias básicas são oferecidas por algumas empresas, como a Segurança como serviço.
Vantagens e riscos da computação em nuvem e da infraestrutura de TI local
Antes de examinar em mais detalhes a computação em nuvem, vamos propor uma analogia. Administrar um data center local é como comprar uma casa. Se o porão inundar ou a caldeira parar de funcionar, você precisará chamar alguém pra consertar. Por sua vez, a hospedagem remota e a computação em nuvem são como alugar um apartamento: o proprietário é o responsável por consertar a caldeira. Além disso, na nuvem você pode adicionar e remover cargas de dados rapidamente, assim como pode mudar de apartamento mais rápido do que se precisasse antes vender o imóvel.
Num apartamento, o proprietário pode até fornecer os eletrodomésticos e móveis. Na nossa analogia, isso seria comparável aos diversos serviços que os provedores de nuvem oferecem, como bancos de dados e dados analíticos.
Agora podemos analisar as vantagens e riscos de se usar a nuvem em vez do seu próprio data center ou como complemento a ele.
A flexibilidade é provavelmente o motivo mais convincente para migrar para a nuvem. Se você for um varejista que precisa operar mais servidores perto do Natal ou um contador que faz hora extra na época da declaração do imposto de renda, a nuvem permite ativar novos servidores a qualquer momento e depois excluir as máquinas virtuais quando a poeira baixar.
Os custos podem ser menores na nuvem por diversos motivos. Você está compartilhando um servidor físico com muitos outros aplicativos, de modo que os computadores são aproveitados de forma mais eficiente. Como os provedores de nuvem são grandes, eles podem obter economias de escala em compras, administração, refrigeração e outros requisitos de infraestrutura. Finalmente, os clientes são liberados de uma série de tarefas administrativas – embora a administração do sistema não vá deixar de existir. Ainda serão necessários administradores de sistema para criar e fazer upload de seu software (conhecido como instâncias na nuvem), autorizar usuários e outras tarefas relacionadas às operações comerciais. Os administradores de sistema precisam aprender a usar a API do provedor e as regras de utilização do serviço, um custo de treinamento que deve ser levado em consideração.
Por outro lado, é preciso ter cuidado com o uso que fazemos da nuvem. Pode ser difícil controlar o uso do computador ao se ativar servidores rapidamente, especialmente se o escalonamento for automatizado. Você pode ser surpreendido com uma fatura desagradavelmente elevada no final do período.
A nuvem é mais eficiente em termos de emissões de carbono do que hospedar seus próprios computadores? Pesquisas mostram que os provedores de nuvem podem rodar seus sistemas com muito mais eficiência do que você ou eu. Mas somos obrigados a nos comunicar com esses sistemas através de uma rede, o que requer muita eletricidade para alimentar todos os equipamentos. Assim, infelizmente, a nuvem aumenta a nossa pegada de carbono.
A disponibilidade do serviço às vezes é melhor com a nuvem. Claro, se você depende de seu próprio data center local, estará vulnerável a todos os tipos de problemas, de desastres naturais a sabotadores internos mal-intencionados. Mas os data centers na nuvem também caem. Portanto, é melhor aproveitar as diferentes zonas de disponibilidade e distribuir o risco. Existem ferramentas que permitem transferir seus serviços de uma zona com falhas para uma zona funcional.
Se você usar os serviços oferecidos pelo provedor de nuvem, como um banco de dados, estará vulnerável a bugs nesse serviço. Claro que os bugs também acontecem no software instalado em seu sistema.
Um risco maior no uso de serviços de provedores é ficar preso a eles. Geralmente é possível encontrar uma ferramenta de conversão automatizada para transferir seus dados do sistema do provedor para um novo, mas a ferramenta nem sempre faz um trabalho completo.
A segurança pode ser melhor na nuvem porque a equipe do provedor é provavelmente mais especializada do que a sua própria equipe de segurança. Por outro lado, os provedores de nuvem são grandes e muito conhecidos, sendo assim alvos óbvios para ataques. Além disso, o acréscimo de um software extra — o hipervisor que controla as máquinas virtuais — introduz um novo perigo em potencial. Os pesquisadores encontraram vulnerabilidades em hipervisores.
Embora o cliente continue sendo o proprietário legal de seus dados, armazená-los na nuvem teoricamente os deixa mais vulneráveis. Normalmente, o cliente criptografa os dados para protegê-los em caso de invasão. As regulamentações de privacidade, como o RGPD mencionado anteriormente, exigem que os dados sejam armazenados em um data center em uma região considerada segura.
Em última análise, a maioria dos ataques à segurança é iniciado em alto nível, como o envio de um e-mail com malware a um funcionário desavisado. Não importa se você está executando no local ou na nuvem. Mas um invasor mal-intencionado que assume o controle da conta de um funcionário não irá muito longe, a menos que possa tirar vantagem das vulnerabilidades em seus servidores; aqui também, não está claro se a execução na nuvem faz muita diferença, já que a maioria das vulnerabilidades é encontrada no software e não no serviço de nuvem.
Finalmente, considere os custos de largura de banda e rede. Seus clientes, e provavelmente sua equipe, estão se comunicando com servidores que podem estar a centenas de quilômetros de distância. Se a conexão de rede for pouco confiável ou lenta, o desempenho dos servidores em nuvem será pior do que o do data center local. Mas hoje em dia, todo mundo se conecta com trabalhadores remotos, serviços SaaS e outros sistemas geograficamente distantes. O desempenho da sua rede afetará quase tudo o que você faz, esteja ou não na nuvem.
Exercícios Guiados
-
Por que um computador físico em um centro de nuvem é usado de forma mais eficiente do que um computador em um centro de dados local tradicional?
-
O que é uma nuvem híbrida?
-
Que tipo de computação em nuvem geralmente exige a presença de um administrador de sistema no lado do cliente?
-
Como proteger seu serviço contra apagões ao usar um provedor de nuvem?
Exercícios Exploratórios
-
Compare os diferentes tipos de custos para executar servidores na nuvem com os custos de executá-los no local.
-
Você opera no Oriente Médio, mas tem muitos clientes na Europa e no Extremo Oriente. Descreva onde colocaria seus serviços em uma oferta na nuvem.
Resumo
Esta lição descreve o funcionamento da computação em nuvem e as vantagens de usar a nuvem em vez de executar sistemas em um data center local. Analisamos diferentes modelos de negócios e custos, incluindo as diferenças entre nuvens públicas, privadas e híbridas. Também tratamos dos tipos principais de ofertas de nuvem e os usos de cada um deles.
Respostas aos Exercícios Guiados
-
Por que um computador físico em um centro de nuvem é usado de forma mais eficiente do que um computador em um centro de dados local tradicional?
Na nuvem, cada computador pode executar múltiplas instâncias de sistemas operacionais e até mesmo executar instâncias enviadas por diferentes clientes. Portanto, o computador fica mais tempo em uso.
-
O que é uma nuvem híbrida?
Uma nuvem híbrida emprega data centers de um provedor de nuvem e um ou mais data centers locais.
-
Que tipo de computação em nuvem geralmente exige a presença de um administrador de sistema no lado do cliente?
A infraestrutura como serviço (IaaS) exige que o cliente execute a administração do sistema para tarefas como a criação e upload de instâncias do sistema operacional e aplicativos.
-
Como proteger seu serviço contra apagões ao usar um provedor de nuvem?
Escolhendo diversas zonas em cada região onde o serviço é executado, pois é altamente improvável que diversas zonas falhem simultaneamente.
Respostas aos exercícios exploratórios
-
Compare os diferentes tipos de custos para executar servidores na nuvem com os custos de executá-los no local.
Em uma nuvem, você paga pelo uso da CPU e pelo armazenamento de dados por cada período medido pelo provedor. Mas não há nenhum custo pela compra do hardware. No local, há o custo fixo do hardware e outros equipamentos como o ar-condicionado, além de custos recorrentes como energia e manutenção física.
-
Você opera no Oriente Médio, mas tem muitos clientes na Europa e no Extremo Oriente. Descreva onde colocaria seus serviços em uma oferta na nuvem.
Escolha uma região do Oriente Médio para seus próprios escritórios e clientes locais. Uma região na Europa é importante para cumprir o Regulamento Geral de Proteção de Dados (RGPD). Talvez você precise de uma região na China para cumprir a Lei de Proteção de Informações Pessoais (PIPL) da China. De qualquer forma, vale a pena utilizar regiões no Extremo Oriente e na Europa para garantir um melhor desempenho na interação com os clientes nesses locais.
Dentro de cada região, escolha diversas zonas para se proteger contra a falha de uma única zona.