Prévia do material em texto
ARQUITETURAS E INFRAESTRUTURAS EM NUVEM W B A 04 80 _v 1. 0 2 Tiago Cariolano de Souza Xavier Londrina Editora e Distribuidora Educacional S.A. 2020 ARQUITETURAS E INFRAESTRUTURAS EM NUVEM 1ª edição 3 2020 Editora e Distribuidora Educacional S.A. Avenida Paris, 675 – Parque Residencial João Piza CEP: 86041-100 — Londrina — PR e-mail: editora.educacional@kroton.com.br Homepage: http://www.kroton.com.br/ Presidente Rodrigo Galindo Vice-Presidente de Pós-Graduação e Educação Continuada Paulo de Tarso Pires de Moraes Conselho Acadêmico Carlos Roberto Pagani Junior Camila Braga de Oliveira Higa Carolina Yaly Giani Vendramel de Oliveira Henrique Salustiano Silva Juliana Caramigo Gennarini Mariana Gerardi Mello Nirse Ruscheinsky Breternitz Priscila Pereira Silva Tayra Carolina Nascimento Aleixo Coordenador Henrique Salustiano Silva Revisor Douglas Fabiano Lourenço Editorial Alessandra Cristina Fahl Beatriz Meloni Montefusco Gilvânia Honório dos Santos Mariana de Campos Barroso Paola Andressa Machado Leal Dados Internacionais de Catalogação na Publicação (CIP)__________________________________________________________________________________________ Xavier, Tiago Cariolano de Souza. X3a Arquiteturas e infraestruturas em nuvem/ Tiago Cariolano de Souza Xavier, – Londrina: Editora e Distribuidora Educacional S.A., 2020. 44 p. ISBN 978-65-5903-043-9 1. Arquiteturas 2. Infraestrutura 3. Nuvem I. Título. CDD 004 ____________________________________________________________________________________________ Raquel Torres – CRB 6/2786 © 2020 por Editora e Distribuidora Educacional S.A. Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Editora e Distribuidora Educacional S.A. 4 SUMÁRIO Introdução à Computação na Nuvem _______________________________ 05 Modelos de Serviço da Nuvem _____________________________________ 23 Aplicações da Computação em Nuvem _____________________________ 40 Projetos de arquiteturas na nuvem _________________________________ 57 ARQUITETURAS E INFRAESTRUTURAS EM NUVEM 5 Introdução à Computação na Nuvem Autoria: Tiago Cariolano Leitura crítica: Douglas Fabiano Lourenço Objetivos • Descrever uma Arquitetura de Computação na Nuvem, identificando seus principais componentes e sua organização. • Especificar e analisar a adequação dos Modelos Arquiteturais para diferentes modelos de negócio. • Identificar oportunidades de implantação de Federações de Nuvens em cenários limítrofes da Computação na Nuvem tradicional. • Descrever os principais Provedores de Serviços da Nuvem, bem como visualizar o panorama geral do mercado de Computação na Nuvem. 6 1. Introdução A Computação na Nuvem é um paradigma que trouxe profundas modificações na maneira que empresas, indivíduos e corporações atuam em seus negócios. Ela alavanca a escalabilidade dos sistemas computacionais, oferece aos usuários recursos virtualmente ilimitados, reduz os custos de operação e otimiza o uso da infraestrutura computacional necessária para a realização das atividades econômicas, sociais e empresariais dos usuários. Para entender o conceito de Computação na Nuvem, este Tema define o que é uma Arquitetura na Nuvem e apresenta os principais componentes da Infraestrutura da Nuvem. Em seguida, caracteriza os diferentes Modelos de Implantação da Nuvem e apresenta o conceito de Federação de Nuvens, o qual habilita o paradigma de Computação na Nuvem para um nível maior de compartilhamento e proteção dos dados dos usuários. Por fim, apresenta os principais Provedores de Serviços de Nuvem e delineia um panorama geral do mercado de nuvem. 2. A Arquitetura da Computação na Nuvem A Computação na Nuvem1 é um novo paradigma para compartilhamento de dados, serviços e aplicações de maneira transparente, e sob demanda, aos usuários, como apontado por Chaves (2010). Uma Arquitetura na Nuvem2 é o conjunto de componentes de hardware e software e a maneira como tais componentes são organizados para habilitar a Computação na Nuvem. 1 Os termos Computação na Nuvem, Cloud Computing ou Computação de Nuvem também são utilizados na literatura. 2 Também são utilizados na literatura os termos Arquitetura em Nuvem, Arquitetura nas Nuvens ou Arqui- tetura de Nuvem e Arquitetura de Computação na Nuvem. 7 De acordo com Gonzalez (2014), os principais atores que interagem em uma Arquitetura na Nuvem são o Provedor de Infraestrutura, o Provedor de Serviço e o Usuário. O primeiro é responsável por adquirir e manter a infraestrutura que suporta a nuvem; o segundo utiliza e gerencia a nuvem; e o último é quem utiliza o serviço oferecido pelo Provedor de Serviço, podendo ser um indivíduo, uma empresa ou um órgão governamental. 2.1 Infraestrutura, Datacenters e Virtualização A Infraestrutura da Nuvem corresponde a todos os componentes de hardware e software necessários para habilitar o paradigma da Computação na Nuvem. Tais componentes incluem servidores, equipamentos de rede, equipamentos de armazenamento, softwares para virtualização de dados, além de todas as aplicações e serviços que gerenciam, atualizam e mantêm tais recursos. É importante diferenciar infraestrutura e arquitetura da nuvem. Enquanto a primeira corresponde aos componentes (hardware e software) que compõem o ambiente de Computação na Nuvem, a segunda, que engloba a infraestrutura, é a forma, ou seja, a organização, que tais componentes assumem. O principal componente da Infraestrutura da Nuvem é o Datacenter, o qual, de acordo com Veras (2012), juntamente com suas conexões, forma a Infraestrutura da Nuvem. Ele integra os recursos de processamento, armazenamento e de comunicação, por meio de serviços de infraestrutura, com o objetivo de oferecer serviços de valor agregado para o Usuário. 8 Figura 1 – Virtualização na Nuvem de um servidor físico Fonte: adaptada de Veras (2012). A Virtualização é a principal tecnologia utilizada em um Datacenter e consiste em uma camada de software que abstrai o hardware do computador para o Usuário. Uma Máquina Virtual é um componente de software que promove a Virtualização, abstraindo a arquitetura de hardware, bem como Sistemas Operacionais e sistemas de middleware, oferecendo recursos virtualizados diferentes daqueles disponibilizados pela infraestrutura subjacente. A Figura 1 apresenta um cenário de um servidor físico executando Máquinas Virtuais, as quais disponibilizam versões do servidor virtualizado para os usuários do sistema. A Virtualização assume papel central em Datacenters devido a sua habilidade de mover uma Máquina Virtual (composta de SO e aplicações) em execução de uma Máquina Hospedeira3 para outra sem grandes paralisações. Além disso, a Virtualização permite armazenar todo 3 Uma Máquina Hospedeira, ou simplesmente Hospedeiro ou Host (do inglês), é um computador que exe- cuta um sistema operacional, um serviço (geralmente um middleware) ou uma Máquina Virtual. 9 o conjunto de eventos ocorridos em uma Máquina Virtual, com o propósito de retroceder ou avançar a execução de um sistema por completo para fins de depuração ou auditoria. 2.2 Modelos de Serviços A Arquitetura da Nuvem é organizada como uma pilha de Modelos de Serviços denominada Pilha da Nuvem (Cloud Stack). Existem três Modelos de Serviço que compõem a Pilha da Nuvem, os quais podem ser ordenados a partir do modelo de nível mais baixo para o de nível mais alto, da seguinte maneira: Infraestrutura como um serviço (Infrastructure as a Service – IaaS), Plataforma como um serviço (Platform as a Service – PaaS) e Software como um serviço (Software as a Service – SaaS). Figura 2 –Pilha da Nuvem: hierarquia dos modelos de Serviços da Nuvem Fonte: elaborada pelo autor. 10 Cada Modelo de Serviço que compõe a Pilhada da Nuvem oferece um conjunto de serviços que atende a um conjunto de requisitos de negócio. A Figura 2 ilustra os níveis que compõem a Pilha da Nuvem, sendo os três níveis centrais os níveis que representam os Modelos de Serviço: o IaaS oferece serviços para gerenciar os recursos físicos e virtualizados de processamento, armazenamento e de comunicação da nuvem; o PaaS possibilita ao Usuário ter acesso às plataformas de Sistema Operacional (SO) da Nuvem e aos sistemas de middleware, que integram a infraestrutura com as aplicações; e o SaaS corresponde às aplicações que a Nuvem é capaz de oferecer para o Usuário. 3. Modelos de Implantação Quando uma empresa ou um indivíduo necessita de serviços de Computação na Nuvem, é necessário definir os requisitos (processamento, armazenamento, rede, custo etc.). Em seguida, é necessário escolher um dos quatro Modelos de Implantação que melhor atende aos requisitos: Nuvem Pública, Nuvem Privada, Nuvem Híbrida e Nuvem Comunitária. Um Modelo de Implantação determina a localização da infraestrutura, a propriedade e a administração dos recursos e a responsabilidade de segurança da informação. A Figura 3 ilustra cada um dos Modelos de Implantação para a Computação na Nuvem. • Nuvem Pública: os serviços são oferecidos ao público em geral (organizações, empresas ou indivíduos). • Nuvem Privada: os Datacenters são localizados dentro da organização e não ficam disponíveis para o público em geral (CHAVES, 2010). • Nuvem Híbrida: é uma junção dos modelos de Nuvem Privada e Nuvem Pública. 11 • Nuvem Comunitária: é uma infraestrutura de Computação na Nuvem compartilhada por diversas organizações que possuem objetivos e interesses comuns e que formam uma comunidade (CHAVES, 2010). Figura 3 – Modelos de Implantação de Computação na Nuvem Fonte: adaptada de Otero (2013, p. 24). 3.1 Nuvem Pública A infraestrutura da Nuvem Pública é aberta ao público, funciona em um modelo de pay-per-use, em que o usuário paga pelo serviço utilizado, e é controlada, gerenciada e operada sob as premissas do Provedor de Serviço. Tal provedor disponibiliza os recursos, gerencia a infraestrutura e garante a segurança das informações para o Usuário. Além disso, ele 12 possui plena propriedade para implantação de seu modelo de negócios (OTERO, 2013). O Usuário de Nuvem Pública, por sua vez, possui um baixo controle dos aspectos de segurança dos serviços (OTERO, 2013). Em uma Nuvem Pública, gerenciada por uma empresa, a instalação da infraestrutura da nuvem é realizada fora da organização do cliente. Ela é gerenciada por órgãos do governo ou por instituições acadêmicas, podendo sua infraestrutura estar no mesmo local geográfico do Usuário. No entanto, a gerência dos recursos geralmente é realizada por departamentos independentes. 3.2 Nuvem Privada A Nuvem Privada é gerenciada apenas pela organização, como apontado por Chaves (2010), a qual é responsável por gerenciar os recursos e prover os mecanismos de segurança, pois possui total controle da nuvem, bem como é proprietária e arca com todos os custos (DANTAS, 2013). Assim como na Nuvem Pública, na Nuvem Privada os serviços de infraestrutura são internos à organização, a qual é proprietária da Infraestrutura da Nuvem. No entanto, múltiplos consumidores, os quais compreendem diferentes unidades de negócio dentro da organização, podem fazer uso dela (JUNIOR, 2014). O principal objetivo dessa nuvem é fornecer uma infraestrutura que provisione serviços de maneira ágil e flexível e que atendam às demandas e restrições específicas dos usuários locais (CHAVES, 2010). A implantação de uma Nuvem Privada é ideal para um cenário em que a organização deseja manter suas informações em um ambiente confiável, controlável e seguro, sendo geralmente o acesso a ela concedido apenas para membros internos (OTERO, 2013). Organizações que adotam esse modelo requerem um maior controle do gerenciamento da segurança e manutenção e atualização da infraestrutura e dos serviços prestados. 13 3.3 Nuvem Híbrida De acordo com Chaves (2010), uma Nuvem Híbrida é composta por duas ou mais nuvens, que são conectadas por interfaces de comunicação proprietárias e padronizadas, além de protocolos que promovem a portabilidade entre as nuvens. As infraestruturas de nuvem que a compõem permanecem distintas, ou seja, são entidades que gerenciam seus recursos computacionais, segurança e controle de acesso. Um cenário típico de utilização de Nuvem Híbrida é quando uma organização deseja manter alguns serviços sob seu total controle, enquanto aumenta suas capacidades e otimiza seus recursos. Os serviços de infraestrutura sob o domínio da organização são implantados por uma Nuvem Privada, enquanto os recursos adicionais requeridos são fornecidos pela infraestrutura de uma Nuvem Pública (OTERO, 2013). O modelo de Nuvem Híbrida proporciona maior controle da infraestrutura da nuvem, enquanto permite ampliar os recursos oferecidos de acordo com a demanda dos usuários. A organização geralmente controla alguns serviços por meio da implantação de uma Nuvem Privada, enquanto é capaz de ampliar as capacidades disponibilizadas pela infraestrutura migrando alguns serviços para uma Nuvem Pública (OTERO, 2013). 3.4 Nuvem Comunitária No modelo de Nuvem Comunitária, organizações que possuem interesses em comum constroem e compartilham a infraestrutura da nuvem, como descrito por Otero (2013), podendo ser gerenciada por alguma organização que compõe a comunidade ou por terceiros (CHAVES, 2010). Esse modelo é atrativo para companhias de saúde, financeiras e da esfera legal que estão sujeitas à rigorosa conformidade 14 regulamentar. Também é adequado para o gerenciamento de projetos que se beneficiam do compartilhamento de plataformas de desenvolvimento de software ou aplicações de uso específico de uma comunidade. 4. Federação de Nuvens O uso da Computação na Nuvem é capaz de alavancar os negócios de indivíduos, corporações e indústrias que requerem uma quantidade virtualmente ilimitada de recursos de maneira eficiente. No entanto, as plataformas de Computação na Nuvem ainda necessitam lidar com diversos desafios de escalabilidade, compartilhamento de dados e segurança, o que impede que esses usuários adotem tal paradigma em seus negócios. Muitos Usuários evitam executar suas aplicações na nuvem, pois têm medo de perder a propriedade e o controle de seus dados. Além disso, têm receio de permanecerem aprisionados a um Provedor de Serviço, devido à falta de padronização nas interfaces dos serviços, protocolos e formatos de dados. Quando um usuário deseja trocar um Provedor de Serviço, os custos para a migração dos sistemas, das aplicações e dos dados entre as plataformas da nuvem podem ser inviáveis para ele. Nesse contexto, surge o paradigma de Federação de Nuvens, que consiste no compartilhamento de serviços de diferentes Provedores de Serviços agregados em um conjunto único de características básicas de interoperabilidade: migração de recursos, redundância de recursos e combinação de recursos ou serviços complementares (SANTOS, 2013). 15 4.1 Migração, Redundância e Compartilhamento A migração de um recurso – como a imagem de uma máquina virtual ou um conjunto de itens de dados – permite que o recurso seja desalocado do domínio de um Provedor de Serviço e realocado em outro provedor. Tal mecanismo possibilita ao Usuário trocar a execução de um serviço para um provedor que atenda a seus requisitos (SANTOS, 2013). A Figura 4 ilustra a migração do banco de dados D1 da Nuvem 1 para a Nuvem 2. É importante notar que o Usuário 1 utiliza a mesma interface IU1 para se comunicar com as diferentes nuvens, e todo o processo de migração é transparente a ele. Ele pode desejar trocar de Provedor de Serviço quando seu contrato expira ou quandoum novo produto de um concorrente se torna disponível. Figura 4 – Migração de dados entre Provedores de Serviço da Nuvem Fonte: elaborada pelo autor. 16 A redundância consiste em replicar os recursos em diferentes nuvens com o objetivo de garantir maior disponibilidade e tolerância às falhas das aplicações oferecidas ao Usuário. A replicação de um dado em mais de uma nuvem garante que uma interrupção do Provedor de Serviço ou a falha de algum host não ocasionará uma indisponibilidade de serviço para o usuário, nem perda ou danos aos seus dados. A Figura 5 ilustra um cenário em que o banco de dados D1 foi replicado na Nuvem 1 e na Nuvem 2. O Usuário se comunica com as duas plataformas de nuvem por meio da mesma interface (IU1) e ainda acessa D1, mesmo que um dos Provedores de Nuvem seja interrompido. Figura 5 – Replicação de dados entre Provedores de Serviço de Nuvem Fonte: elaborada pelo autor. 17 A Federação de Nuvens provê compartilhamento de recursos entre nuvens, com o objetivo de aproveitar os recursos umas das outras (SANTOS, 2013). Na Figura 6, o Usuário 1 divide seu banco de dados D1 em três partes (D1.1, D1.2 e D1.3) e instala cada parte em uma nuvem diferente. Como a Nuvem 1, a Nuvem 2 e a Nuvem 3 são federadas, sendo o Usuário 1 capaz de acessar o banco de dados completo D1 sem a necessidade de utilizar três protocolos diferentes. Figura 6 – Particionamento de dados entre Provedores de Serviço da Nuvem Fonte: elaborada pelo autor. Existem diversos cenários de interesse para compartilhamento de dados. Por exemplo, no cenário ilustrado da Figura 6, o conjunto completo de dados do Usuário não é conhecido por nenhum dos Provedores de Serviço e nenhum indivíduo consegue obter o acesso ao conjunto completo de dados. 18 4.2 Federação Horizontal e Vertical A partir dos Modelos de Serviço da Pilha da Nuvem, Santos (2013) classifica dois tipos de Federação de Nuvens, a Federação Horizontal e a Federação Vertical. No primeiro tipo, a federação ocorre apenas em um nível da pilha; por exemplo, uma federação entre SOs de Provedores de Nuvem no modelo PaaS. Na Federação Vertical, a federação ocorre entre os diferentes níveis da Pilha da Nuvem. Nela, um serviço oferecido como um SaaS por uma nuvem pode acessar a infraestrutura (IaaS) de outra nuvem de maneira transparente para ao Usuário. 5. Provedores de Serviços e Mercado de Nuvem O mercado de plataformas de Computação na Nuvem oferece uma grande variedade de serviços para o Usuário desenvolver, gerenciar e implantar sua aplicação. A seguir, são apresentadas as plataformas Amazon Web Services, Google Cloud e Microsoft Azure, que são líderes no mercado de nuvem. A Amazon Web Services (AWS) é uma subsidiária da Amazon, a qual possui uma infraestrutura composta de Datacenters espalhados ao redor do mundo. Um ou mais Datacenters posicionados geograficamente próximos compõem o que é chamado de Zona de Disponibilidade (ZD). A organização da infraestrutura da AWS em ZDs tem o objetivo de fornecer um menor tempo de resposta para aplicações e uma maior redundância e tolerância a falhas dos recursos, devido à proximidade geográfica dos Datacenters com os dispositivos dos usuários. Uma Região é um local físico no mundo, isolado e capaz de fornecer todos os serviços da AWS, sendo composto de múltiplas ZDs. O objetivo do isolamento é evitar que um dano a uma Região afete outras Regiões, garantindo tolerância à falha e estabilidade dentro dela. 19 A Microsoft é proprietária da Azure, a qual possui uma infraestrutura composta de Datacenters conectados por meio de uma rede global. Semelhantemente à infraestrutura da AWS, na Azure, um conjunto de Datacenters compõe uma ZD e uma Região é formada por duas ou mais ZDs. A principal diferença entre a Azure e a AWS é que, na primeira, duas ou mais regiões compõem o que é chamado de Fronteira de Residência dos Dados (FRD). A FRD promove o compartilhamento de dados entre as Regiões com o objetivo de alcançar tolerância à falha entre elas dentro da FRD, além de permitir aos usuários manter seus dados sob regras de compliance específicas. Quadro 1 – Principais opções de Mercado para serviços de IaaS, PaaS e SaaS Provedor de Serviço IaaS PaaS SaaS Descrição do Serviço4 Criação de Máquina Virtual com recursos de processamento, armazenamento e comunicação. Provisionamento de banco de dados, balanceamento de carga, escalonamento e monitoramento de aplicação. Construção, treinamento e implantação de modelos de aprendizagem de máquina. Opções de Mercado AWS AWS EC2 AWS Elastic Beanstalk Amazon SageMaker Azure Virtual Machine Virtual Machine Scale Sets Azure Machine Learning Google Compute Engine App Engine Google Datalab Fonte: elaborado pelo autor. 4 Cada opção de serviço oferecida pelo mercado possui características específicas, de modo que a descrição se refere às características gerais que caracterizam o serviço. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html 20 A Google Cloud é o Provedor de Serviços da Google e, de maneira semelhante à AWS, também possui o equivalente a uma ZD, chamada apenas de Zona, além de um equivalente à Região. Diferentemente da AWS, na Google Cloud nem todos os serviços são localizados dentro de uma Região. Além disso, embora uma Região seja isolada de outra, como na AWS, na Google Cloud existem funcionalidades pré-construídas que permitem a sincronização de dados entre Regiões diferentes. Os Provedores de Serviço de Nuvem AWS, Azure e Google Cloud oferecem serviços que podem ser caraterizados em todas as classificações dos Modelos de Serviço. O Quadro 1 apresenta os principais serviços oferecidos por tais empresas do mercado, bem como uma breve descrição de cada tipo. 5.1 Panorama do Mercado de Computação na Nuvem O mercado de Provedores de Serviço na Nuvem é extremamente amplo, dinâmico e inovador. A Figura 7 mostra a avaliação realizada pela empresa de research, chamada Gartner, a qual coletou dados dos clientes dos principais Provedores de Serviço do mercado. A avaliação observou a Completude de Visão (Completeness of Vision), que observa como principais critérios o entendimento de mercado e a estratégia de oferta de produto. Além disso, a avaliação também observou a Habilidade de Executar (Ability of Execute), que observa como critérios mais importantes o produto, o serviço, a viabilidade geral e a responsividade do mercado. Observa-se que a AWS, Microsoft Azure e Google Cloud são empresas visionárias, sendo a AWS a líder do mercado, relativamente próxima da Microsoft Azure. Já a Google Cloud está mais próxima de empresas de nicho de mercado do que da AWS. A Alibaba Cloud, a Oracle e a IBM também são empresas desafiantes às líderes, atuando, porém, em nichos do mercado. 21 Figura 7 – Avaliação do mercado de Computação na Nuvem Fonte: adaptada de Bala et al. (2020). 6. Conclusão Este Tema apresentou os conceitos fundamentais de ambientes de Computação na Nuvem. A definição da Arquitetura da Nuvem, a apresentação de seus principais componentes e a descrição dos principais modelos arquiteturais permitem a identificação e a descrição de arquiteturas nas nuvens. Além disso, a apresentação dos principais Provedores de Serviço de Nuvem do mercado proporciona uma visão mais ampla. 22 Referências Bibliográficas BALA, R. et al. Gartner Magic Quadrant for Cloud Infrastructure and Platform Services. 2020. Disponível em: https://www.gartner.com/doc/reprints?id=1- 1ZDZDMTF&ct=200703&st=sb. Acesso em: 15 out. 2020. CHAVES, S. A. Arquitetura e Sistema de Monitoramento para Computação em Nuvem Privada. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciências da Computação, Universidade Federal de Santa Catarina, Florianópolis, 2010. DANTAS, J. R. Modelos para Análise de Dependabilidade de Arquiteturas de Computação em Nuvem.Dissertação (Mestrado em Ciência da Computação) – Centro de Informática, Universidade Federal de Pernambuco, Recife, 2013. GONZALEZ, N. M. Proposta de Arquitetura e Solução de Gerenciamento de Credenciais para Autenticação e Autorização em Ambientes de Computação em Nuvem. Dissertação (Mestrado em Ciência) – Escola Politécnica, Universidade de São Paulo, São Paulo, 2014. JUNIOR, O. A. C. GreenMACC – uma Arquitetura para Metaescalonamento Verde com Provisão de QoS em uma Nuvem Privada. Tese (Doutorado em Ciências) – Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, São Carlos, 2014. OTERO, L. E. A. Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas de Nuvem. Dissertação (Mestrado em Ciência da Computação) – Centro de Informática, Universidade Federal de Pernambuco, Recife, 2013. SANTOS, D. R. Uma Arquitetura de Controle de Acesso Dinâmico Baseado em Risco para Computação em Nuvem. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciências da Computação, Universidade Federal de Santa Catarina, Florianópolis, 2013. VERAS, M. Cloud Computing, Nova Arquitetura da TI. Rio de Janeiro: Brasport, 2012. https://www.gartner.com/doc/reprints?id=1-1ZDZDMTF&ct=200703&st=sb https://www.gartner.com/doc/reprints?id=1-1ZDZDMTF&ct=200703&st=sb 23 Modelos de Serviço da Nuvem Autoria: Tiago Cariolano Leitura crítica: Douglas Fabiano Lourenço Objetivos • Identificar para cada um dos modelos de serviço (IaaS, PaaS e SaaS) suas principais características, objetivos e aplicações. • Descrever as diferenças entre os três modelos de serviço de computação em nuvem: IaaS, PaaS e SaaS. • Especificar os requisitos dos modelos de serviço da nuvem. 24 1. Introdução A computação em nuvem é o paradigma em que um usuário acessa todos os recursos de infraestrutura computacional, requeridos para as necessidades do negócio, com o mínimo de interação com o provedor de serviço (SCHMITT; DAMASCO, 2012). O acesso a tais recursos se dá por meio de serviços organizados em categorias denominadas modelos de serviços. Este Tema tem como objetivo apresentar os três principais Modelos de Serviço de Nuvem: Infraestrutura como um Serviço, Plataforma como um Serviço e Software como um Serviço. Durante a descrição de cada modelo, são apresentados sua arquitetura, seu objetivo e suas aplicações. 1.1 Modelos de Serviço da Nuvem Os recursos da nuvem são fornecidos ao usuário de maneira transparente, por meio de serviços. Ele adquire os recursos de hardware ou software da infraestrutura, sem a necessidade de ter conhecimento de como os componentes da arquitetura da nuvem estão organizados. A maior parte das empresas demanda tecnologia da informação para suprir as atividades de gerenciamento e tomada de decisão dos negócios. Sem o acesso à computação em nuvem, é necessário adquirir, gerenciar, manter e atualizar toda a sua infraestrutura de processamento, armazenamento e comunicação para ter à disposição a informação de maneira ágil e segura (FERNANDES, 2013). O provedor de serviço da nuvem pode fornecer três principais modelos de serviços para os usuários: Infraestrutura como um serviço (Infrastructure as a service – IaaS), Plataforma como um serviço (Platform as a service – PaaS) e Software como um serviço (Software 25 as a Service – SaaS). O modelo de IaaS se refere ao fornecimento de infraestrutura computacional como um serviço (FERNANDES, 2013); o PaaS se caracteriza por fornecer plataforma de desenvolvimento, teste e disponibilização de aplicações sem a necessidade de gerenciamento do hardware (FERNANDES, 2013); e o modelo SaaS proporciona um software ou uma aplicação com finalidades específicas para múltiplos usuários (SCHMITT; DAMASCO, 2012). A Figura 1 apresenta uma analogia entre o serviço de transporte de indivíduos e os modelos de serviço em nuvem. O modelo de desenvolvimento de software tradicional é denominado modelo on premise e corresponde ao motorista que compra seu próprio carro. O modelo IaaS corresponde ao carro alugado, porque, embora o veículo (infraestrutura) esteja disponível, o próprio usuário necessita dirigir (desenvolver, manter e atualizar a aplicação). O modelo PaaS corresponde ao táxi, pois o veículo é dirigido pelo taxista, porém a plataforma fornecida é específica para cada usuário. Por fim, o modelo SaaS corresponde ao ônibus, pois o provedor de serviço fornece a aplicação e a distribui para múltiplos usuários. 26 Figura 1 – Analogia entre o modelo de transporte de indivíduos e o modelo de serviço na nuvem Fonte: elaborada pelo autor. 2. Infraestrutura como um Serviço O modelo de serviço IaaS corresponde ao fornecimento de recursos da infraestrutura da nuvem, de maneira que o usuário, como ressaltado por Fernandes (2013), tenha à sua disposição uma infraestrutura totalmente gerenciável e configurável, sem a necessidade de imobilização dos dispositivos. Segundo Bruschi (2016), o IaaS também é chamado por alguns autores como sistema operacional de nuvem, o que ocorre devido à nuvem controlar os dispositivos físicos e fornecer 27 abstrações das camadas subjacentes da arquitetura, assim como um sistema operacional em um computador pessoal. 2.1 Arquitetura O provedor de serviço gerencia a infraestrutura, enquanto o usuário compra, instala, configura e gerencia seu próprio software, como sistemas operacionais, middleware e aplicações. O usuário é capaz de adquirir elementos da infraestrutura de hardware e software e outros componentes do datacenter da nuvem sem a necessidade de imobilizar os recursos utilizados (FERNANDES, 2013). O usuário não tem controle sobre a infraestrutura da nuvem; logo, não tem poder para decidir as marcas ou os modelos dos equipamentos que a compõem. No entanto, ele pode controlar os recursos virtuais disponibilizados, como apontado por Schmitt e Damasco (2012), e pode configurar e escolher ambientes virtuais que atendam às suas necessidades. Isso significa que o usuário adquire um serviço sob demanda. O provedor de serviços contratado pelo usuário é quem se encarrega de adquirir e instalar todos os equipamentos do datacenter da nuvem, como servidores, dispositivos de armazenamento, dispositivos de rede e outros equipamentos (SCHMITT; DAMASCO, 2012). As decisões da arquitetura, da operação, da manutenção e da atualização da infraestrutura também são de responsabilidade do provedor de serviços. O serviço é oferecido ao usuário de maneira totalmente terceirizada e pago por ele de acordo com a sua utilização. Embora o usuário não tenha acesso aos equipamentos físicos da nuvem, o modelo IaaS fornece maior grau de controle a ele do que os modelos PaaS ou SaaS. Isso se deve porque, como ressalta Bruschi (2016), é ele quem determina a quantidade de recursos que serão alocados para as suas aplicações, enquanto nos modelos PaaS e SaaS não é possível 28 sequer escolher a quantidade de recursos da infraestrutura que deseja utilizar. A Figura 2 apresenta a arquitetura do modelo de serviço IaaS. Nela, a nuvem é a camada mais inferior e é composta dos equipamentos de processamento, de armazenamento e de rede. Tais equipamentos não são acessados diretamente pelo usuário, o qual faz uso de uma camada de virtualização para acessar os recursos. A camada de virtualização é composta por máquinas virtuais, o que possibilita um desacoplamento dos dispositivos físicos do acesso do usuário. As máquinas virtuais geralmente oferecem servidores virtuais, com sistemas operacionais e configurações definidas pelo usuário. Figura 2 – Arquitetura do modelo de serviço IaaS Fonte: elaborada pelo autor. Os recursos disponibilizados pelo modelo IaaS não são aplicações com funcionalidades específicas, nem algum recurso de plataforma da infraestrutura, como um sistema operacional instalado em algum servidor físico. Os elementos disponibilizados ao usuário são recursos virtualizados de processamento, armazenamentoou comunicação, e os 29 componentes de software são essenciais para o gerenciamento de tais recursos. Exemplos de componentes de hardware disponibilizados ao usuário são núcleos de processamento, espaço de armazenamento em disco e largura de banda de rede. Já como componentes de software disponíveis ao usuário, os principais exemplos são máquinas virtuais e servidores virtuais. O modelo IaaS é fortemente baseado em infraestrutura de computação e técnicas de virtualização (BRUSCHI, 2016). Isso significa que máquinas virtuais e recursos virtualizados são visíveis e disponíveis aos usuários. As máquinas virtuais são gerenciadas por um orquestrador, o qual é responsável por criá-las, carregá-las e gerenciá-las (BRUSCHI, 2016). O orquestrador é um software de virtualização para gerenciamento de máquinas virtuais. Ele tem acesso às solicitações de recursos de processamento, armazenamento e comunicação demandadas pelos usuários da nuvem e pode dimensionar o uso de tais recursos. Quando novos equipamentos são adicionados à infraestrutura da nuvem, ou quando equipamentos são atualizados, geralmente o orquestrador encontra automaticamente os novos recursos computacionais físicos da infraestrutura para executar as máquinas virtuais (BRUSCHI, 2016). Dessa forma, ele pode auxiliar na comercialização das soluções oferecidas pela nuvem, fornecendo informações da capacidade da infraestrutura ao provedor de serviço. 2.2 Características, objetivos e aplicações O IaaS é um modelo que pode ser aplicado para uma variedade de cenários. No entanto, algumas características do modelo de negócio devem ser observadas antes de o usuário escolher um provedor de serviço de IaaS. Esse modelo de serviço tem o objetivo de disponibilizar 30 de maneira mais fácil e acessível os recursos que são essenciais para que o usuário possa instalar suas aplicações e softwares (BRUSCHI, 2016). Em um modelo de IaaS, o usuário contrata o serviço de infraestrutura no modelo de pagamento pelo uso do serviço (pay-per-use), devendo, assim, atentar-se para o modelo de custo no momento de escolher o provedor de serviço. Como o provedor de serviço aloca os recursos de maneira dinâmica e elástica para atender às flutuações de negócio, os diversos provedores do mercado possuem diferentes modelos de custo, o que pode tornar difícil para o usuário comparar os provedores de serviço. Outra característica a ser observada no momento de aplicar o modelo IaaS está relacionada à disponibilidade e à confiabilidade do serviço. Como a infraestrutura está na nuvem, um erro ou comportamento anômalo de algum equipamento pode gerar um erro na aplicação do usuário, cabendo a ele tratá-lo e recuperar a aplicação para que volte ao funcionamento normal. O usuário também deve observar se o acordo a nível de serviço (Service Level Agreement – SLA) é garantido pela gestão do provedor de serviço. Ele é um contrato firmado entre o usuário e o provedor de serviço que estipula as condições de operação e os parâmetros de desempenho do serviço. Para adotar o modelo IaaS, o usuário deve observar se o provedor de serviço é capaz de garantir os requisitos acordados. 3. Plataforma como um Serviço O modelo PaaS oferece não apenas a infraestrutura física, mas todos os sistemas subjacentes, como middlewares, sistemas operacionais e virtualização, de maneira elástica, robusta, com custo proporcional ao uso e rapidamente disponível ao usuário (FERNANDES, 2013). 31 3.1 Arquitetura A chave de entendimento da PaaS é que a plataforma para o desenvolvimento das aplicações já foi instalada e configurada na infraestrutura do provedor de serviço da nuvem (FERNANDES, 2013). O usuário contrata o serviço de PaaS e, geralmente, recebe um conjunto de ferramentas para o desenvolvimento da aplicação. Além disso, recebe softwares que permitem manter, distribuir e atualizar a aplicação para uma grande quantidade de clientes, movimentando uma grande quantidade de dados por meio da internet (SCHMITT; DAMASCO, 2012). O provedor de serviço cria uma plataforma de desenvolvimento que facilita a implementação das aplicações. O usuário, por sua vez, adquire um conjunto de componentes de hardware e de software configuráveis para desenvolver sua aplicação. Segundo Schmitt e Damasco (2012), alguns dos tipos de serviço oferecidos por uma nuvem baseada em PaaS são: ferramentas de linguagens de programação, banco de dados e suporte de tempo de execução. A principal diferença do modelo IaaS para o PaaS é que, no primeiro, são oferecidos serviços que atuam no gerenciamento da infraestrutura física da nuvem, enquanto no modelo PaaS os serviços oferecidos são plataformas para o desenvolvimento de aplicações, as quais utilizam a infraestrutura do IaaS. É importante notar que uma nuvem pode contratar um serviço de IaaS de outra nuvem e oferecer para seus usuários um serviço de PaaS. A Figura 3 apresenta a arquitetura do modelo de serviço PaaS. É possível observar que a camada inferior é composta pelos componentes de IaaS, enquanto a camada de PaaS gerencia, mantém e atualiza os componentes da infraestrutura da nuvem e oferece ao usuário sistemas operacionais, linguagens de programação e ferramentas de 32 desenvolvimento de software e de virtualização. A nuvem PaaS também oferece atualização e recursos de segurança para a plataforma de desenvolvimento disponibilizada ao usuário. O usuário pode gerenciar, por meio da internet, os componentes da PaaS, porém não pode acessar diretamente a infraestrutura, por esta não ser exposta a ele. Figura 3 – Arquitetura do modelo PaaS Fonte: elaborada pelo autor. No modelo PaaS, o programador não se preocupa em instalar sistemas operacionais, bancos de dados, linguagens de programação ou outros recursos específicos de plataforma, concentrando-se apenas no desenvolvimento da aplicação (SCHMITT; DAMASCO, 2012). 33 3.2 Características, objetivos e aplicações Um provedor de serviço de PaaS oferece um ambiente integrado simples e intuitivo para o desenvolvedor testar, monitorar ou hospedar suas aplicações web e bases de dados (NEVES, 2013). Sob o ponto de vista do desenvolvedor de software, o modelo PaaS é um facilitador, pois o programador obtém todas as ferramentas necessárias para executar uma aplicação de maneira escalável e sob demanda. Como a infraestrutura e a plataforma de desenvolvimento estão instaladas e configuradas na nuvem, o programador pode levar seus esforços exclusivamente para o desenvolvimento da aplicação. O processo de projetar e implementar a aplicação é quase que totalmente focado nas regras do negócio, pois todos os componentes de hardware e software, necessários para o desenvolvimento das aplicações, são disponibilizados de maneira transparente para o desenvolvedor (FERNANDES, 2013). O modelo PaaS alavanca a produtividade das empresas, pois evita o tempo gasto com instalação e configuração de servidores, sistemas operacionais, banco de dados, sistemas de middleware, como sistemas operacionais, serviços de rede ambientes de virtualização, balanceamento de carga, replicação ou clusterização (FERNANDES, 2013). Por meio desse modelo, o protótipo de uma aplicação pode ser rapidamente implementado. Além disso, o investimento inicial para desenvolvê-lo e colocá-lo em produção é relativamente baixo, porque não é necessária a compra de equipamentos da infraestrutura nem de licenças de diversos softwares requeridos para o desenvolvimento. Quando o usuário adquire um serviço de PaaS, deve observar os requisitos da sua aplicação, como sistema operacional e linguagem de programação, para escolher qual o melhor provedor de serviço. Geralmente, é mais fácil uma migração de uma solução on premise para 34 uma solução PaaS, ou o desenvolvimento de uma nova aplicação, do que a migração entre diferentes provedores de serviço de PaaS. O principal motivo para a dificuldade em migrar aplicações entre diferentes provedores de serviço de PaaS é quea aplicação pode ficar presa ao provedor de serviço original (FERNANDES, 2013). Embora existam esforços para a criação de padronizações de ambientes de PaaS, ainda é algo incipiente, demandando atenção do usuário. Quando o usuário decide migrar sua aplicação, ele pode incorrer no efeito lock-in, ou seja, ele contrata um serviço no modelo PaaS e se vê preso ao provedor de serviço, pois os protocolos de acesso e as interfaces da plataforma de PaaS são proprietários. Esse cenário é relativamente comum, pois a maioria dos serviços de PaaS é proprietária. Desenvolver uma aplicação sob o modelo PaaS com protocolos de acesso proprietários é custoso e, muitas vezes, torna-se inviável migrar a aplicação para outra plataforma (FERNANDES, 2013). Um serviço PaaS de acesso proprietário também pode restringir o uso de sistemas já prontos, de interesse do usuário, que não atendam aos requisitos de acesso da plataforma (FERNANDES, 2013). Um exemplo comum é a aplicação do usuário necessitar de uma plataforma de apoio, a qual não é fornecida pelo provedor de serviço de PaaS. Assim, cabe ao usuário certificar-se de que todos os requisitos para o desenvolvimento de sua aplicação são atendidos. Existe um trade off entre o ganho de produtividade e o efeito lock-in que deve ser considerado pelo usuário. Isso significa que, embora seja muito mais rápido e frequentemente menos custoso desenvolver uma aplicação em uma plataforma PaaS, o usuário pode ser impedido de trocar de provedor de serviço, sob o risco de ter que arcar com um custo extremamente elevado. 35 Assim, quando o usuário necessita de maior flexibilidade com relação à plataforma, deve procurar um serviço de PaaS com protocolos e interfaces padronizados. Em último caso, se a flexibilidade for um fator determinante na escolha, deve considerar um provedor de serviço de IaaS, o qual fornece a maior flexibilidade possível. 4. Software como um Serviço No modelo de SaaS, a aplicação é acessada na nuvem, por meio da internet, sem a necessidade de instalação, como apontado por Fernandes (2013). O software fica disponível para múltiplos usuários por meio de uma interface com a internet, como um navegador (SCHMITT; DAMASCO, 2012). Esse modelo é capaz de mudar as regras de negócio, uma vez que o software fica disponível para os usuários pela nuvem a qualquer momento, sendo pago apenas quando é utilizado (SCHMITT; DAMASCO, 2012). 4.1 Arquitetura No modelo SaaS, o usuário adquire a licença para utilizar a aplicação na nuvem, diferentemente do modelo tradicional de licenciamento, em que o usuário adquire a licença e deve instalá-la em quantos equipamentos forem necessários. O provedor de serviço é quem possui o total controle da infraestrutura, como servidores, dispositivos de rede, sistemas operacionais e plataformas de programação, e da aplicação. O desenvolvimento, a depuração, a manutenção, a atualização e a disponibilização da aplicação ao usuário são de responsabilidade do provedor de serviço. Dessa forma, o usuário não necessita ter conhecimento sequer de como a aplicação é desenvolvida, sendo necessário apenas conhecer sua interface. 36 A Figura 4 apresenta a arquitetura do modelo de serviço SaaS. Nota-se que as duas camadas inferiores (IaaS e PaaS) dão suporte para a camada de SaaS, de modo que os recursos de infraestrutura e de plataforma são utilizados pelo provedor de serviço para implementar seu serviço e sua aplicação. O provedor de serviço SaaS pode implantar as duas camadas subjacentes, ou pode contratar outras nuvens para fornecerem tais serviços. Os usuários têm acesso apenas às aplicações fornecidas pelo provedor de serviço, o qual realiza a manutenção e a atualização da aplicação. Figura 4 – Arquitetura do modelo de serviço SaaS Fonte: elaborada pelo autor. 4.2 Características, objetivos e aplicações De acordo com Fernandes (2013), um serviço de SaaS pode ser caracterizado por três aspectos: licenciamento, localização e gerenciamento. O primeiro se refere à forma como o software é 37 disponibilizado ao usuário e pago por ele; o segundo corresponde às ações necessárias e decorrentes da escolha do local geográfico em que o software será disponibilizado; e o terceiro contempla principalmente a prática de monitorá-lo, além de gerenciar a compra, renovar e gerenciar as licenças da aplicação. Sobre o licenciamento, existem dois tipos de licença: por usuário e baseada em uso. A primeira é o tipo de licença padrão do SaaS e corresponde ao direito de uso da aplicação para um usuário que pagou por tal direito; já na segunda, o usuário paga apenas quando usa a aplicação. A característica de localização de um software SaaS é relacionada principalmente às traduções do software, de acordo como seu local de disponibilização. Também está relacionada às regulamentações governamentais dos países de atuação do provedor de serviço. Pode haver restrições legais quanto à utilização de dados armazenados em um país, enquanto o usuário consegue acessá-los de outro país. Os principais objetivos do gerenciamento de SaaS são conter os custos das aplicações, gerenciar licenças e compras, gerenciar fornecedores e contratos, garantir visibilidade das compras, proteger e manter seguras as aplicações, manter um inventário ativo das aplicações e melhorar a colaboração da organização. 38 Figura 5 – Principais características do software de SaaS Fonte: elaborada pelo autor. Quando o usuário contrata um serviço de SaaS, as responsabilidades de desenvolvimento, manutenção e atualização do software são transferidas para o provedor de serviço. Logo, o modelo de serviço SaaS deve ser aplicado quando o usuário requer tal transferência de responsabilidades. Em um cenário em que o usuário corresponde a uma empresa ou organização, a equipe de tecnologia da informação interna pode se manter focada em suprir as necessidades das regras de negócio, bem como os objetivos comerciais e empresariais (FERNANDES, 2013). Essa equipe passa de uma atuação apenas operacional a uma atuação mais voltada para orientar as unidades de negócio da empresa em como usarem melhor as tecnologias para alcançarem seus objetivos (FERNANDES, 2013). 39 Outro ponto vantajoso do modelo SaaS é que a equipe de tecnologia da informação não corre o risco da obsolescência e pode atuar mais diretamente para contribuir com o sucesso do negócio (FERNANDES, 2013). 5. Conclusão Este Tema apresentou os modelos de serviço fornecidos pelos provedores de serviço de nuvem. Além disso, foram descritas as principais características, os objetivos e as aplicações dos modelos IaaS, PaaS e SaaS, sendo possível identificar e escolher o melhor modelo de serviço para os diversos cenários do mundo real a partir dos conceitos apresentados. Referências Bibliográficas BRUSCHI, G. C. StackAct: Avaliação de Desempenho em uma Nuvem IaaS Multicamadas. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Universidade Estadual Paulista, São José do Rio Preto, 2016. FERNANDES, F. H. Riscos de Segurança em Cloud Computing: Questões de segurança e gestão de riscos – Parte 4. Florianópolis, 2013. Disponível em: https:// www.researchgate.net/publication/261878968_Riscos_de_segurancas_em_Cloud_ Computing. Acesso em: 14 out. 2020. NEVES, P.; CUNHA, D.; SOUSA, P. Cloud Platform-as-a-Service: Saber e Fazer Telecomunicações. Portugal: Telecom Inovação, 2013. SCHMITT, J.; DAMASCO, K. L. Desenvolvimento de um Serviço Utilizando as Modalidades IaaS e PaaS para Cloud Computing: um estudo de caso. Monografia (Graduação em Sistemas de Informação) – Universidade do Sul de Santa Catarina, Palhoça, 2012. https://www.researchgate.net/publication/261878968_Riscos_de_segurancas_em_Cloud_Computing https://www.researchgate.net/publication/261878968_Riscos_de_segurancas_em_Cloud_Computing https://www.researchgate.net/publication/261878968_Riscos_de_segurancas_em_Cloud_Computing 40 Aplicações da Computaçãoem Nuvem Autoria: Tiago Cariolano Leitura crítica: Douglas Fabiano Lourenço Objetivos • Ampliar a visão sobre diferentes domínios de aplicação da Computação em Nuvem. • Descrever e especificar os requisitos, a utilidade e as limitações de sistemas de bancos de dados na nuvem. • Descrever e especificar os requisitos e as limitações de arquiteturas da Internet das Coisas (IoT) em nuvem. • Descrever e especificar os requisitos e as limitações de soluções baseadas em redes sociais, plataformas educacionais e Ciência de Dados para arquiteturas em nuvem. 41 1. Introdução A Computação em Nuvem é um paradigma que habilita o uso de diversas tecnologias para o desenvolvimento e aprimoramento das atividades e aplicações de seus usuários (indivíduos ou organizações). Sua principal característica, que alavanca o potencial de resolução dos problemas dos usuários, é a sua alta capacidade de prover recursos computacionais de maneira eficiente. Este Tema tem o objetivo de apresentar aplicações relevantes da Computação em Nuvem para fornecer uma visão holística desse paradigma computacional. A fim de explicitar a sua natureza heterogênea e a sua ampla variedade de cenários de aplicação, são apresentadas aplicações das áreas de banco de dados, IoT, redes sociais, educação e ciência de dados. 2. Banco de Dados Alguns dos elementos que compõem uma Arquitetura na Nuvem são componentes responsáveis pelo armazenamento e gerenciamento de dados. Tais componentes vão desde dispositivos físicos, como discos rígidos (Hard Disk Drive – HDD) ou discos de estado sólido (Solid State Drive – SSD), até componentes de softwares, como sistemas de banco de dados. Em um servidor de um datacenter na Nuvem, o Sistema de Gerenciamento de Banco de Dados (SGBD) é um dos principais componentes de software. Ele é responsável por definir, manipular, recuperar e gerenciar os dados armazenados por um sistema de arquivos em um sistema operacional. 42 Quando um usuário necessita de armazenamento na nuvem, normalmente contrata um serviço de IaaS1, em que o provedor de serviço da nuvem disponibiliza máquinas virtuais e espaço de armazenamento para o usuário poder instalar um SGBD. No entanto, muitos provedores de serviço oferecem um modelo de serviço exclusivamente de banco de dados, ocultando totalmente a implantação dos dispositivos físicos e os detalhes da arquitetura. Esse modelo de serviço é chamado de Data Base como um Serviço (Data Base as a Service – DbaaS) e consiste em oferecer a implantação e a instalação de uma plataforma de armazenamento de dados de maneira transparente ao usuário. No modelo DBaaS, o usuário não visa implantar os componentes necessários que atendam às demandas de desempenho, como vazão e latência, de suas aplicações. Na verdade, ele contrata um serviço de DBaaS com um conjunto de SLA2 pré-acordado e espera que o serviço cumpra tais acordos. Para habilitar o modelo de serviço DBaaS, de maneira que o serviço seja fornecido eficientemente e que o conjunto de SLA seja respeitado, sistemas de monitoramento de recursos são componentes fundamentais na Arquitetura da Nuvem. O sistema de monitoramento de recursos mede e avalia o desempenho dos demais componentes da arquitetura, desde dispositivos físicos até as aplicações. São exemplos de parâmetros de desempenho observados pelo sistema de monitoramento de recursos métricas relacionadas à confiabilidade, ao consumo de energia, à capacidade de atender ao conjunto de SLA ou à segurança. 1 Infraestrutura como um Serviço (IaaS – Infrastructure as a Service) se refere ao fornecimento de recursos da infraestrutura, geralmente recursos de processamento, armazenamento e comunicação, do provedor de servi- ço para o usuário. 2 Acordos à Nível de Serviço (SLA – Service Level Agreement) é o contrato entre o usuário e o provedor de serviço em que são estipuladas as condições de operação, como parâmetros de desempenho, do serviço contrata- do. 43 Abreu (2013) propôs um framework chamado MyDBaaS para o monitoramento de recursos de armazenamento na nuvem baseado no modelo de serviço DBaaS. O MyDBaaS é composto de frozen spots, que são bibliotecas de programação fixas para monitoramento dos recursos de DBaaS, e hot spots, que são bibliotecas de programação que permitem aos desenvolvedores ou usuários adicionar seus próprios códigos para interagir com o framework. O MyDBaaS é composto por um monitor instalado em cada servidor físico, máquina virtual e aplicação do usuário. Nos servidores físicos, o monitor coleta dados sobre métricas dos dispositivos físicos, do hypervisor3 e das máquinas virtuais hospedadas. Nas máquinas virtuais, dados sobre métricas do estado interno das máquinas virtuais, dos SGBDs hospedados nas máquinas virtuais e das instâncias dos bancos de dados existentes são coletados. Já nas aplicações, são coletados os dados das métricas relacionadas às cargas de trabalho das requisições das aplicações para as instâncias dos bancos de dados instanciados. A Figura 1 apresenta o ambiente de execução do MyDBaaS e ilustra a presença do monitor nos servidores, nas máquinas virtuais e nas aplicações. Na Figura 1, a Infraestrutura Física é composta por discos rígidos, os quais possuem dados coletados pelo monitor. Os discos rígidos são gerenciados pelo Hypevisor, o qual constitui uma camada intermediária e de interface entre os dispositivos de armazenamento físicos e as máquinas virtuais. Cada máquina virtual pode conter diversos SGBDs, os quais compõem a camada de dados. Também é possível notar que um Coordenador de Monitoramento se comunica com cada instância do monitor e gerencia os recursos de suas instâncias, 3 O hypervisor é o Monitor de Máquina Virtual (MMV), o qual recebe os eventos da infraestrutura física e notifica a máquina virtual, integrando o recurso físico com o recurso virtualizado. 44 além de receber os dados das métricas coletadas e os armazenar em uma base de dados. Figura 1 – Monitoramento de recursos em um modelo de serviço DBaaS Fonte: adaptada de Abreu (2013, p. 50). Toda essa infraestrutura de DBaaS permite que o serviço de armazenamento seja fornecido para os Clientes (usuários) e as Aplicações de maneira totalmente transparente. As aplicações de 45 banco de dados na nuvem permitem que o usuário não necessite ter conhecimento da arquitetura da nuvem nem da infraestrutura, possibilitando que volte sua atenção exclusivamente para o desenvolvimento e aprimoramento de sua aplicação. 3. Internet das Coisas A Internet das Coisas (Internet of Things – IoT) se refere ao paradigma computacional que visa permitir a interconexão de qualquer coisa, em qualquer lugar, por meio da internet. Uma coisa, ou dispositivo da IoT, é qualquer objeto físico, normalmente um sensor ou um atuador, que é instrumentado com recursos de processamento, armazenamento e comunicação. Geralmente tais dispositivos são baratos, possuem poucos recursos computacionais e não são capazes de atender à demanda de processamento das aplicações. Aplicações que possuem características e requisitos semelhantes são comumente agrupadas no chamado domínio de aplicação. Casas inteligentes (smart homes), infraestruturas inteligentes, segurança e vigilância, cuidados de saúde (healthcare), cidades inteligentes (smart cities) e automação industrial4 são exemplos de domínios de aplicações da IoT. Os dispositivos da IoT geram o dado que deve ser processado e, a partir da informação gerada, este é disponibilizado ao usuário para a tomada de decisão. Devido aos escassos recursos dos dispositivos da IoT, o processamento de dados é frequentemente encaminhado para a nuvem. Como os recursos da nuvem são virtualmente ilimitados, quando comparados com os recursos disponíveis nos dispositivos 4 Um importante paradigma relacionado à automação industrial é a chamada Indústria 4.0. Ele pode ser caracterizado pelo empoderamento dos processos de fabricação físicos com tecnologiasdo big data, aprendiza- gem de máquina (machine learning) e aprendizagem profunda (deep learning), interconectando os ambientes, as operações e os processos de diferentes companhias por meio da IoT. 46 da IoT, o grande volume de dados gerados pelas coisas pode ser processado na infraestrutura da nuvem. Cidades inteligentes são um domínio de aplicação da IoT, em que a explosão de dados gerados pelos dispositivos faz necessário o uso da Computação em Nuvem para o processamento dos dados. Em uma cidade inteligente, milhares de dispositivos são conectados para a aquisição de dados de câmeras, sensores (temperatura, pressão, entre outros), dispositivos de computação vestível (wearables5), além de uma grande variedade de outros tipos de dispositivos da IoT. O volume de dados gerados por tais dispositivos é imenso, possui uma alta variedade e é gerado em alta velocidade e em tempo real, permitindo caracterizar tais dados como parte do big data. Somente ambientes de alto poder computacional, como datacenters na nuvem, são capazes de processar os dados da IoT. As redes veiculares são um importante paradigma abordado no contexto de cidades inteligentes. Em uma rede veicular, milhares de veículos automotores são conectados por comunicação sem fio, além de serem embarcados com uma grande variedade de sensores e sistemas de comunicação. O principal objetivo de instrumentar veículos e interconectá-los em rede consiste em reduzir os efeitos nocivos do trânsito em grandes cidades, como problemas de saúde e vítimas fatais. As redes veiculares podem ajudar os motoristas a tomarem decisões que otimizem seu tempo no trânsito, além de fornecer informações para governos e organizações da sociedade para uma mobilidade eficiente e segura. Almeida (2014) propôs um serviço para realizar provisionamento de contexto na nuvem para aplicações de redes veiculares. O contexto se refere à informação obtida a partir do processamento dos dados brutos gerados pelos veículos automotores. O serviço proposto pelo 5 Acessórios vestíveis por seres humanos, os quais são instrumentados para adquirir as características de um dispositivo da IoT. Alguns exemplos são relógios, óculos, luvas e lentes de contato instrumentados. 47 autor consiste em um sistema na nuvem que gera, armazena e gerencia informações contextuais veiculares. Por meio do serviço de provisionamento de contexto veicular, o modelo de serviço de nuvem adotado é o contexto como um serviço (Context as a Service – CaaS). Nele, o provedor de serviço da nuvem fornece dados contextuais de um determinado domínio de aplicação para o usuário, no caso dados contextuais de veículos automotores. No trabalho de Almeida (2014), a informação de contexto se refere à velocidade de veículos em uma via. O serviço da nuvem fornece para as aplicações dos usuários a informação de contexto de velocidade dos veículos, por exemplo, rápido, médio ou devagar, a qual é utilizada para monitorar e gerenciar o trânsito. A arquitetura do serviço proposto por Almeida (2014) pode ser observada na Figura 2. Nessa arquitetura, podemos observar componentes internos e externos à nuvem. O componente Sensores Provedores de Dados é responsável por coletar as informações dos sensores pertencentes aos veículos automotores. O componente Outras Fontes corresponde às interfaces para a publicação das informações de contexto veiculares em redes sociais. A Aplicação é o componente que solicita o acesso às informações de contexto dos veículos. O componente que realiza a interface entre os componentes internos e externos é o Controlador de Infraestrutura. Ele é responsável por receber os dados e as instruções externas e repassá-los para os componentes internos da nuvem. Quando os Sensores Provedores de Dados geram os dados brutos, o Controlador de Infraestrutura os repassa para o Agente de Contexto, o qual implementa as interfaces com cada sensor. O Agente de Contexto coleta os dados dos Sensores seguindo os padrões do Codificador de Contexto e os armazena no Repositório de Contexto. A Aplicação pode gerar instruções de contexto, as quais levam o Codificador de Contexto a instanciar um Agente de 48 Contexto e um Manipulador para cada Aplicação. Sempre que um novo contexto é inserido no Repositório de Contexto, o Manipulador é acionado para chamar o Agente de Eventos. Algumas das ações do Agente de Eventos podem postar em uma rede social que a via está congestionada, ou notificar uma aplicação sobre o congestionamento, por exemplo. Figura 2 – Arquitetura de Infoestrutura para serviço de fornecimento de contexto veicular Fonte: adaptada de Almeida (2014, p. 62). 49 O serviço de CaaS proposto por Almeida (2014) permite que aplicações acessem informações de contexto de veículos automotores no trânsito. É interessante também observar que, devido à unificação da comunicação da Infoestrutura com os componentes externos por meio do Controlador da Infoestrutura, a nuvem é capaz de se comunicar com qualquer tipo de aplicação, desde que ela implemente o padrão de comunicação do Controlador de Infoestrutura. Tal abordagem permite observar como a nuvem pode fornecer serviços da IoT para atender aos requisitos dos usuários. 4. Aplicações Uma aplicação da nuvem (cloud application) é um software que usuários acessam em servidores remotos localizados na nuvem e não em suas máquinas locais. Com o surgimento e a disseminação de tecnologias da IoT e paradigmas, como a aprendizagem de máquina, deep learning e big data, a computação na nuvem também passou a apoiar aplicações da ciência de dados (data science), das redes sociais, da automação industrial, da saúde digital (e-health), das cidades inteligentes e de muitas outras. Os domínios de aplicações da nuvem são muito variados, tais como IoT, armazenamento de arquivos, gerenciadores de negócios, e-commerce, desenvolvimento web, edição de mídias (vídeos, áudios ou imagens), plataformas de educação e outros. Cada um desses domínios impõe requisitos computacionais, os quais podem ser atendidos por meio do fornecimento de recursos da nuvem para as aplicações. A fim de expandir a visão das capacidades da Computação em Nuvem, a seguir são apresentadas aplicações de redes sociais, educacionais e da Ciência de Dados. 50 4.1 Redes Sociais Uma rede social é uma plataforma de computação que permite a interação social entre indivíduos conectados em rede. As redes sociais geralmente são empregadas para os mais diversos interesses dos indivíduos, como relacionamentos, negócios, política e educação. A Computação em Nuvem apoia o desenvolvimento e o processamento de dados de redes sociais, por fornecer um ambiente de alto poder computacional para processar as informações e as requisições de milhões de indivíduos simultaneamente. Mansur et al. (2011) analisam o uso da Computação em Nuvem, por meio de redes sociais, para alavancar um processo colaborativo de educação. O objetivo do trabalho é proporcionar aos alunos o conhecimento advindo de um livro digital, um artigo digitalizado ou algum relato formal de vivência acadêmica, para que possam trocar ideias e ampliar sua visão holística sobre um tema proposto. Os autores propõem o uso da plataforma de leitura de livros digitais na nuvem Kindle, a qual pode ser acessada por meio de um dispositivo físico de leitura de livros digitais ou por redes sociais. O Kindle permite a compra de livros digitais e a realização de backup on-line na nuvem, além de fornecer funções como notas públicas, destaques populares, numeração real de página de livro digital, interação com redes sociais e avaliação do livro digital. As notas públicas são comentários sobre passagens do livro digital que podem ficar disponíveis para visualização de outros usuários, e os destaques populares são marcas em passagens de textos que também podem ficar disponíveis para outros leitores. Segundo Mansur et al. (2011), após o cadastro na plataforma do Kindle porparte dos professores e alunos, o professor pode disponibilizar um material (livro, artigo ou relato formal) para até seis alunos. A colaboração entre professor e aluno pode ocorrer por meio da leitura dos livros digitais ou por meio das redes sociais. 51 A colaboração por meio da leitura dos livros digitais ocorre com a utilização das ferramentas de notas públicas e destaques populares do Kindle. O professor pode mediar os comentários respondendo aos alunos ou fomentar discussões acerca de alguma passagem do texto. A colaboração por meio de redes sociais não requer a compra de leitores de livros digitais, pois os comentários sobre alguma passagem do livro podem ser realizados na própria rede social do aluno ou professor cadastrada no Kindle. O trabalho de Mansur et al. (2011) é um exemplo de como redes sociais implantadas em ambientes de Computação em Nuvem podem alavancar a interações entre os indivíduos. 4.2 Educação A Computação em Nuvem permite que atividades relacionadas à educação sejam desenvolvidas de novas formas, ampliando e modificando a maneira como o ensino é aplicado em escolas, universidades e demais instituições de ensino. A principal vantagem da Computação em Nuvem é proporcionar o compartilhamento de dados de maneira remota e em tempo real, possibilitando que alunos e professores separados por longas distâncias geográficas interajam, com o objetivo de expandir as formas de ensino. Junior (2016) mostrou como o serviço de apresentação de slides PowerPoint Online contribuiu para o desenvolvimento das atividades de uma disciplina de pós-graduação do curso de química da Universidade Federal de Viçosa. O PowerPoint Online faz parte de um conjunto de ferramentas de escritório disponibilizadas na nuvem no modelo SaaS (Software as a Service). O serviço da nuvem permite que diversos usuários colaborem em um mesmo documento em tempo real, sendo possível visualizar as edições de outros usuários e consultar em tempo real o histórico de versões do documento. O serviço também permite a 52 realização de compartilhamento de documento de maneira simplificada e o emprego de diversas interfaces para acessar o serviço, como computadores pessoais ou smartphones. Os resultados mostraram que a Computação em Nuvem contribuiu para o processo de ensino-aprendizagem, pois resolveu o problema coletivo de uma equipe de alunos em produzir um documento (apresentação de slides) de maneira cooperativa e participativa. 4.3 Ciência de dados A evolução das tecnologias de semicondutores, juntamente com o desenvolvimento e a expansão da internet e das demais redes de computadores, impulsionou a produção de uma grande quantidade de dados. Novos campos da ciência têm surgido para enfrentar os desafios impostos para lidar com a magnitude de dados e informações gerados. A Ciência de Dados (Data Science) é o campo de pesquisa que estuda como coletar, gerenciar, atualizar e analisar tais dados e informações. Um dos principais objetivos da Ciência de Dados é extrair informação e conhecimento a partir de dados brutos. Ela combina conhecimentos de captura de dados, estatística, matemática e programação para gerar informação, a qual é utilizada no processo de tomada de decisão de indivíduos e organizações. A Computação em Nuvem é um paradigma que favorece a Ciência de Dados, pois oferece um ambiente com a capacidade necessária para armazenar e processar a enorme quantidade de dados de que tal ciência trata. Por outro lado, a Ciência de Dados também é importante para a Computação em Nuvem, pois o gerenciamento, a atualização, a manutenção e a disponibilidade da nuvem podem usar técnicas e abordagens da Ciência de Dados para fornecer serviços de nuvem de maneira mais eficiente. 53 Como exemplo da Ciência de Dados aplicada à Computação em Nuvem, Santos (2014) avaliou técnicas de predição baseadas em séries temporais e redes neurais com o objetivo de aumentar o desempenho do escalonamento de tarefas em um ambiente de Computação em Nuvem. Técnicas de predição baseadas em séries temporais usam métodos estatísticos para analisar dados ordenados no tempo. Redes neurais são sistemas vagamente inspirados no funcionamento de redes neurais naturais do cérebro humano, que são capazes de prever o comportamento de variáveis a partir de uma fase inicial de treinamento. A abordagem de Santos (2014) visa identificar a melhor técnica preditiva do comportamento de uma sequência de tarefas que chegam em um cluster6 de datacenter. Cada tarefa é caracterizada pelos parâmetros de uso da CPU (Central Processing Unit), dos discos e da memória dos servidores. O algoritmo avalia se as propriedades estatísticas dos parâmetros da sequência de tarefas são alteradas no tempo, ou seja, ele testa a estacionariedade da sequência de tarefas, uma técnica baseada em séries temporais. A partir desse teste, diversos modelos preditivos são empregados no conjunto de dados para prever o comportamento das variáveis. Além disso, Santos (2014) treina uma rede neural para prever também o comportamento das variáveis. Os resultados indicam que a rede neural apresenta maior poder de predição do que as outras técnicas para realizar o escalonamento de tarefas. Alves (2016) também empregou técnicas da Ciência de Dados para auxiliar no gerenciamento de ambientes da nuvem. Seu trabalho consiste em uma arquitetura de monitoramento do estado de sistemas na nuvem, que coleta e monitora os logs não estruturados de diversos sistemas de middleware da nuvem e cria uma rede bayesiana, a qual apoia a tomada de decisão do arquiteto da nuvem. Uma rede bayesiana 6 O cluster é um arranjo de servidores, dispositivos de armazenamento e equipamentos de rede, normal- mente organizados em um ou mais conjuntos de racks, dentro de um datacenter. 54 é uma estrutura de dados que representa as relações de causa e efeito de um evento, bem como a probabilidade de ocorrência desse evento. A arquitetura do sistema de monitoramento é apresentada na Figura 3. O modelo de serviço da nuvem é Infraestrutura como um Serviço (IaaS), de modo que os recursos do componente Infraestrutura são fornecidos às aplicações. Esses recursos são virtualizados pelo componente Virtualização, o qual oferece recursos virtualizados da infraestrutura para o componente Middleware. As aplicações geram demandas de serviços representadas pelo componente Demanda de Serviços. Tais demandas chegam ao Middleware, o qual gerencia os recursos virtualizados provenientes da Virtualização e os provê como um serviço para as aplicações. O componente Monitoramento coleta os dados dos serviços disponibilizados pelo componente de Middleware e alimenta o componente Suporte à Decisão. Quando o Monitoramento envia os dados coletados para o Suporte à Decisão, esse componente prepara os dados para, em seguida, inferir uma nova Rede Bayseana. A partir da Rede Bayseana inferida, o Suporte à Decisão fornece as informações necessárias para o Middleware realizar a gestão dos serviços e o provisionamento adequado dos recursos da Infraestrutura. Os serviços gerenciados pelo componente de Middleware são, por exemplo, DHCP7 (Dynamic Host Configuration Protocol), DNS8 (Domain Name System) e FTP9 (File Transfer Protocol), e alguns exemplos de recursos disponibilizados pela infraestrutura são a carga da CPU, o uso de memória e o uso de disco. 7 O DHCP é um serviço de rede para endereçamento de interfaces de rede. 8 O DNS é um serviço que traduz uma URL (Uniform Resource Locator), um endereço de um recurso (geralmente um servidor) em rede, para um endereço IP (Internet Protocol). 9 O FTP é um protocolo para a transferência de arquivos. 55 Figura 3 – Arquitetura do sistema de monitoramento baseado em rede bayseana Fonte: elaborada pelo autor. Tanto o trabalho de Santos (2014) quanto o trabalho de Alves (2016) mostram que aplicações de Ciências de Dados podem beneficiar as tecnologias da Computação em Nuvem, ajudando apromover os recursos de maneira mais eficiente para os usuários. Referências Bibliográficas ABREU, D. A. MyDBaaS: um Framework para o Monitoramento de Serviços de Banco de Dados em Nuvem. Dissertação (Mestrado em Ciência da Computação) – Centro de Ciências, Universidade Federal do Ceará, Fortaleza, 2013. ALMEIDA, E. F. C. Infoestrutura: um Sistema em Nuvem para Prover Contexto como Serviço no Cenário de Internet das Coisas Integrado a Ambientes Veiculares. 56 Dissertação (Mestrado em Sistemas e Computação) – Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2014. ALVES, R. S. Rede Bayesiana Empregada no Gerenciamento da Saúde dos Sistemas na Computação em Nuvem. Dissertação (Mestrado em Ciência da Computação) – Centro de Ciências Exatas e de Tecnologia, Universidade Federal de São Carlos, São Carlos, 2016. JUNIOR, M.; VECE, J. P. Contribuições da Computação em Nuvem como Ferramenta Pedagógica na Educação Superior. Journal of Chemical Engineering and Chemistry, Viçosa, v. 2, n. 3, 2016. MANSUR, A. F. U. et al. Cloud Education: Aprendizagem Colaborativa em Nuvem através do Kindle e de Redes Sociais. CONGRESSO IBERO-AMERICANO DE TELEMÁTICA, 6, 2011, Gramado. Anais [...]. Gramado: CITA, 2011. SANTOS, T. F. M. Aplicação de Séries Temporais e Redes Neurais em um Ambiente de Computação em Nuvem. Dissertação (Mestrado) – Universidade Federal de Santa Maria, Santa Maria, 2014. 57 Projetos de arquiteturas na nuvem Autoria: Tiago Cariolano Leitura crítica: Douglas Fabiano Lourenço Objetivos • Descrever e especificar os passos necessários para o projeto de uma arquitetura na nuvem. • Identificar como as demandas para um projeto de arquitetura na nuvem são especificadas, descrevendo os requisitos funcionais e não funcionais do sistema. • Definir como um modelo de arquitetura na nuvem é especificado por meio de um modelo de visões de sistema. • Descrever como um projeto de uma arquitetura mista é especificado com relação ao modelo de arquitetura. 58 1. Introdução O projeto de uma arquitetura1 de nuvem consiste na especificação de um conjunto de artefatos conceituais que descrevem como uma arquitetura a ser implementada pode alcançar os requisitos definidos para um sistema baseado em Computação em Nuvem. 2. Ciclo de vida do projeto O desenvolvimento do projeto da arquitetura de nuvem é composto pela especificação dos requisitos do sistema, pelo desenvolvimento do modelo2 de arquitetura, pela implementação do modelo arquitetural na arquitetura concreta e pela validação da implementação por meio dos requisitos propostos. De acordo com Reis (2018), a arquitetura é construída para atender aos requisitos do sistema, os quais são estabelecidos na fase inicial do projeto. O modelo de arquitetura é definido após a especificação dos requisitos, e, por meio dele, é possível realizar sua implementação e sua validação, cujos objetivos são atender aos requisitos definidos no início do projeto. 1 Uma arquitetura de nuvem também é denominada de arquitetura de referência de nuvem. 2 Um modelo de arquitetura também é denominado de modelo de referência de arquitetura. 59 Figura 1 – Ciclo de vida de um projeto de arquitetura na nuvem Fonte: adaptada de Damasceno (2015, p. 71). A Figura 1 apresenta o ciclo de vida para o desenvolvimento de um projeto de arquitetura na nuvem. Inicialmente, os requisitos são coletados a partir dos atores da arquitetura, como os clientes de nuvem, provedores de nuvem ou arquitetos de nuvem. Em seguida, a partir dos requisitos, é realizada a especificação do modelo de arquitetura, por meio do qual os desenvolvedores realizam a implementação da arquitetura. Por fim, a implementação do modelo é validada, sendo os resultados dessa implementação comparados com os requisitos propostos inicialmente. 60 3. Requisitos Funcionais e Não Funcionais De acordo com Schmitt e Damasco (2012), os requisitos representam as expectativas e necessidades dos participantes envolvidos no projeto e podem ser divididos em funcionais e não funcionais. O requisito funcional representa uma funcionalidade que o sistema deve apresentar depois de pronto, indicando o que o sistema deve fazer, ou, de outro modo, qual a funcionalidade que o sistema deve possuir para que seu comportamento básico esperado seja alcançado. Ele também pode ser visualizado como as respostas esperadas do sistema de acordo com as entradas que são fornecidas a ele. Suponhamos que um Provedor de Nuvem ofereça um serviço de SaaS para edição de texto. No caso, um requisito funcional consistiria em fornecer uma interface gráfica que permita ao usuário editar o texto. Sem a interface gráfica, aquele serviço de PaaS não poderia ser oferecido; logo, o desenvolvimento de uma interface gráfica seria um requisito funcional ao sistema. Os requisitos não funcionais indicam como o sistema deve funcionar. Eles não afetam a funcionalidade básica do sistema, porém indicam como a funcionalidade deve ser alcançada. É importante destacar que o propósito básico do sistema pode continuar a ser atendido, mesmo que algum requisito não funcional não seja atendido. Considerando o exemplo citado anteriormente, de um serviço de SaaS para edição de texto, um requisito não funcional seria o tempo de resposta entre uma ação do usuário (por exemplo, copiar e colar um trecho de texto) e a resposta da interface gráfica. Em um provedor de nuvem, alguns requisitos funcionais típicos são o acesso à internet por parte do usuário, a disponibilização de recursos da nuvem e a ocultação da infraestrutura física da nuvem. Já os requisitos 61 não funcionais são, geralmente, parâmetros de desempenho do sistema, como o tempo de instanciação de máquinas virtuais ou a velocidade mínima de largura de banda da rede, ou outros parâmetros, como a segurança dos dados e das aplicações. Figura 2 – Requisitos Funcionais e Não Funcionais Fonte: elaborada pelo autor. Os requisitos geralmente são especificados textualmente e o nível de detalhamento corresponde à complexidade do sistema. A Figura 2 resume as principais diferenças entre os requisitos funcionais e não funcionais. Enquanto o primeiro atende às características dos produtos ou serviços e às solicitações (ou requisitos) do usuário, o segundo se refere às propriedades dos produtos ou serviços e às expectativas do usuário. 4. Modelo de Arquitetura No projeto da arquitetura de nuvem, o modelo de arquitetura consiste em um conjunto de artefatos que descrevem a arquitetura de nuvem. Segundo Damasceno (2015), o modelo de arquitetura ajuda a compreender as relações entre as entidades de algum domínio e o 62 desenvolvimento de padrões consistentes e as especificações daquele domínio. Diversas iniciativas da academia e da indústria oferecem modelos de arquitetura para diversas áreas da ciência da computação. No entanto, no contexto de Computação em Nuvem, por ser um campo ainda em ampla evolução, existe pouca variedade de opções de modelos de arquitetura. Segundo Damasceno (2015), entre os modelos existentes, aquele definido pelo National Institute of Standards and Technology (NIST3) é o mais amplamente utilizado. Figura 3 – Modelo de referência de arquitetura do NIST para Computação em Nuvem Fonte: adaptada de Damasceno (2015, p. 57). A Figura 3 apresenta a arquitetura de referência do NIST. Existem cinco atores (indivíduos ou organizações) que são responsáveis por participar e executar as tarefas (DAMASCENO, 2015): 3 O NITS é um órgão do governo dos Estados Unidos que estabelece padrões de referência em diversos campos. 63 • Transportador de Nuvem (Cloud Carrier): fornece conectividade entre o Provedor de Nuvem (Cloud Provider) e o Cliente de Nuvem (Cloud Consumer). • Auditor de Nuvem (Cloud Auditor): é responsável por avaliar os seguintes aspectos da nuvem de maneira independente dos outros atores: segurança (Security Audit), impacto na privacidade (Privacy ImpatcAudit) e desempenho (Performance Audit). • Intermediador de Nuvem (Cloud Broker): negocia as relações entre o Provedor de Nuvem e o Consumidor de Nuvem (Service Arbitrage); intermedia a relação entre eles (Service Intermediation); e agrega as demandas deles (Service Aggregation). • Provedor de Nuvem: possui um sistema de Gerenciamento de Serviço de Nuvem (Cloud Service Management), o qual fornece portabilidade (Portability), interoperabilidade (Interoperability), provisionamento (Provisioning), configuração (Configuration) e suporte ao negócio (Business Support). Além disso, ele é responsável pelo componente de orquestração de serviço (Service Orchestration), o qual é dividido em camadas: a Camada de Recursos Físicos (Physical Resource Layer) gerencia o hardware e as instalações físicas (Facility); a Camada de Controle e Abstração de Recursos (Resource Abstraction and Control Layer) é responsável por prover mecanismos, geralmente de virtualização, para abstrair a infraestrutura física da camada superior; e a Camada de Serviço (Service Layer) é responsável por gerenciar os modelos de serviços fornecidos pela nuvem, como IaaS4, PaaS5 ou SaaS6. • Provedor de Serviço: fornece serviços de segurança (Security) e privacidade (Privacy). 4 Infraestrutura como um Serviço (Infrastructure as a Service). 5 Plataforma como um Serviço (Platform as a Service). 6 Software como um Serviço (Software as a Service). 64 A especificação a partir do modelo de referência de arquitetura consiste no mapeamento de seus componentes para componentes do modelo de arquitetura. Nem todos os componentes necessitam ser utilizados, e novos componentes podem ser adicionados ao modelo de arquitetura, o qual geralmente é especificado por meio de diagramas de uma linguagem de especificação de software, como a Unified Modeling Language (UML), e por descrições detalhadas dos componentes e de suas relações. Além disso, a especificação deve apresentar diferentes visões arquiteturais do sistema, a fim de garantir que os requisitos sejam atendidos pela arquitetura proposta. 4.1 Visão arquitetural A visão arquitetural representa um conjunto de elementos da arquitetura e suas relações entre si, da forma como foram descritos pelos atores do sistema. Ela é uma representação de estruturas da arquitetura e, assim, ajuda a representar um conjunto de unidades de código (módulos); um conjunto de elementos e suas interações, as quais possuem comportamento dinâmico em tempo de execução; ou componentes físicos (infraestrutura) e suas relações com o ambiente do sistema. 65 Figura 4 – Modelo de Visão Arquitetural 4+1 Fonte: adaptada de Melo (2016, p. 49). Na Figura 4, é exibido o Modelo de Visão 4+1, o qual é amplamente usado para descrições de arquiteturas de software (MELO, 2016). Nesse modelo, são apresentadas cinco diferentes visões: Visão Lógica, Visão Dependência7, Visão Implementação, Visão Física e Cenários. As quatro visões (em azul) apresentam diferentes aspectos do sistema de forma abstrata, e a visão Cenários ilustra as demais visões e permite validá-las. • A Visão Lógica: representa as estruturas da arquitetura, os níveis de abstração e as responsabilidades dos atores. • Visão Dependência: trata da interação e sincronização entre os componentes. 7 A Visão Dependência também é chamada de Visão Processo. 66 • Visão Implementação: descreve a decomposição dos diversos subsistemas utilizados no ambiente de desenvolvimento. • Visão Física: descreve os componentes físicos, como computadores, nós físicos, dispositivos de armazenamento e todos os recursos em que os componentes lógicos são implementados. 5. Implementação e validação Após o desenvolvimento do modelo de arquitetura, é necessário realizar as etapas de implementação e validação da arquitetura. A implementação se inicia com o desenvolvimento de um sistema esqueleto, o qual consiste em porções separadas do sistema implementadas e testadas independentemente. Os primeiros módulos a serem implementados devem ser aqueles que formam o núcleo da arquitetura, os quais são responsáveis pela execução e pela interação dos demais componentes arquiteturais. Geralmente, esses módulos podem ser oferecidos por terceiros como frameworks, sistemas de runtime, ou sistemas de middleware. Nesse caso, não ocorre uma implementação dos módulos, mas possivelmente a instalação e a configuração de sistemas de terceiros. A partir da implementação do núcleo da arquitetura, o sistema deve ser posto em execução e os demais componentes devem ser adicionados e testados incrementalmente. O processo de adição de novos componentes deve ser realizado por partes, aumentando o tamanho do sistema gradativamente. A cada incremento, cada nova funcionalidade deve ser testada isoladamente e em conjunto com as demais partes já implementadas do sistema. Cada nova parte é adicionada até que todo o sistema seja implementado completamente. 67 O processo de validação da arquitetura consiste em verificar se as funcionalidades implementadas atendem aos requisitos funcionais e não funcionais definidos na arquitetura. Caso um requisito não seja atendido, então uma nova implementação da funcionalidade, correspondente àquele requisito, deve ser executada. 6. Projeto de Arquitetura Mista Quando o projeto requer o provimento de serviço de diferentes nuvens, a arquitetura pode ser chamada de arquitetura mista. Geralmente, essa situação ocorre quando um provedor de nuvem privada necessita de um serviço de uma nuvem pública. Nesse tipo de cenário, é preciso observar o papel que a nuvem externa irá assumir, que pode ser de um ator (provedor, cliente, intermediador etc.) ou de um componente do sistema. Os requisitos de comunicação da nuvem externa devem ser especificados detalhadamente. Saldanha (2012) propôs uma arquitetura de nuvem para atender às ações comumente executadas por pesquisadores do projeto genoma. A arquitetura proposta permite a integração entre diversos provedores de nuvem independentes, privados ou públicos, e heterogêneos para fornecimento de serviços de bioinformática. No contexto do trabalho de Saldanha (2012), diversos laboratórios, com suas próprias nuvens privadas, espalhados ao redor do mundo, necessitam acessar bancos de dados em nuvens públicas, os quais contêm as informações do projeto genoma. Os laboratórios geram sequências genéticas para montá-las com demais sequências contidas nos bancos de dados públicos. Assim, antes de enviar a sequência, é necessário realizar uma filtragem nela para o formato específico do banco de dados público que se deseja acessar. Em seguida, a nuvem 68 privada deve ter a possibilidade de acessar a nuvem pública para incluir a sequência genética. Além disso, a nuvem privada pode alterar ou analisar uma sequência genética do banco de dados de maneira concorrente com outras nuvens privadas. Figura 5 – Visão Lógica de arquitetura de nuvens mistas para projetos de bioinformática Fonte: adaptada de Saldanha (2012, p. 29). A visão lógica da arquitetura de Saldanha (2012) é exibida na Figura 5. A Aplicação pode ser vista como o Cliente da Nuvem, o qual acessa os recursos de aplicação ou do workflow8 por meio de interfaces de linha de comando, gráficas (GUI – Graphical User Interfaces) ou de WfMS9 8 Um workflow é uma sequência de passos realizada pelo usuário para atingir um objetivo. O trabalho de Saldanha (2012) visou otimizar o workflow do projeto genoma. 9 Um WfMS é um sistema para gerenciar os passos de um workflow de maneira automatizada. Uma inter- face de WfMS permite o acesso a tal tipo de sistema. No caso do trabalho de Saldanha (2012), a arquitetura pro- posta permite o acesso dos recursos oferecidos pelo provedor por meio de um WfMS. 69 (Workflow Management System). A arquitetura da nuvem é composta por um Controlador de Trabalho (Job Controller), um Controlador de SLA (Service Level Agreement) e diversos serviços: Serviço de Monitoramento (MonitoringService); Serviço de Segurança (Security Service); Serviço de Descoberta (Discovery Service); Serviço de Escalonamento (Scheduling Service); Serviço de Armazenamento (Storage Service); e Serviço de Tolerância à Falha (Fault Tolerance Service). Por fim, o componente Interface de comunicação (P2P – peer to peer) é responsável por integrar todos os serviços, além de realizar a comunicação entre diferentes Provedores de Nuvem. A comunicação não é centralizada no Núcleo, o qual apenas fornece uma interface padronizada que será implementada em cada Provedor de Nuvem. Para se comunicar com a nuvem Núcleo, cada Provedor de Nuvem deve implementar a interface P2P por meio do seu Plug- in específico. É importante notar que cada Provedor de Nuvem pode prover diversos serviços diferentes de processamento ou armazenamento. No entanto, para participar da federação de nuvens, ele deve implementar a Interface de comunicação P2P do núcleo. 7. Projeção de Custo A Computação na Nuvem oferece serviços em que o usuário paga ao Provedor de Nuvem de acordo com sua demanda por recursos ou serviços. De acordo com Hinz (2015), existem dois modelos principais de custo, os quais são o pay-as-you-go (pague pelo o que aloca) e o pay- as-you-use (pague pelo o que utiliza). No primeiro modelo, o usuário aloca os recursos e paga pela alocação, enquanto no segundo, mais amplamente difundido, ele contrata um serviço que é tarifado conforme a utilização. 70 Os Provedores de Nuvem combinam diversas métricas e regras para definir o preço em relação à utilização dos recursos e para definir um modelo de custo. Alguns oferecem serviços cujo custo é computado a partir de métricas simples derivadas de parâmetros, como o número de núcleos, a quantidade de memória reservada, o espaço de armazenamento de disco ou a largura de banda de rede. No entanto, existem serviços tarifados por meio de métricas complexas, baseadas em múltiplos critérios. O Quadro 1 ajuda a exemplificar os diferentes aspectos de cobranças em três dos maiores Provedores de Nuvem. É interessante notar que a Microsoft Azure não utilizava o modelo pay-as-you-go. Outro aspecto interessante é que a IBM não diferenciava a cobrança de acordo com a localização do datacenter nem cobrava pelo tráfego interno da rede entre os servidores do datacenter. Quadro 1 – Aspectos de tarifação de Máquinas Virtuais (VM – Virtual Machine) em três dos maiores Provedores de Nuvem Públicas Característica Amazon IBM Microsoft Azure Pay-as-you-use Sim Sim Sim Pay-as-you-go Sim Sim Não Cobrança por localização de datacenter Sim Não Sim Tráfego interno Sim Não Sim Tráfego externo Sim Sim Sim Fonte: adaptado de Hinz (2015). Os principais aspectos que devem ser observados para projetar o preço de um serviço na nuvem são: custo inicial, período de contrato, qualidade do serviço, taxa de depreciação, envelhecimento dos recursos e custo de manutenção. 71 • Custo inicial: corresponde ao investimento necessário para adquirir os recursos de hardware e de software. • Período de contrato: refere-se ao intervalo de vigência durante o qual o usuário tem direito a acessar o serviço ou o recurso da nuvem. • Qualidade do serviço: corresponde à diferenciação do preço pago por um mesmo serviço, de acordo com parâmetros de qualidade oferecidos ao usuário. • Taxa de depreciação: corresponde à perda do valor dos equipamentos com o tempo. • Envelhecimento dos recursos: corresponde à perda de valor do recurso por causa da degradação dos componentes físicos. • Custo de manutenção: corresponde a todo custo necessário para instalar, consertar, atualizar, substituir e realizar todas as atividades para manter os componentes de hardware e software em funcionamento. De acordo com Araújo (2019), uma abordagem para gerar um modelo de custo consiste na compreensão do cenário, na definição dos tipos de custos e na geração do modelo de custo. A compreensão do cenário envolve definir as características que são passíveis de custo na nuvem, sendo as principais a aquisição dos componentes do ambiente, a aquisição de componentes complementares para garantir redundância de recursos, a atividade de operação e a manutenção da nuvem. A definição dos tipos de custos corresponde a organizar e separar as diferentes características definidas na fase anterior em categorias de custos similares. Por exemplo, custos relacionados à manutenção e à operação da nuvem devem ser agrupados em categorias diferentes. A geração do modelo de custo consiste em definir formalmente 72 os parâmetros e as equações para realizar a estimativa dos custos definidos na etapa de compreensão do cenário. Figura 6 – Abordagem para a geração de modelo de custo na nuvem Fonte: adaptada de Araújo (2019, p. 66). Para exemplificar o modo como um modelo de custos pode ser gerado por um Provedor de Nuvem, a Figura 7 mostra a abordagem de Hinz (2015) para a quantificação de preço de acordo com o uso de máquinas virtuais na nuvem. O consumo da máquina física é composto por cinco componentes principais: • Consumo mínimo (Ce_Mínimo): corresponde ao consumo de energia quando a máquina virtual está no estado ocioso, pois, mesmo sem realizar processamento, existe um nível de energia residual consumido por ela. • Consumo pelo gerenciamento das máquinas virtuais (Ce_ Gerenciador): corresponde ao consumo energético quando o hypevisor requisita alguma funcionalidade; por exemplo, uma migração ou um escalonamento de máquinas virtuais. • Consumo pela entrada e saída das máquinas virtuais (Ce_Entrada e Ce_Saída): são os consumos que ocorrem quando uma máquina virtual entra ou sai do núcleo de processamento. • Consumo das máquinas virtuais (Ce_vm): corresponde ao consumo devido ao processamento pela máquina virtual. 73 • Consumo total do hypevisor (Ce_Total_Hypevisor): corresponde ao consumo de energia total do hypevisor. O consumo de energia total por unidade de tempo, corresponde à soma de Ce_Mínimo, Ce_Gerenciador, Ce_Entrada , Ce_Saída, Ce_vm e Ce_Total_ Hypevisor. Figura 7 – Abordagem para modelo de custo de energia de máquinas virtuais Fonte: adaptada de Hinz (2015, p. 48). Referências Bibliográficas ARAÚJO, C. J. M. Tomada de Decisão Multicritério em Infraestruturas como Serviço em Nuvem: uma Abordagem baseada em Modelos de Dependabilidade, Performabilidade e Custo. Tese (Doutorado em Ciência da Computação) – Centro de Informática, Universidade Federal de Pernambuco, 2019. DAMASCENO, J. C. UCLOUD: uma Abordagem para Implantação de Nuvem Privada para a Administração Pública Federal. Tese (Doutorado em Ciência da Computação) – Centro de Informática, Universidade Federal do Pernambuco, Recife, 2015. HINZ, M. Virtual Power: um modelo de custo baseado no consumo de energia do processador por máquina virtual em nuvens IaaS. Dissertação (Mestre em Computação Aplicada) – Centro de Ciências Tecnológicas, Universidade do Estado de Santa Catarina, Joinville, 2015. MELO, R. M. Uma Arquitetura de Referência Guiada a Conformidades de Segurança para Web Services baseados em Nuvem Privada. Dissertação (Mestre em Ciência da Computação) – Centro de Informática, Universidade Federal de Pernambuco, Recife, 2016. 74 REIS, M. A. S. Uma Arquitetura de Big Data as a Service Baseada no Modelo de Nuvem Privada. Dissertação (Mestrado em Computação Aplicada) – Instituto de Ciências Exatas, Universidade de Brasília, 2018. SALDANHA, V. H. BioNimbus: uma arquitetura de federação de nuvens computacionais híbrida para a execução de workflows de Bioinformática. Dissertação (Mestrado em Informática) – Instituto de Ciências Exatas, Universidade de Brasília, Brasília, 2012. SCHMITT, J.; DAMASCO, K. L. Desenvolvimento de um Serviço Utilizando as Modalidades IaaS e PaaS para Cloud Computing: um estudo de caso. Monografia (Graduação em Sistemas de Informação) – Universidade do Sul de Santa Catarina, Palhoça, 2012. 75 Bons estudos! Sumário Introdução à Computação na Nuvem Objetivos1. Introdução 2. A Arquitetura da Computação na Nuvem 3. Modelos de Implantação 4. Federação de Nuvens 5. Provedores de Serviços e Mercado de Nuvem 6. Conclusão Referências Bibliográficas Modelos de Serviço da Nuvem Objetivos 1. Introdução 2. Infraestrutura como um Serviço 3. Plataforma como um Serviço 4. Software como um Serviço 5. Conclusão Referências Bibliográficas Aplicações da Computação em Nuvem Objetivos 1. Introdução 2. Banco de Dados 3. Internet das Coisas 4. Aplicações Referências Bibliográficas Projetos de arquiteturas na nuvem Objetivos 1. Introdução 2. Ciclo de vida do projeto 3. Requisitos Funcionais e Não Funcionais 4. Modelo de Arquitetura 5. Implementação e validação 6. Projeto de Arquitetura Mista 7. Projeção de Custo Referências Bibliográficas