Baixe o app para aproveitar ainda mais
Prévia do material em texto
Indaial – 2020 Fundamentos ao Cloud Computing e deploy na nuvem Prof. Airan Arinê Possamai Prof. Marcio Poffo Prof. Nader Ghoddosi Prof.ª Neli Miglioli Sabadin Prof. Pedro Sidnei Zanchett Prof.ª Simone Erbs da Costa 1a Edição Copyright © UNIASSELVI 2020 Elaboração: Prof. Airan Arinê Possamai Prof. Marcio Poffo Prof. Nader Ghoddosi Prof.ª Neli Miglioli Sabadin Prof. Pedro Sidnei Zanchett Prof.ª Simone Erbs da Costa Revisão, Diagramação e Produção: Centro Universitário Leonardo da Vinci – UNIASSELVI Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri UNIASSELVI – Indaial. Impresso por: P856f Possamai, Airan Arinê Fundamentos ao cloud computing e deploy na nuvem. / Airan Arinê Possamai et.al. – Indaial: UNIASSELVI, 2020. 227 p.; il. ISBN 978-65-5663-329-9 ISBN Digital 978-65-5663-330-5 1. Computação em nuvem. – Brasil. I. Possamai, Airan Arinê. II. Poffo, Marcio. III. Ghoddosi, Nader. IV. Zanchett, Pedro Sidnei. V. Costa, Simone Erbs da. VI. Sabadin, Neli Miglioli. VII. Centro Universitário Leonardo Da Vinci. CDD 006.78 apresentação Atualmente, a computação em nuvem está sendo cada vez mais utilizada, sobretudo na prática conhecida como “sob demanda”, isto é, o pagamento pelo uso de recursos é realizado somente para a quantidade de recursos utilizada. Os serviços fornecidos, as APIs e os aplicativos que podem ser hospedados por estes provedores de nuvem substituíram a utilização de servidores locais, podendo ser citados os provedores comerciais Amazon e Google, dentro outros. Neste sentido, existem três modelos de serviços baseados em nuvem, sendo um deles o Software as a Service (SaaS), em que o consumidor utiliza um aplicativo sem controle do sistema, hardware e infraestrutura de rede. Outro modelo é a Plataforma como Serviço (PaaS), no qual os usuários controlam os aplicativos, mas não controlam sistema operacional, hardware e infraestrutura de rede. E por fim, existe o modelo de Infraestrutura como Serviço (IaaS), em que o usuário acessa recursos de computação fundamentais, como CPU, memória, middleware e armazenamento, mas o consumidor não controla a infraestrutura de nuvem abaixo deles. Existe também o conceito de nuvem chamado BaaS (Back-end as Service), o qual é ideal para abstrair algumas das tarefas repetitivas em aplicações, mobile ou web, como login e storage de arquivos, por exemplo, não se preocupando com a infraestrutura envolvida. Além disso, com a utilização deste modelo de serviço, se reduz os custos e se obtém a escalabilidade elástica. Um dos conceitos de computação em nuvem é o serverless computing, ou computação sem servidores, também conhecida por Function as a Service (FaaS), em que o provedor de nuvem possui o gerenciamento completo do contêiner onde as funções são executadas, para atendimento às solicitações, e, com isso, a necessidade de executar sistemas pode ser extinguida, passando a execução baseada em eventos, aumentando a possibilidade de criação de aplicações escalonáveis. Lembrando que estes tipos de serviços em nuvem são baseados na banda que um usuário possui de Internet e, portanto, bandas ruins significam que a utilização de recursos baseados em nuvem não é viável. Além disso, existe a questão de que usuários e organizações não se sentem confortáveis com o armazenamento de seus dados e aplicativos em uma infraestrutura que eles não controlam, sendo que a migração para uma infraestrutura compartilhada pode aumentar o potencial risco de acesso não autorizado, além de exposição de dados confidenciais. Neste sentido, sistemas baseados em nuvem precisam ser consistentes com relação à autenticação, o gerenciamento de identidade, conformidade e tecnologias relacionadas ao acesso, sendo estas imprescindíveis. A computação em nuvem possui uma das vantagens em diminuir o gasto de capital com compra de hardware e software, instalações e configurações em datacenters locais, eletricidade, além de especialistas de TI para o gerenciamento da infraestrutura. Além disso, dependendo modelo utilizado, normalmente o desenvolvedor não precisará se preocupar e ocupar seu tempo com configuração de infraestrutura para executar suas aplicações, reservando seu tempo unicamente com seu trabalho de desenvolvimento, melhorando com isso a produtividade. Outro benefício da computação em nuvem é a possibilidade de disponibilização de grandes quantidades de recursos de computação em minutos, muitas vezes com apenas alguns cliques, fornecendo flexibilidade e aliviando a pressão do planejamento de capacidade. Neste sentido, existem vários modelos de serviços, cada um com suas características, vantagens e desvantagens, se tornando mais ou menos produtiva ou barata para uma determinada organização ou equipe. Este livro fornece uma exploração de conceitos de computação em nuvem, como ela funciona, quais os tipos de serviços e plataformas, além do conceito serverless, containers e versionamento de deploy de aplicações para aprofundamento e entendimento de como se utilizar a computação em nuvem. Bons estudos! Prof. Airan Arinê Possamai. Prof. Marcio Poffo. Prof. Nader Ghoddosi. Prof. Pedro Sidnei Zanchett. Prof.ª Simone Erbs da Costa. Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi- dades em nosso material. Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato mais prático, que cabe na bolsa e facilita a leitura. O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra- mação no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo. Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente, apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilida- de de estudá-lo com versatilidade nas telas do celular, tablet ou computador. Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assun- to em questão. Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa continuar seus estudos com um material de qualidade. Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de Desempenho de Estudantes – ENADE. Bons estudos! NOTA Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela um novo conhecimento. Com o objetivo de enriquecer seu conhecimento, construímos, além do livro que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você terá contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complemen- tares, entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento. Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo. Conte conosco, estaremos juntos nesta caminhada! LEMBRETE sumário UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING .................................................... 1 TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO ......................... 3 1 INTRODUÇÃO .................................................................................................................................... 3 2 CONCEITOS DE CLOUD COMPUTING ...................................................................................... 4 2.1 ELASTICIDADE .............................................................................................................................. 7 2.2 DISPONIBILIDADE .......................................................................................................................7 2.3 ESCALABILIDADE ........................................................................................................................ 7 3 A NUVEM E O COTIDIANO ............................................................................................................ 8 3.1 SERVIÇOS DE ARMAZENAMENTO ......................................................................................... 9 3.2 SERVIÇOS DE COMUNICAÇÃO .............................................................................................. 10 3.2.1 Plataforma como um serviço (PaaS) .................................................................................. 12 3.2.1 Software como um serviço (SaaS)...................................................................................... 12 3.3 SERVIÇOS DE TRANSMISSÃO AO VIVO ............................................................................... 13 3.4 DEMAIS EXEMPLOS NO COTIDIANO ................................................................................... 15 4 A NUVEM E BIG DATA ................................................................................................................... 16 5 INFRAESTRUTURA COMO UM SERVIÇO (IAAS) ................................................................. 18 5.1 PLATAFORMAS DE IAAS .......................................................................................................... 20 5.1.1 DigitalOcean ......................................................................................................................... 20 5.1.2 Linode .................................................................................................................................... 21 5.1.3 Rackspace .............................................................................................................................. 22 5.1.4 Amazon Web Services (AWS) ............................................................................................ 22 5.1.5 Cisco Metapod...................................................................................................................... 23 5.1.6 Microsoft Azure ................................................................................................................... 24 5.1.7 Google Compute Engine (GCE) ........................................................................................ 25 RESUMO DO TÓPICO 1..................................................................................................................... 26 AUTOATIVIDADE .............................................................................................................................. 27 TÓPICO 2 — SOFTWARE COMO SERVIÇO - SAAS .................................................................. 29 1 INTRODUÇÃO .................................................................................................................................. 29 2 CONCEITO DE SAAS ...................................................................................................................... 30 3 CARACTERÍSTICAS DO SAAS .................................................................................................... 33 4 APLICAÇÕES SAAS EM CENÁRIOS DE BIG DATA ............................................................... 35 5 PLATAFORMAS DE SAAS.............................................................................................................. 37 5.1 GOOGLE APPS ............................................................................................................................. 37 5.2 ONEDRIVE .................................................................................................................................... 38 5.3 DROPBOX ...................................................................................................................................... 39 5.4 SALESFORCE ................................................................................................................................ 40 5.5 CISCO WEBEX .............................................................................................................................. 40 5.6 CONCUR........................................................................................................................................ 41 5.7 GOTOMEETING ........................................................................................................................... 41 5.8 GOOGLE BIGQUERY ................................................................................................................. 42 5.9 O GOOGLE DRIVE ...................................................................................................................... 43 RESUMO DO TÓPICO 2..................................................................................................................... 44 AUTOATIVIDADE .............................................................................................................................. 46 TÓPICO 3 — PLATAFORMA COMO SERVIÇO PAAS ............................................................... 47 1 INTRODUÇÃO .................................................................................................................................. 47 2 CONCEITOS DE PAAS .................................................................................................................... 47 4 VANTAGENS E DESVANTAGENS DO USO DE PAAS .......................................................... 54 5 APLICAÇÕES PAAS EM CENÁRIOS DE BIG DATA ............................................................... 55 6 PLATAFORMAS DE PAAS .............................................................................................................. 57 6.1 AWS ELASTIC BEANSTALK .............................................................................................. 57 6.2 WINDOWS AZURE PLATFORM (WAP) .................................................................................. 58 6.3 HEROKU ........................................................................................................................................ 60 6.4 FORCE.COM ................................................................................................................................. 61 6.5 GOOGLE APP ENGINE .............................................................................................................. 62 6.6 APACHE STRATOS ...................................................................................................................... 63 6.7 OPENSHIFT ................................................................................................................................... 64 6.7.1 Red Hat OpenShift............................................................................................................... 65 6.8 IBM .................................................................................................................................................. 66 6.9 JELASTIC ....................................................................................................................................... 67 LEITURA COMPLEMENTAR ............................................................................................................ 68 RESUMO DO TÓPICO 3..................................................................................................................... 72 AUTOATIVIDADE .............................................................................................................................. 74 REFERÊNCIAS ...................................................................................................................................... 76 UNIDADE 2 — SERVERLESS, BACK-END AS SERVICE (BAAS) E FUNÇÃO COMO SERVIÇO (FAAS) .................................................................................................................................. 83 TÓPICO 1 — SERVERLESS .................................................................................................................85 1 INTRODUÇÃO .................................................................................................................................. 85 2 CONCEITOS DE SERVERLESS ...................................................................................................... 86 2.1 SERVERLESS COMO COMPUTAÇÃO ORIENTADA A EVENTOS .................................... 87 2.2 ESTRUTURA DA ARQUITETURA SERVERLESS ................................................................... 88 2.3 SERVERLESS: FUNÇÃO COMO UM SERVIÇO ..................................................................... 90 3 FUNÇÕES E OBJETIVOS ................................................................................................................ 90 4 SERVERLESS E CLOUD COMPUTING ......................................................................................... 92 4.1 PRINCIPAIS DIFERENÇAS ENTRE COMPUTAÇÃO SERVERLESS E CONSTRUIR A INFRAESTRUTURA DO ZERO .................................................................................................. 93 4.1.1 Desenvolvimento de aplicações......................................................................................... 93 4.1.2 Processos independentes .................................................................................................... 94 5 POR QUE USAR SERVERLESS ....................................................................................................... 97 5.1 DESENVOLVIMENTO E IMPLANTAÇÃO RÁPIDA............................................................. 97 5.2 BAIXO CUSTO .............................................................................................................................. 98 5.3 ESCALONABILIDADE SOB DEMANDA ................................................................................ 98 5.4 REDUZIR O TEMPO DE ATIVAÇÃO DA APLICAÇÃO ....................................................... 99 5.5 ALTA DISPONIBILIDADE DA APLICAÇÃO ......................................................................... 99 5.6 SEPARAÇÃO DE PREOCUPAÇÕES POR COMPONENTES ............................................... 99 RESUMO DO TÓPICO 1................................................................................................................... 100 AUTOATIVIDADE ............................................................................................................................ 102 TÓPICO 2 — BACK-END AS SERVICE - BAAS............................................................................ 105 1 INTRODUÇÃO ................................................................................................................................ 105 2 APLICAÇÕES ................................................................................................................................... 106 3 CONCEITOS DE BACK-END AS A SERVICE - BAAS ............................................................. 106 4 ARQUITETURA DE BAAS ............................................................................................................ 108 5 DIFERENÇA ENTRE FRONT-END E BACK-END .................................................................... 108 6 RAZÕES PARA USAR BAAS ........................................................................................................ 110 6.1 RAZÕES COMERCIAIS ............................................................................................................. 110 6.2 RAZÕES TÉCNICAS ................................................................................................................. 111 7 QUANDO UTILIZAR UM BAAS? ............................................................................................... 111 7.1 VANTAGENS DE UM BAAS .................................................................................................... 112 7.2 DESVANTAGENS DE UM BAAS ............................................................................................ 112 8 BAAS E SEUS RECURSOS ............................................................................................................ 113 8.1 IAAS X PAAS X BAAS ............................................................................................................... 113 8.1.1 Azure Mobile Apps ........................................................................................................... 115 8.1.2 Back4App ............................................................................................................................ 115 8.1.3 Firebase................................................................................................................................ 116 8.1.4 Parse ..................................................................................................................................... 116 8.1.5 CloudKit .............................................................................................................................. 117 8.1.6 Kinvey ................................................................................................................................. 117 8.1.7 AWS Ampify ....................................................................................................................... 118 8.1.8 Kii ......................................................................................................................................... 118 8.1.9 Kumulos .............................................................................................................................. 118 9 MERCADO ........................................................................................................................................ 119 RESUMO DO TÓPICO 2................................................................................................................... 120 AUTOATIVIDADE ............................................................................................................................ 121 TÓPICO 3 — FUNÇÃO COMO SERVIÇO (FAAS) ..................................................................... 123 1 INTRODUÇÃO ................................................................................................................................ 123 2 CONCEITOS ..................................................................................................................................... 124 3 FUNÇÕES COMO SERVIÇO ........................................................................................................ 126 4 ESCALABILIDADE ......................................................................................................................... 128 5 SEGURANÇA ................................................................................................................................... 128 6 CUSTOS RELACIONADOS.......................................................................................................... 128 7 CASOS DE APLICAÇÕES ............................................................................................................. 129 8 APLICAÇÕES EM CENÁRIOS DE BIG DATA ......................................................................... 130 9 DESVANTAGENS ........................................................................................................................... 131 10 PLATAFORMAS DE FAAS .......................................................................................................... 131 10.1 AWS LAMBDA .......................................................................................................................... 131 10.2 GOOGLE CLOUD FUNCTIONS ............................................................................................. 136 10.3 MICROSOFT AZURE FUNCTIONS ...................................................................................... 140 10.4 IBM CLOUD FUNCTIONS ...................................................................................................... 142 LEITURA COMPLEMENTAR ..........................................................................................................145 RESUMO DO TÓPICO 3................................................................................................................... 147 AUTOATIVIDADE ............................................................................................................................ 149 REFERÊNCIAS .................................................................................................................................... 151 UNIDADE 3 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO ................ 153 TÓPICO 1 — CONTÊINERES COMO SUPORTE AO DESENVOLVIMENTO .................... 155 1 INTRODUÇÃO ................................................................................................................................ 155 2 CONCEITOS ..................................................................................................................................... 155 2.1 INTRODUÇÃO AOS CONTÊINERES .................................................................................... 156 2.2 QUANDO USAR DOCKER ...................................................................................................... 158 3 TRABALHANDO COM OS CONTÊINERES ............................................................................ 159 RESUMO DO TÓPICO 1................................................................................................................... 172 AUTOATIVIDADE ............................................................................................................................ 173 TÓPICO 2 — CONTÊINER COMO SERVIÇO (CAAS) ............................................................. 175 1 INTRODUÇÃO ............................................................................................................................... 175 2 CONCEITOS .................................................................................................................................... 175 3 CASOS DE APLICAÇÕES ............................................................................................................ 178 4 O FUNCIONAMENTO ................................................................................................................. 178 5 DESVANTAGENS .......................................................................................................................... 180 6 PLATAFORMAS DE CAAS .......................................................................................................... 180 6.1 AMAZON EC2 CONTAINER SERVICE (ECS) ..................................................................... 181 6.2 GOOGLE CONTÊINER ENGINE (GKE) .............................................................................. 191 6.3 SERVIÇO DE CONTÊINER DO AZURE (ACS) .................................................................... 192 RESUMO DO TÓPICO 2................................................................................................................... 195 AUTOATIVIDADE ............................................................................................................................ 196 TÓPICO 3 — VERSIONAMENTO E DEPLOY EM NUVEM .................................................... 197 1 INTRODUÇÃO ................................................................................................................................ 197 2 CONCEITOS DE VERSIONAMENTO ....................................................................................... 197 2.1 O SISTEMA DISTRIBUÍDO GIT ............................................................................................... 202 2.2 FERRAMENTAS ......................................................................................................................... 206 3 CONCEITOS DE DEPLOY ............................................................................................................ 210 4 AUTOMAÇÃO DO DEPLOY EM NUVEM ............................................................................... 212 LEITURA COMPLEMENTAR .......................................................................................................... 214 RESUMO DO TÓPICO 3................................................................................................................... 222 AUTOATIVIDADE ............................................................................................................................ 223 REFERÊNCIAS .................................................................................................................................... 224 1 UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING OBJETIVOS DE APRENDIZAGEM PLANO DE ESTUDOS A partir do estudo desta unidade, você deverá ser capaz de: • conhecer os fundamentos de cloud computing; • compreender e introduzir a computação em nuvem; • conhecer exemplos de computação em nuvem no cotidiano; • conhecer quais os principais recursos disponibilizados em nuvem; • conhecer os três grandes modelos de serviços em nuvem. Esta unidade está dividida em três tópicos. No decorrer da unidade, você encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado. TÓPICO 1 - INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO TÓPICO 2 - SOFTWARE COMO SERVIÇO – SAAS TÓPICO 3 - PLATAFORMA COMO SERVIÇO – PAAS Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure um ambiente que facilite a concentração, assim absorverá melhor as informações. CHAMADA 2 3 TÓPICO 1 — UNIDADE 1 INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 1 INTRODUÇÃO Você que é profissional ou estudante de Tecnologia da Informação (TI) sabe que muitos termos da área foram muito instigados, sendo um deles o cloud computing, muito utilizado no mundo das corporações. Neste sentido, muitas empresas utilizam esta tecnologia, as quais percebem as vantagens que ela retorna. Em agosto de 1962, foi publicado o artigo, um dos mais famosos, chamado On-line ManC-Computer Communication, no qual foi escrito um dos conceitos iniciais do futuro da internet, sendo descrito como pessoas podem interagir com computador para desenvolvimento de diversas tarefas (BAI, 2015). Ainda segundo Bai (2015), neste artigo foi descrito como compartilhar o armazenamento de dados e também como os computadores podem auxiliar as pessoas para o desenvolvimento de tarefas complicadas através de colaboração on-line. O termo cloud computing está sendo analisado por executivos de Tecnologia de Informação, para que se tenha uma investigação desta tecnologia e de seus benefícios, dentre os quais a utilização de recursos ociosos de computadores sem a preocupação com investimentos em hardware (TAURION, 2009). Ainda segundo Taurion (2009), esta tecnologia está sendo estudada em vários artigos científicos, além de publicações e eventos da área, o que induz ser uma inovação com vantagens para as empresas. Durante muitos anos, equipes de desenvolvimento de software, assim como administradores de redes de computadores, têm usado uma abstração de nuvem para representar detalhes a comunicação de mensagens enviadas entre computadores na internet (JAMSA, 2013). Esta abstração de nuvem foi expandida através da inclusão de utilização tanto física quanto virtual de processadores, discos rígidos, serviços de software e aplicações mobiles (JAMSA, 2013). Aplicações baseadas em nuvem possuem novos recursos, os quais se pode pagar por uso de determinada velocidade de processador, quantidade de disco ou de memória RAM por exemplo, mas por outro lado, com recursos em nuvem, muitos são os desafios para a questão de segurança (JAMSA, 2013). Existem muitas definições diferentes para a computação em nuvem, sendo que muitas das definições não são claras, ressaltando que o termo nuvem se originou da área de telefonia (TAURION, 2009). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 4 Neste sentido, o termo computação em nuvem surgiu da indústria de TI, na qual vários fornecedores de TI começaram a disponibilizar recursos de computação,como armazenamento e serviço de hospedagem de aplicações com alcance em todo o mundo (BUYYA; BROBERG; GOSCINSKI, 2011). Este tipo de computação em nuvem teve sua evolução com os data centers, nos quais eram disponibilizados serviços pela rede ou pela internet, cujos clientes poderiam pagar pela sua utilização, ou seja, a alocação de recurso é baseada na utilização do cliente (BUYYA; BROBERG; GOSCINSKI, 2011). Com isso, se um cliente precisar de 1 GB de armazenamento de dados, é o valor referente a este espaço que ele paga, ou se precisar de um servidor de hospedagem para um site, será pago ao data center apenas os recursos necessários que sejam suficientes para manter o site funcional. Com a evolução destes serviços, a interoperabilidade e a usabilidade foi aumentando, e consequentemente o custo da computação em nuvem foi diminuindo (BUYYA; BROBERG; GOSCINSKI, 2011). Desenvolvedores mais avançados, fornecedores de recursos de TI e pesquisadores estão trabalhando para disseminar informações e conhecimentos a respeito das vantagens da utilização de recursos em nuvem (BUYYA; BROBERG; GOSCINSKI, 2011). 2 CONCEITOS DE CLOUD COMPUTING Cloud computing, ou computação em nuvem, pode ser compreendido pelo armazenamento de dados, assim como seu acesso, além de permitir a disponibilização de serviços pela Internet a partir de um computador remoto, em vez do disco rígido de um computador local (CHANDRASEKARAN, 2015). Segundo Chandrasekaran (2015), dentre as vantagens destes serviços remotos, podem ser citadas a escalabilidade e a elasticidade, por exemplo, sendo diferentes de uma simples máquina remota, e o termo nuvem, conforme entendido anteriormente, é uma metáfora utilizada na internet. Ainda segundo Chandrasekaran (2015), o armazenamento de dados em um disco rígido de um computador local é chamado de armazenamento local, assim como a execução de alguma aplicação, seja um programa ou um serviço, rodando em um computador local, o qual é denominado de computação local. TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 5 FIGURA 1 – EXEMPLO DE COMPUTAÇÃO EM NUVEM FONTE: Chandrasekaran (2015, p. 11) Com estas definições, é fácil compreender a diferença com a computação em nuvem, em que neste caso, é necessário acessar os dados ou executar uma aplicação ou serviço pela Internet, conforme ilustrado na Figura 1 (CHANDRASEKARAN, 2015). Ainda segundo Chandrasekaran (2015), o termo computação em nuvem foi originado do Instituto Nacional de Padrões e Tecnologia (NIST), que designa computação em nuvem como um modelo sob demanda para uso de recursos de computação configuráveis. Esta disponibilização de recursos computacionais, como servidores, armazenamento de dados, aplicações e serviços, podem ser rápida e facilmente liberados para os clientes, com pequeno esforço do provedor de serviços (CHANDRASEKARAN, 2015). Computação em nuvem se refere a aplicações desenvolvidas e disponibilizadas como serviços por provedores em data centers, oferecendo diferentes modelos de serviços para usuários finais (PATHAN; MONOWAR; FADLULLAH, 2013). A computação em nuvem, por possuir uma infraestrutura expansível, isto é, se precisar de mais recursos, basta adicionar novos, permite a disponibilização de serviços de streaming de vídeo, podendo oferecer programações ao vivo (PATHAN; MONOWAR; FADLULLAH, 2013). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 6 Segundo Taurion (2009, p. 2), cloud computing, ou computação em nuvem, pode ser definido como “um conjunto de recursos como capacidade de processamento, armazenamento, conectividade, plataformas, aplicações e serviços disponibilizados na internet”. Neste sentido, computação em nuvem pode ser descrita como sendo a virtualização de um data center, pois os recursos de servidores são disponibilizados através da internet para os clientes (TAURION, 2009). Computação em nuvem foi criado para descrever a sofisticada tecnologia de serviços e recursos de computação sob demanda, os quais foram disponibilizados inicialmente por provedores comerciais como Microsoft, Google e Amazon (BUYYA; BROBERG; GOSCINSKI, 2011). Estes provedores comerciais, assim como muitos outros, possuem parques computacionais com milhares de máquinas, assim como vários data centers espalhados pelo mundo (TAURION, 2009). Segundo Taurion (2009), algumas das características principais da computação em nuvem são: • a computação em nuvem pode criar ilusão de que os recursos em nuvem sejam infinitos; • com a computação em nuvem, não é necessário adquirir recursos antecipadamente; • a computação em nuvem permite que empresas usem apenas a quantidade de recursos necessários, podendo aumentar ou diminuir a quantidade; • a computação em nuvem permite que se pague os serviços utilizados pelo que se utiliza. De certa forma, pode ser considerado o retorno da centralização, pois computadores pessoais, neste cenário, podem ser utilizados apenas como forma de acesso a aplicações, serviços ou armazenamento de dados que rodam em servidores remotos (TAURION, 2009). Ainda segundo Taurion (2009), com a computação em nuvem, usuários que utilizam computadores pessoais com poucos recursos, podem ter acesso a ilimitados espaços de armazenamentos, em servidores remotos, ou ainda executar aplicações em servidores remotos que requisitam grande capacidade de processamento. Serviços que rodam em nuvem podem ser chamados de Cloud Services, podendo pertencer a duas categorias: computação em nuvem (cloud computing) e armazenamento em nuvem (cloud storage) (BAI, 2015). Ainda segundo Bai (2015), a computação em nuvem possui algumas vantagens em relação à arquitetura local, as quais são: elasticidade, disponibilidade e escalabilidade. TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 7 2.1 ELASTICIDADE A elasticidade significa o cliente de um serviço poder aumentar ou diminuir a demanda por um serviço, isto é, o cliente de um serviço pode, por exemplo, solicitar o aumento do espaço de armazenamento em nuvem, ou diminuir a capacidade de armazenamento (BAI, 2015). Outro exemplo para a elasticidade é um site que está hospedado em um servidor na nuvem, por um determinado período de tempo precisar rodar em mais servidores do que a quantidade normal, como por exemplo durante o Black Friday, para suportar a quantidade de usuários, mantendo uma resposta aceitável (BAI, 2015). Em um data center tradicional, esta característica de elasticidade é mais difícil, pois normalmente depende de aprovação, aquisição, instalação e testes de novos equipamentos de hardware, para permitir atender a demanda, havendo, normalmente, demora ou impossibilidade (BAI, 2015). 2.2 DISPONIBILIDADE A característica disponibilidade é a possibilidade de usuários poderem acessar serviços hospedados na nuvem em qualquer momento (dia, hora) e de qualquer lugar do mundo, e estando os serviços disponíveis, significa que estes estão funcionando perfeitamente (BAI, 2015). Normalmente, serviços na nuvem possuem redundância de servidores além de backups, garantindo que se um servidor cair, outro pode assumir no lugar para manter os serviços em perfeito funcionamento (BAI, 2015). 2.3 ESCALABILIDADE O termo escalabilidade pode ser compreendido em como um sistema suporta o aumento do número de usuários, mantendo a sua qualidade e eficiência, sendo que, neste caso, o aumento da capacidade de trabalho é o número que indica a quantidade (BAI, 2015). Em data centers tradicionais, a escalabilidade é alcançada melhorando os equipamentos de hardware, e uma situação para exemplificar, é um banco de dados estar com o uso de memória RAM no limite, e para resolver, basta adicionar mais memória, sendo conhecido por escalabilidade vertical (BAI, 2015). Escalabilidade vertical não possui limites, ao não ser alguns servidores físicos que possuem limites de memória RAM ou processadores, por exemplo, assim como máquinas virtuais também possuírem algumas limitações, mas geralmente, os provedoresde servidores em nuvem disponibilizam vários tamanhos ou configurações diferentes para que os clientes possam optar pelo mais adequado para seu uso (BAI, 2015). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 8 Se a escalabilidade vertical não resolver alguma determinada demanda para um cliente, é possível aplicar outro tipo de escalabilidade, a horizontal (BAI, 2015). A escalabilidade horizontal não altera as configurações dos servidores, mas ajusta a capacidade do sistema para permitir aumentar ou diminuir o número de servidores (BAI, 2015). Ainda segundo Bai (2015), a escalabilidade horizontal possui a vantagem de não limitar o espaço em disco de um servidor ou máquina virtual. 3 A NUVEM E O COTIDIANO Além da Amazon e Google, as quais possuem vários data centers pelo mundo, disponibilizando inúmeros recursos computacionais, assim como a IBM, a qual também entra nessa lista de provedores de serviços em nuvem, sendo um exemplo o seu portal de inovação chamado de Technology Adoption Program (TAP) (TAURION, 2009). Este portal permite que softwares experimentais desenvolvidos pela IBM sejam analisados e testados por seus próprios funcionários, quanto ao quesito de qualidade, funcionalidade e desempenho, e, para que estes testes fossem possíveis rodando em computadores locais, seria necessário a implementação de uma infraestrutura para cada funcionário (TAURION, 2009). Neste sentido, com a computação em nuvem, a equipe responsável pelo software apenas configura os recursos necessários no servidor e, disponibiliza facilmente e em poucos minutos para os funcionários testarem (TAURION, 2009). Outro exemplo de computação em nuvem foi uma incubadora de software criada na cidade de Wuxi, na China, tendo em vista que empresas incubadas não possuem muitos recursos financeiros, foi criada uma estrutura em nuvem para alocação de recursos conforme a necessidade (TAURION, 2009). Neste sentido, a computação em nuvem permite que se ocorrer uma alta demanda por recursos computacionais, basta alocar mais recursos, e, se a demanda diminuir, basta liberar estes recursos ociosos (TAURION, 2009). Ao invés de uma empresa perder tempo e recursos para montar um data center físico, ou ampliar seus recursos, como incluir mais espaço de armazenamento, por exemplo, com a computação em nuvem basta acessar o site de um provedor de serviços em nuvem e pagar pela ampliação dos recursos, o que pode estar disponível em poucos minutos (TAURION, 2009). Com isso, segundo Taurion (2009), a empresa não precisa alocar funcionários para a montagem de hardware, instalação de software, além de pagar por estes três recursos, fora a economia em energia elétrica. Outra vantagem da computação em nuvem é a questão das evoluções tecnológicas, em que equipamentos que são deteriorados com o tempo e precisam ser substituídos, ou mesmo uma nova necessidade em que se necessite de um determinado hardware mais moderno, em que neste modelo, a organização ou empresa não permanece refém dos equipamentos que possui no data center físico, podendo apenas alocar o recurso desejado (TAURION, 2009). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 9 3.1 SERVIÇOS DE ARMAZENAMENTO Um dos tipos de virtualização é a utilizada para armazenamento de dados, na qual inúmeros discos rígidos físicos podem ser combinados, formando um único sistema de armazenamento virtualizado, podendo aumentar a capacidade ou até a velocidade de gravação (CHANDRASEKARAN, 2015). Este tipo de virtualização, chamado de armazenamento em nuvem, pode ser concebido pelo armazenamento privado, disponibilizado o serviço por uma empresa, ou ainda por armazenamento público, como o DropBox, por exemplo, em que o armazenamento ocorre fora da empresa, mas também pode ser uma abordagem mista, isto é, privado e público (CHANDRASEKARAN, 2015). Ainda segundo Chandrasekaran (2015), na virtualização de armazenamento, os discos utilizados no armazenamento físico são considerados como uma única mídia de armazenamento virtual, sendo que este conceito de virtualização de armazenamento é preparado com técnicas de armazenamento como Storage Area Network (SAN) e Network Attached Storage (NAS). O termo SAN (Storage Area Network) pode ser melhor compreendido em http://www.infortrendbrasil.com.br/storage-san/ e em http://www.infortrendbrasil.com. br/dicas/diferencas-entre-nas-das-e-san/, assim como o termo NAS (Network Attached Storage). NOTA A virtualização de data centers permite um caminho para reduzir o uso ineficiente de recursos de computação, assim como a redução de energia elétrica, sabendo que um data center físico de uma organização atende a somente esta, e um data center virtual pode atender a várias organizações ou clientes (FAYNBERG; LU; SKULER, 2016). É possível que uma organização tenha um data center virtual, terceirizado e um outro data center físico, sendo os dois unidos por uma rede virtual privada (FAYNBERG; LU; SKULER, 2016). Uma das principais necessidades de um data center é o uso para armazenamento de dados, sendo que o tráfego na rede deve ter um bom desempenho para evitar que sistemas se tornem lentos (FAYNBERG; LU; SKULER, 2016). Com máquinas virtuais é possível realizar a alocação e desalocação fácil e rápida, o que permite alocação eficiente de recursos de computação, mas muitos processamentos executados nestes servidores podem gerar dados, os quais devem ser armazenados (SULLIVAN, 2010). Gerar dados localmente em um servidor que realizou o processamento pode ser útil quando os dados são temporários, http://www.infortrendbrasil.com.br/storage-san/ UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 10 porém se o servidor for desalocado, estes dados serão perdidos, e é por este motivo que o armazenamento em nuvem é útil (SULLIVAN, 2010). Através do armazenamento em nuvem, os dados antigos, assim como os novos, gerados recentemente, são armazenados de forma que possam ser disponibilizados em qualquer servidor em nuvem, levando em consideração restrições de controle de acesso (SULLIVAN, 2010). Com o provisionamento rápido de hardware e a utilização de armazenamento em nuvem, consequentemente é desencadeada a escalabilidade massiva (SULLIVAN, 2010). Com o acesso à internet disponibilizado cada vez para mais pessoas, o número de usuários e dispositivos conectados na grande rede está crescendo e, consequentemente, a quantidade de dados trafegada e armazenada também está aumentando (FAYNBERG; LU; SKULER, 2016). Segundo Faynberg, Lu e Skuler (2016), diariamente são trafegados mais de 1 exabyte de dados e, em 2011, mais de 1.8 exabyte de dados foram criados no mundo, e como a quantidade de dados está crescendo rapidamente, o armazenamento em nuvem deve avançar para suprir estas necessidades. 3.2 SERVIÇOS DE COMUNICAÇÃO A Web 2.0 permitiu que simples usuários da internet realizassem publicações sem a utilização de HTML, diretamente, sendo que ferramentas ou aplicações permitiram esta funcionalidade (JAMSA, 2013). FIGURA 2 – FERRAMENTAS DA WEB 2.0 FONTE: Jamsa (2013, p. 4) TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 11 A Figura 2 apresenta algumas das ferramentas que permitem usuários publicarem diretamente os conteúdos em nuvem, as quais estão descritas a seguir, conforme Jamsa (2013): • Blog: permite usuário publicar conteúdo na web. • Wiki: aplicação web que permite usuários colaborarem com o compartilhamento de documentos e assuntos. • Twitter: um mini blog que permite usuários enviarem mensagens para os seus seguidores. • Facebook: rede social que permite usuários postarem textos, fotos, vídeos. • Youtube: site que permite usuários realizarem upload de vídeos, sendo compartilhados com outros usuários da rede. As aplicações baseadas em nuvem disponibilizam aos usuários uma variedade de soluções, sendo que para análise e descrição destas aplicações, normalmente são utilizadas referências pelo seu modelo de implantação e modelos de serviço, conforme Figura 3 (JAMSA,2013). FIGURA 3 – MODELOS DE IMPLANTAÇÃO E SERVIÇOS DA NUVEM FONTE: Buyya, Broberg e Goscinski (2011, p. 14) Um modelo de implementação define como serviços são compartilhados em nuvem, e a interação de clientes (usuários e sistemas) pode ocorrer por diversas formas diferentes, como pelas chamadas de serviços, por exemplo (JAMSA, 2013). Conforme Jamsa (2013), os serviços da web podem ser divididos em até três grandes modelos ou tipos, sendo: • Software as a Service (SaaS): plataforma de aplicação com interface para o usuário, como redes sociais, por exemplo. UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 12 • Platform as a Service (PaaS): plataforma com a qual desenvolvedores podem implementar suas aplicações, como linguagens de programação, hardware (servidores, discos), sistema operacional, ferramentas de desenvolvimento etc. • Infraesrtucture as a Service (IaaS): fornecimento de computadores servidores, armazenamento de dados, Firewall, recursos de internet, entre outros. Os modelos SaaS e PaaS são brevemente introduzidos nos dois subtópicos a seguir, cujo estudo é mais aprofundado nos tópicos seguintes deste livro. O modelo IaaS está descrito na seção 5 deste tópico. 3.2.1 Software como um serviço (SaaS) Normalmente, o SaaS (Software as a Service) é baseado em uma aplicação para a qual o usuário terá acesso, e é necessária a utilização de um navegador de internet, sendo que a aplicação é hospedada em nuvem (JAMSA, 2013). Neste modelo, a vantagem é o usuário necessitar apenas de um dispositivo com acesso à internet e um navegador de internet (browser), porém, a desvantagem é a percepção do usuário quanto a segurança, pois os dados da empresa são armazenados em nuvem (JAMSA, 2013). FIGURA 4 – EXEMPLO DO MODELO SAAS FONTE: Jamsa (2013, p. 7) 3.2.2 Plataforma como um serviço (PaaS) O modelo de plataforma como serviço, ou PaaS (Platform as a Service), fornece recursos de hardware, podendo ser servidor físico ou virtual (VMs), sistemas operacionais, ferramentas para bancos de dados, assim como ferramentas de desenvolvimento e recursos de internet, tudo para permitir que desenvolvedores implantem suas soluções (JAMSA, 2013). Ainda segundo Jamsa (2013), estes recursos do PaaS, são gerenciados pelo provedor da plataforma, e desenvolvedores não precisam se preocupar com estes recursos, como TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 13 atualizações do sistema operacional, por exemplo, mas sim, focar no seu trabalho de desenvolvimento. A Figura 5 apresenta um exemplo do PaaS, na qual é possível analisar dois computadores usuários acessando serviços em nuvem. FIGURA 5 – EXEMPLO DO MODELO PAAS FONTE: Jamsa (2013, p. 7) 3.3 SERVIÇOS DE TRANSMISSÃO AO VIVO Streaming pode ser compreendido por ser um modo de transmissão de vídeo contínuo, enviando dados do provedor (fonte) diretamente para o receptor, assistindo o vídeo em tempo de execução, porém, a ação de um cliente baixar (download) um arquivo de vídeo para depois assistir, não é streaming, sendo conhecida por mídia não streaming (KANNAN et al., 2016). Neste sentido, televisão ou rádio pertencem a categoria streaming e Compact Discs (CDs) pertencem à categoria mídia não streaming ou non-streaming (KANNAN et al., 2016). No início dos anos 1990, o streaming existia, porém, era muito lento devido ao buffer, isto é, o vídeo iniciava e então logo parava para carregar mais uma parte do vídeo (buffering), tornando monótono para o cliente (KANNAN et al., 2016). Todavia, com o passar dos anos, e principalmente nos dias atuais, com a evolução dos equipamentos de hardware, com recursos cada vez melhores, além da banda de internet e com o aumento da capacidade de armazenamento, inclusive em nuvem, o streaming se tornou muito utilizado (KANNAN et al., 2016). O conceito de streaming é velho e pode ser exemplificado quando uma pessoa fala algo e o som é transportado até o ouvido de outra pessoa, e a partir daqui o cérebro decodifica a mensagem para ser compreendida (KANNAN et al., 2016). Este exemplo é parecido com o que ocorre com televisão ou rádio, situação em que o sinal é enviado por cabo, antena ou satélite para o receptor, o qual decodifica os sinais elétricos em pixels de imagens ou ondas sonoras, conforme ilustrado na Figura 6 (KANNAN et al., 2016). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 14 FIGURA 6 – ARQUITETURA DE STREAMING DO SERVIDOR PARA O CLIENTE FONTE: Kannan et al. (2016, p. 75) Vídeo pode ser compreendido por uma fita de imagens fixas que são apresentadas uma após a outra e FPS (Frame Per Second), sendo a quantidade de frames que um reprodutor de vídeo possui de capacidade para apresentar um após o outro (KANNAN et al., 2016). Neste sentido, com FPS mais baixo, a quantidade de dados necessária para rodar um vídeo é menor, mas o vídeo terá uma qualidade menor, sendo que um projeto utiliza entre 24 até 48 FPS para exibição de filmes em cinemas (KANNAN et al., 2016). Existe o software conhecido por codec, utilizado para comprimir o tamanho de vídeos, isto é, diminui a resolução de um vídeo, evitando dados desnecessários reduzindo consequentemente o tráfego de vídeos pela rede (KANNAN et al., 2016). A transferência de dados por streaming necessita que dados sejam rapidamente enviados e na ordem correta, sendo que protocolos especiais como o RTSP (Real-Time Streaming Protocol), RTP (Real-Time Transfer Protocol) e o RTCP (Real-Time Transport Control Protocol) (KANNAN et al., 2016). Ainda segundo Kannan et al. (2016), estes três protocolos trabalham em conjunto com TCP/IP, o qual converte os grandes arquivos de dados em pacotes enviando-os para rotas da rede (KANNAN et al., 2016). A arquitetura Peer-to-Peer (P2P) streaming tem sido muito utilizada para distribuir conteúdo multimídia ao vivo para inúmeros usuários da internet, permitindo a visualização a qualquer momento (KANNAN et al., 2016). Alguns serviços de streaming de vídeo integram os benefícios da tecnologia P2P e de computação em nuvem (PATHAN; MONOWAR; FADLULLAH, 2013). A arquitetura cloud-P2P pode ser analisada na Figura 6, pela qual pode ser notada uma nuvem que possui servidores que disponibilizam streaming de vídeo como multimídia, em que os clientes são identificados por C1, C2, C3 e C4, sendo o primeiro nível (PATHAN; MONOWAR; FADLULLAH, 2013). O alto nível de clientes é composto pelos identificadores HP11, HP12, HP21, HP31, HP32 e HP41, os quais podem ter contato com o primeiro ou com o alto nível de clientes, mas não conseguem contato diretamente com o provedor de streaming (PATHAN; MONOWAR; FADLULLAH, 2013). Os primeiros níveis de clientes escolhem um dos três serviços de pacotes disponibilizados, sendo que cada um possui um preço, atribuído dependendo da banda de velocidade por exemplo (PATHAN; MONOWAR; FADLULLAH, 2013). Os clientes de alto nível que quiserem oferecer seus serviços grátis, podem se conectar através dos pontos (P111, P112, P121, TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 15 P122, P212 etc.). Resumindo, a rede de streaming em nuvem é organizada em uma estrutura de camadas, em que o provedor de serviço possui o gerenciamento centralizado do contrato de políticas de uso dos serviços (PATHAN; MONOWAR; FADLULLAH, 2013). FIGURA 6 – ARQUITETURA CLOUD-P2P FONTE: Pathan, Monowar e Fadlullah (2013, p. 83) Existe também o serviço chamado de OTT (Over-The-Top), outro tipo de transmissão ao vivo, no qual emissoras de televisão utilizam o serviço de transmissão de seus programas ao vivo pela internet, (FONSECA; BOUTABA, 2015). Este serviço de compartilhamento de dados de imagens de televisão possibilita atingir uma grande parcela da população que utiliza mais a internet para uma infinidade de atividades, incluindo assistir jornais, filmes, séries, entre outros (FONSECA; BOUTABA, 2015). Uma consequência do serviço de OTT TV é qualquer pessoa pode se tornar um provedor de televisão pela internet, isto é, usuários de internet podem se tornargrandes fontes de informação, e uma das ferramentas que possibilitam isso é o Youtube (FONSECA; BOUTABA, 2015). 3.4 DEMAIS EXEMPLOS NO COTIDIANO Máquina virtual pode ser compreendida por ser um programa que permite rodar outro sistema operacional dentro dele e, este programa roda dentro do sistema operacional principal do computador, isto é, dentro de um software específico de virtualização é possível instalar um outro sistema operacional (KANNAN et al., 2016). Isso pode ser útil na situação em que se necessite instalar um software incompatível com o sistema operacional instalado no computador. Por exemplo, o sistema operacional principal do computador ser Linux e houver a necessidade de utilizar o Microsoft Office, situação na qual pode ser instalado o sistema operacional Windows na máquina virtual para então instalar o Microsoft UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 16 Office (KANNAN et al., 2016). Ainda segundo Kannan et al. (2016), com máquina virtual, os recursos de hardware são compartilhados entre o sistema operacional do computador e com o sistema operacional da máquina virtual. Na computação em nuvem, uma das principais tecnologias emergindo é a virtualização, a qual auxilia na criação de um ambiente em nuvem, onde os recursos são otimizados através do compartilhamento (CHANDRASEKARAN, 2015). Neste sentido, a virtualização permite que a infraestrutura física de um servidor (provedor de serviços) seja compartilhada entre diferentes clientes, evitando ociosidade e ampliando o uso de recursos, o que retorna com mais eficiência os investimentos realizados (ROI) (CHANDRASEKARAN, 2015). No entanto, como nem todo sistema seja infalível, a virtualização possui a desvantagem de ter um ponto de falha do software, o que pode atingir toda a virtualização e, consequentemente, afetando aos clientes, isto é, se uma virtualização disponibiliza algum serviço para vários clientes, e nesta máquina ocorrer falha, afetará a todos (CHANDRASEKARAN, 2015). Um exemplo para a nuvem é o Microsoft Azure, mais detalhado ainda neste tópico, o qual pode ser descrito como um ambiente de desenvolvimento e também servidor de hospedagem para soluções SaaS, sendo confiável e flexível, sendo que este ambiente possui três níveis: IaaS, PaaS e o SaaS (BAI, 2015). Outro exemplo é o Google Cloud Platform, o qual permite que desenvolvedores implementem aplicativos em sua infraestrutura escalável e confiável, sendo suas infraestruturas de software o MapReduce, BigTable e Dremel, inovações para desenvolvimento industrial (CHANDRASEKARAN, 2015). Uma das características do Google Cloud Platform são suas máquinas virtuais, seu armazenamento em bloco, armazenamento de dados NoSQL além de análise de Big Data, fornecendo uma variedade de serviços de armazenamento e permitindo fácil manutenção e rápido acesso aos dados (CHANDRASEKARAN, 2015). 4 A NUVEM E BIG DATA O armazenamento de dados em nuvem permite realizar a análise de dados, processo de análise de dados brutos ou não processados que permite obter conclusões, o qual pode realizado em nuvem pública ou privada, cujo resultado pode ser um ou vários valores ou ainda um gráfico (CHANDRASEKARAN, 2015). Esta técnica de obtenção de resultados está sendo utilizada por pesquisadores de todo o mundo, que com base em seus resultados, são tomadas decisões importantes para os negócios de organizações (CHANDRASEKARAN, 2015). Neste sentido, se uma análise destas é realizada com grande quantidade de dados, terabytes ou petabytes por exemplo, chamada de análise de Big Data, termo recente utilizado na computação, sendo que um exemplo de onde pode ser gerada essa enorme quantidade de dados é a internet (CHANDRASEKARAN, 2015). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 17 Para exemplificar o uso de Big Data na internet, pode ser tomado como exemplo uma rede social, em que o administrador deste site deseja saber algo de um usuário, como o tipo de postagem que ele mais possui interesse, e para chegar a essa informação, pode ser realizada análise de todos os dados deste usuário. Outro exemplo é uma companhia de seguros, a qual deseja fazer um ranking dos melhores clientes no sentido de bons pagadores, se baseando em seus pagamentos mensais, podendo chegar a esse resultado fazendo uso de análise de dados (CHANDRASEKARAN, 2015). As vantagens da computação em nuvem, como popularidade, disponibilidade e escalabilidade sem limites, com uma estrutura robusta com várias camadas, têm levado a utilização do serviço de armazenamento na nuvem para o Big Data (MISTRIK et al., 2017). Armazenar Big Data em nuvem pública é mais econômico, existindo uma enorme redução de recursos financeiros tanto através da infraestrutura física quanto na questão do gerenciamento de sistemas (KAVIS, 2014). Neste sentido, o armazenamento tradicional (físico) envolve vários recursos de infraestrutura e de software, como dispositivos em fita ou disco para realizar backups, podendo haver vários tipos de mídia para armazenamento, assim como outros serviços que complementam o uso em data center físico (KAVIS, 2014). Com o armazenamento em nuvem, as empresas podem eliminar o data center físico e partir para o armazenamento em nuvem, os quais podem ser automatizados através da utilização de scripts, cujo custo é muito mais barato que o armazenamento físico, além dos processos de recuperação de dados serem mais fáceis (KAVIS, 2014). Para a análise de terabytes ou petabytes de dados, isto é, Big Data, é necessário alto poder de processamento e memória, com recursos pesados em back-end, sendo que isso custa muito caro para as empresas ou organizações, podendo ser um grande problema para organizações que não possuem recursos financeiros para isso (KAVIS, 2014). Nesse caso, a solução é o aluguel dos recursos necessários, o que pode ser exemplificado pelo Large Hadron Collider (LHC), o qual registrava petabytes de dados semanalmente e havia a necessidade de processa-los, sendo que os cientistas não possuíam seus próprios recursos (CHANDRASEKARAN, 2015). Foi utilizado o modelo de computação em grade, a qual pode ser entendida por ser uma das tecnologias que permite o usuário utilizar recursos de computação pagando por eles, tecnologia direcionada principalmente para aplicações científicas com Big Data, usando em áreas de astronomia, física, bioinformática, entre outros (CHANDRASEKARAN, 2015). A diferença entre computação em grade e em nuvem é os serviços em nuvem serem divididos em vários tipos, sendo os dois principais os privados e os públicos, conforme já mencionado (CHANDRASEKARAN, 2015). A nuvem pública possui a característica de oferecer serviços para usuários em todo o mundo, enquanto que a nuvem privada é considerada restrita e pode apenas ser utilizada por uma organização ou indivíduo (CHANDRASEKARAN, 2015). Neste sentido, análise em nuvem é o termo utilizado para definir a nuvem UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 18 pública ou privada, sendo utilizada para análise de dados e possui a vantagem em relação à plataforma de grade, de qualquer pessoa no mundo poder utilizar essa plataforma para realizar análises de dados (CHANDRASEKARAN, 2015). Com estes serviços de análise de Big Data em nuvem pública ou privada, não é necessário comprar nenhum recurso de computação, permitindo que apenas se aloque quando e o quanto for necessário de recursos (KAVIS, 2014). Segundo Chandrasekaran (2015), a análise em nuvem permite que ao invés de utilizar recursos de processamento diretamente, seja possível utilizar os aplicativos em nuvem projetados especificamente para análise de Big Data, criados pelo provedor, sendo este modelo chamado SaaS. A Figura 8 apresenta a classificação da análise em nuvem. FIGURA 8 – ANÁLISE EM NUVEM FONTE: Chandrasekaran (2015, p. 366) 5 INFRAESTRUTURA COMO UM SERVIÇO (IAAS) A infraestrutura como serviço (IaaS) fornece data center em nuvem, como servidores físicos e virtualizados,armazenamento de dados em nuvem, os quais podem ser acessados de qualquer local (JAMSA, 2013). Neste modelo de serviço, desenvolvedores precisam instalar sistema operacional, sistema gerenciador de banco de dados e os softwares necessários, e então, os desenvolvedores, ou administradores, precisam gerenciar o hardware e o software (JAMSA, 2013). A Figura 9 apresenta um exemplo do modelo IaaS, o que também pode ser exemplificado pelo Amazon Elastic Compute Cloud (Amazon EC2). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 19 FIGURA 9 – EXEMPLO DO MODELO IAAS FONTE: Jamsa (2013, p. 8) O Instituto Nacional de Padrões e Tecnologia (NIST - National Institute of Standards and Technology) define IaaS como sendo o fornecimento de processamento, armazenamento, redes e outros recursos de computação para o consumidor poder implantar e executar operações de sistemas ou executar aplicações (VACCA, 2017). Neste caso, o consumidor não controla a infraestrutura da nuvem, mas possui controle de sistemas operacionais, do armazenamento e de aplicativos implantados e, em alguns casos, possui certos controles de componentes de rede, como firewall, por exemplo (VACCA, 2017). A CSA (Cloud Security Alliance) ou Aliança de Segurança em Nuvem pode ser compreendida por ser uma organização que se remete a padrões de segurança na nuvem e define que o IaaS disponibilize infraestrutura de computador como um serviço, como ambiente de virtualização, por exemplo, assim como armazenamento e rede (VACCA, 2017). Neste sentido, ao invés de comprar servidores, software, espaço para armazenamento em data center ou equipamentos de rede, é mais vantajoso para o cliente adquirir estes recursos como um serviço terceirizado (VACCA, 2017). Através do IaaS, muitos dos recursos que são necessários em um data center físico para tarefas de gerenciamento e manutenção, assim como para infraestrutura física de servidores, como discos de armazenamento, manutenção de rede, entre outros, não são necessários na nuvem (VACCA, 2017). Todos os recursos disponibilizados na nuvem são disponibilizados como uma coleção de serviços, os quais podem ser acessados inclusive através de automatização, com scripts ou ainda a partir de aplicações de web services (VACCA, 2017). Neste sentido, os desenvolvedores possuem a tarefa de implementar os aplicativos necessários, assim como os administradores precisam realizar a instalação e gerenciamento de aplicações utilizadas de terceiros, e com isso não existe mais o ciclo de compra de hardware, em que teria que realizar a solicitação de compra, aguardar a chegada dos equipamentos, e então o trabalho de instalação e configuração (VACCA, 2017). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 20 Utilizando o modelo IaaS, toda a infraestrutura virtual necessária sob demanda pode ser disponibilizada em minutos, através da chamada de uma API (Application Programming Interface) ou ainda acessando um console de gerenciamento, cujo custo pode ser medido e é apenas aplicado se recursos estiverem sendo utilizados (VACCA, 2017). Com estas explicações, se pode dizer que o IaaS oferece recursos de data center virtual para atender a necessidades de consumidores, os quais podem se concentrar mais no desenvolvimento e gerenciamento de aplicativos e menos no gerenciamento de recursos de infraestrutura (JAMSA, 2013). Agora que você compreendeu o que é o IaaS, você pode avançar o estudo conhecendo alguns dos vários fornecedores de IaaS existentes no mercado. Um deles é o provedor de serviços em nuvem Amazon Web Services (AWS), assim como o Rackspace e GoGrid que também são pioneiros neste segmento. Outro fornecedor é o OpenStack, o qual é um projeto de código aberto que fornece recursos de IaaS para consumidores que desejam construir seu próprio IaaS com recursos internos, chamados de nuvem privada (VACCA, 2017). 5.1 PLATAFORMAS DE IAAS Existem vários e grandes provedores de serviços no mercado de tecnologia, sendo que muitos deles oferecem serviços de infraestrutura em nuvem. Como existem vários destes provedores de serviços IaaS, focaremos em alguns dos mais utilizados, os quais estão descritos a seguir. 5.1.1 DigitalOcean DigitalOcean é um provedor de serviços de computação em nuvem que obteve uma reputação positiva de muitas comunidades de desenvolvimento de software por ser rápido, confiável, além de ter um preço acessível para instâncias de máquinas virtuais (THOMPSON, 2015). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 21 FIGURA 10 – CONSOLE DO DIGITALOCEAN FONTE: Thompson (2015, p. 297) A plataforma DigitalOcean possui uma API eficaz e simples para acesso às instâncias computacionais, o que torna a integração com o DigitalOcean mais simplificada, assim como seu console fácil de se utilizar, ilustrado na Figura 10 (THOMPSON, 2015). É uma plataforma de hospedagem de sites, a qual pode ser acessada pela URL https://www.digitalocean.com, sendo muito fácil de se utilizar, pois com a realização do cadastro, automaticamente são disponibilizados os nomes dos servidores, os quais devem ser configurados no domínio (BROWN, 2020). Assim como outros provedores de hospedagem, o internauta acessa o domínio, como www.uniasselvi.com.br por exemplo, e através da resolução do DNS, é chamado um dos servidores do DiditalOcean, onde está hospedado o site (BROWN, 2020). 5.1.2 Linode O Linode é um provedor de serviços IaaS que disponibiliza serviços parecidos com muitos dos serviços da Amazon, iste é, oferece diferentes níveis de servidores, sendo eles de 512 MB até 20 GB de RAM (MITCHELL, 2013). A diferença é que a Amazon cobra os serviços por hora, enquanto que o Linecode realiza a cobrança mensal de seus serviços, e, além disso, as instâncias dos computadores possuem recursos específicos para capacidade de armazenamento e recursos de CPU, possuindo data center nos Estados Unidos, Grã Bretanha e Japão (MITCHELL, 2013). UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 22 Este provedor utiliza uma personalizada linguagem para implantação e gerenciamento de servidores, utilizando a plataforma de virtualização Xen (MITCHELL, 2013). Todos os recursos de serviços de computação disponibilizados pelo Linode possuem serviço de suporte premium, e oferecem backup automático e serviços de restauração, diferente de outros provedores, sendo que para estes serviços de backup e restauração, o Linode disponibiliza um fácil aprendizado para os usuários usufruírem de forma mais eficiente destes serviços (MITCHELL, 2013). Além de backups, o Linode oferece serviços adicionais com recursos extras, como RAM, espaço em disco, banda de velocidade da rede ou endereço IP, além de permitir clonagem de recursos internos dos servidores, como de configurações, permitindo ajudar no gerenciamento (MITCHELL, 2013). O Linode permite que vários usuários utilizem a mesma conta, permitindo que vários usuários utilizem a mesma conta, além de suportar várias versões de Linux, como Debian, Fedora, Ubuntu e CentOS (MITCHELL, 2013). Além disso, diferente de outros serviços IaaS, o Linode oferece a vantagem de permitir inicialização do Sistema Operacional em modo de recuperação, além de outros métodos, o que facilita o gerenciamento de máquinas (MITCHELL, 2013). 5.1.3 Rackspace O provedor Rackspace disponibiliza vários serviços de hospedagem dos modelos PaaS e IaaS, sendo que o Rackspace suporta algumas plataformas de servidores, como Windows e Linux, assim como a Amazon (MITCHELL, 2013). No Rackspace, podem ser alocados servidores de 256 MB até 30 GB de RAM, e espaço em disco de 256 MB até 10GB, os quais são pagos por hora, diferente do Linode que é mensal (MITCHELL, 2013). Outra característica do Rackspace é o oferecimento de instâncias de servidores gerenciáveis e não gerenciáveis, com serviços de suporte de TI premium, incluindo serviços PaaS de e-mail e hospedagem de sites, além de serviços em nuvem privados (MITCHELL, 2013). Além destas características,a questão de personalização, assim como no Linode, o Rackspace também oferece opções parecidas, assim como interface gráfica para gerenciamento e configuração de backup (MITCHELL, 2013). 5.1.4 Amazon Web Services (AWS) Amazon Web Services (AWS) é um dos provedores IaaS mais conhecidos, o qual suporta uma grande variedade de serviços em nuvem, como servidor de hospedagem (EC2), armazenamento em nuvem (S3, EBS), serviços de monitoramento, serviços de notificações (SES, SQS), serviços de banco de dados relacional (RDS), assim como serviço de DNS (Route 53) (MITCHELL, 2013). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 23 O Amazon disponibiliza serviços em ambientes públicos, privados ou em comunidades através de serviço VPC, serviço GovCloud e instâncias de VPC dedicados (MITCHELL, 2013). O serviço EC2 suporta as plataformas Windows e Linux, assim como o serviço de importação e exportação de imagem do Sistema Operacional, além disso, os recursos disponibilizados de empresas parceiras, como Microsoft Windows, RedHat Linux e Oracle, por exemplo, são licenciados e são pagos por hora de utilização (MITCHELL, 2013). Amazon possui servidores em quase todos os continentes, como Ásia, Europa e Estados Unidos da América, liderando os servidores de infraestrutura em nuvem, além de permitir a integração com outras plataformas, como a Heroku que pode ser integrada a Amazon RDS, por exemplo (MITCHELL, 2013). A Amazon oferece várias opções de tamanhos de recursos de máquinas, várias funções para gerenciamento de servidores, serviços de banco de dados assim como serviço de armazenamento, oferecendo serviços públicos, privados, gratuitos e licenciados, incluindo uma comunidade completa para suporte (MITCHELL, 2013). Oferecendo pequenos servidores de 1.7 GB de RAM e 1 CPU, ou então os maiores servidores que são de 7.4 GB de RAM e até 4 CPUs (MITCHELL, 2013). Assim como outros provedores disponibilizam serviços gratuitos para novos usuários, a Amazon também oferece, sendo um recurso com micro EC2 e armazenamento para utilizar durante um ano (MITCHELL, 2013). O Amazon Web Services oferece várias configurações diferentes de configurações de servidores, isto é, várias capacidades de memória RAM e recursos de CPU para as várias necessidades dos clientes, mas os pequenos servidores, ou instâncias, servem para realizar testes na plataforma, e não para colocar aplicações em produção (MITCHELL, 2013). 5.1.5 Cisco Metapod De acordo com Santana (2016), devido à necessidade de algumas organizações, alguns provedores de nuvem disponibilizaram um serviço conhecido por PCaaS (Private Cloud as a Service), em que neste cenário, o provedor: • Disponibiliza uma nuvem privada e local em uma organização, utilizando operações automatizadas pré-testadas; • Opera, gerencia e disponibiliza suporte para nuvem privada; • Realiza a cobrança da organização de acordo com sua utilização de recursos. Neste sentido, a Cisco oferece PCaaS através da plataforma Cisco Metapod, a qual pode ser entendida por ser uma solução de plataforma aberta sendo remotamente instalada e opera 24 horas por dia durante o ano inteiro (SANTANA, 2016). O Cisco Metapod possui fácil e rápida instalação, sendo um UNIDADE 1 — FUNDAMENTOS DE CLOUD COMPUTING 24 provedor de nuvem privada que possui alta disponibilidade e um catálogo pré- construído de servidores virtuais e desktops quase prontos para utilização, além de permitir integração com outras organizações e suporte para APIs do AWS (SANTANA, 2016). 5.1.6 Microsoft Azure Outra plataforma deste modelo é o Microsoft Azure, o qual é desenvolvido pela Microsoft, e fornece uma variedade de serviços que se pode utilizar sem pagar, permitindo o desenvolvimento de soluções para realizar tarefas que não podem ser realizadas em um ambiente local de hardware, isso é, fazendo elas no servidor e não no computador do desenvolvedor (COPELAND et al., 2015). Neste sentido, o Microsoft Azure pode ser descrito como um servidor de processamento e armazenamento em nuvem, possibilitando ao desenvolvedor se preocupar com sua tarefa principal de implementar as aplicações, não sendo necessário se preocupar com instalação e configuração de infraestrutura (COPELAND et al., 2015). A plataforma Microsoft Azure oferece suporte para nuvem pública, privada, e híbrida, sendo que o Windows Azure Pack permite adicionar muitos dos serviços do Azure em data centers, oferecendo a experiência destes serviços aos usuários do servidor, podendo realizar esta integração através de uma rede virtual privada (COLLIER; SHAHAN, 2015). O Microsoft Azure possui data centers em 19 regiões do planeta, e com esta plataforma, podem ser adicionados novos servidores para satisfazer a necessidade de desempenho de uma determinada solução, além de facilitar para Startups, permitindo estas iniciarem com baixo custo (COLLIER; SHAHAN, 2015). O Microsoft Azure fornece serviços IaaS através de execução e gerenciamento de servidores com virtualização de software, permitindo criar VMs (Virtual Machines), ou máquinas virtuais, as quais rodam na infraestrutura de servidores e, dependendo do servidor, é possível rodar Sistema Operacional Windows ou Linux (COLLIER; SHAHAN, 2015). Nestas VMs, é possível configurar redes virtuais, balanceadores de carga de rede, armazenamento, assim como outros serviços que rodam nesta arquitetura, porém não se possui controle do hardware e do software de virtualização (COLLIER; SHAHAN, 2015). A migração de serviços para VMs do Microsoft Azure é facilitada, pois é possível criar VMs com mesmas configurações da infraestrutura atual dos serviços que se deseja migrar, podendo serem realizados ajustes quanto a URLs por exemplo, mas muitas aplicações poderão ser migradas desta forma e sem maiores problemas (COLLIER; SHAHAN, 2015). TÓPICO 1 — INTRODUÇÃO AO CLOUD COMPUTING E O COTIDIANO 25 5.1.7 Google Compute Engine (GCE) A plataforma Google Compute Engine (GCE) disponibiliza serviços em VMs, as quais rodam nos data centers do Google, podendo serem criadas VMs com as mais diversas configurações, conforme a necessidade, possuindo redundância e replicação dos dados armazenados, além de permitir que haja comunicação entre a rede privada interna com a rede da VM (COHEN; HURLEY; NEWSON, 2015). O Google Compute Engine disponibiliza várias ferramentas que facilitam o gerenciamento e configuração das instâncias das VMs, como por exemplo atribuir discos de armazenamento, configurar a rede de acesso às VMs, entre outros (COHEN; HURLEY; NEWSON, 2015). Segundo Cohen, Hurley e Newson (2015), dentre as ferramentas disponibilizadas, citam-se: • Google Developers Console: Interface web (UI); • GCloud Compute: Ferramenta em linha de comando que permite desenvolver scripts de automação; • Compute Engine API: API RESTFul que permite a integração e interação em código fonte para gerenciamento de aplicações. Para começar a utilizar o Google Compute Engine, é necessário criar um projeto Engine Compute na ferramenta Developers Console (COHEN; HURLEY; NEWSON, 2015). Um projeto do Engine Compute é uma coleção de recursos e configurações do projeto, como um container de recursos, no qual, disco, firewall, rede e todas as instâncias estão associadas ao projeto (COHEN; HURLEY; NEWSON, 2015). Uma característica interessante é nessa plataforma ser possível adicionar membros para a equipe do projeto, especificando determinadas permissões para acesso a determinados recursos (COHEN; HURLEY; NEWSON, 2015). 26 Neste tópico, você aprendeu que: • A computação em nuvem (cloud computing) pode ser entendida pela utilização de recursos de computação em um provedor na internet, isto é, quando se precisa de um servidor, por exemplo, é possível utilizar uma máquina virtual (virtual machine) que é disponibilizada por vários provedores na internet. • A computação em nuvem pode ser exemplificada também pelo armazenamento em nuvem, isto é, armazenar dados ou arquivos em
Compartilhar