Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIP – UNIVERSIDADE PAULISTA JOSÉ LUIZ DA SILVA FILHO Infraestrutura de Computação em Nuvem: Elasticidade São Paulo 2019 JOSÉ LUIZ DA SILVA FILHO Infraestrutura de Computação em Nuvem: Elasticidade Monografia apresentada à UNIP – Universidade Paulista, com objetivo de obtenção de título de especialista, no curso da pós-graduação “lato sensu” em Engenharia de Redes e Sistema de Telecomunicações. Orientador: Profº Ronald Stevis Cassiolato São Paulo 2019 JOSÉ LUIZ DA SILVA FILHO INFRAESTRUTURA DE COMPUTAÇÃO EM NUVEM: Elasticidade Aprovado em: _______________________/__/___ Banca Examinadora: Professor Ronald Stevis Cassiolato Professora Maria Conceição Perroni Cassiolato Trabalho de Conclusão de Curso para obtenção do título de Pós-Graduação em Engenharia de Redes e Sistema de Telecomunicações apresentado à Universidade Paulista – UNIP São Paulo 2019 DEDICATÓRIA Dedico esse trabalho ao meu pai José Luiz (in memorian), ao meu avô Noel Mendes de Oliveira (in memorian) e à minha esposa Magali Rodrigues da Silva que por mais de trinta anos acompanharam a minha trajetória de luta sendo facilitadores e condutores incondicionais para eu atingir esta meta de especialização. AGRADECIMENTOS Agradeço à minha esposa Magali que em momentos difíceis e de estresse manteve o apoio incondicional, o cuidado amoroso com os afazeres domésticos e com nossos filhos sendo especialmente compreensiva mesmo nas fases em que eu permaneci mais distante. Ao meu querido avô Noel, que sempre acreditou no meu potencial e nunca economizou uma palavra de incentivo. Aos mestres Ronaldo Rocchi, Wagner Moreira, Francisco Ariza, Ronald Stevis e Maria Conceição, que nesses semestres dedicaram atenção e compartilharam os conhecimentos comigo, muito obrigado. Ao meu colega de sala Fábio Jr, que foi meu par na elaboração dos trabalhos que desenvolvemos em equipe no decorrer desse curso. Aos meus amigos Milton Santos e Henry Lobo, mestrandos da USP e UNICAMP respectivamente, que me instigaram com o tema escolhido. Finalmente, à Deus, que me abençoou com boa disposição física e mental para completar esta jornada. Faça o teu melhor, na condição que você tem, enquanto você não tem condições melhores, para fazer melhor ainda! Mario Sergio Cortella 7 RESUMO Esse trabalho resulta de uma pesquisa desenvolvida para a apresentação de Monografia no curso Engenharia de Redes e Sistema de Telecomunicações na UNIP. O trabalho foi intitulado “Infraestrutura de Computação em Nuvem: Elasticidade” e foi escolhido esse tema porque vem mudando a maneira como os profissionais e recursos operacionais trabalham. A referência teórica desta pesquisa está baseada em livros dos autores Manoel Veras, Brian J. S. Chee, Curtis Franklin Jr, Anthony T. Velte, Toby J. Velte e Robert C. Elsenpeter além de consultas em artigos de revistas e workshops, como também sites relacionados ao tema e referenciados no anexo. Por definição a Computação em nuvem é o uso de recursos computacionais compartilhados e interligados por meio da internet, estes recursos computacionais podem ser memória, dispositivos de armazenamento, processadores e servidores, dentre outros e que podem ser acessados virtualmente a partir de qualquer lugar do mundo e em qualquer momento. A computação evoluiu de tal forma que ampliou e mudou a possibilidade das organizações acessarem os recursos computacionais numa escala exponencialmente maior que antes. O termo nuvem é apenas uma abstração para definir onde estão alocados estes recursos computacionais uma vez que fisicamente não está na própria organização e sim em alguma empresa ao redor do mundo. O acesso a estes recursos computacionais é feito via “computadores pessoais”, que funcionam apenas como um terminal de acesso sem a necessidade de boa capacidade de armazenamento/processamento via internet (via “nuvem”) proporcionando melhor relação custo/benefício possível. As empresas pioneiras no oferecimento de serviços de computação em nuvem são Amazon, Google, IBM e Microsoft isto significa que estas empresas em determinados locais possuem muitos recursos computacionais, muitos servidores, com muita memória, com muita capacidade de armazenamento, com muitos processadores para poder alugar estes serviços aos interessados em usar os dispositivos e acessar através da internet. A infraestrutura em nuvem oferece ao interessado, entre outros serviços, o uso de uma parte (um percentual) de um servidor, geralmente com configuração que se adeque a necessidade. Esta infraestrutura deve ser segura, escalável e flexível. A elasticidade é a característica flexível de um serviço em nuvem, que oferece o redimensionamento de recursos. 8 Esta característica significa a capacidade de incrementar ou remover recursos e a principal vantagem é a possibilidade de criação de maquinas virtual ou containers para atendimento de uma demanda automaticamente. Em outras palavras os recursos são reservados ou liberados para utilização por outros demandantes de acordo com a necessidade. Esta elasticidade dentro das organizações possibilita uma otimização permanente dos investimentos em tecnologia, esse modelo propicia escalar imediatamente a entrega em cenários de crescimento alto e retração também, evitando desperdícios causados por recursos ociosos e proporcionando alívio aos profissionais de TI para cuidarem de outros itens também importantes das funções, como inovação, planejamento estratégico e entrega. Palavras-chave: Computação em nuvem. Infraestrutura. Elasticidade. ABSTRACT This work is the result of research developed for the presentation of Monograph in the course of Network Engineering and Telecommunications System at UNIP. The work was titled “Cloud Computing Infrastructure: Elasticity” and was chosen because it is changing the way professionals and operational resources work. The theoretical reference of this research is based on books of the authors Manoel Veras, Brian J. S. Chee, Curtis Franklin Jr., Anthony T. Velte, Toby J. Velte and Robert C. Elsenpeter as well as consultations in magazine and workshop articles, as well as related websites and referenced in the annex. By definition Cloud computing is the use of shared and interconnected computing resources over the internet, these computing resources can be memory, storage devices, processors and servers, among others and can be accessed from virtually anywhere in the world. and at any time. Computing has evolved to such an extent that it has expanded and changed the ability of organizations to access their computing resources on an exponentially larger scale than before. The term cloud is just an abstraction to define where these computational resources are allocated since it is physically not in the organization itself but in some company around the world. Access to these computing resources is via "personal computers", which function only as an access terminal without the need for good storage / processing via the internet (via "cloud") providing the best possible cost / benefit ratio. The pioneer companies offering cloud computing services are Amazon, Google, IBM and Microsoft. This means that these companies in certain locations have a lot of computational resources, many servers, a lot of memory, a lot of storage capacity, withmany processors to be able to rent these services to those interested in using their devices and accessing over the internet. The cloud infrastructure offers to the interested, among other services, the use of a part (a percentage) of a server, usually with configuration that suits its necessity. This infrastructure must be secure, scalable and flexible. Elasticity is the flexible feature of a cloud service that offers resource scaling. This feature means the ability to increment or remove resources and its main advantage is the ability to create virtual machines or containers to meet a demand automatically. In other words the resources are reserved or released for use by other plaintiffs according to their need. This elasticity within organizations enables ongoing optimization of technology 10 investments, this model enables immediate scaling of delivery in high growth and shrink scenarios as well, avoiding wasteful idle resources and providing IT professionals with relief from taking care of other important items. their functions, such as innovation, strategic planning and delivery. Keywords: Cloud computing. Infrastructure. Elasticity. SUMÁRIO 1. CAPÍTULO 1 - INTRODUÇÃO .............................................................................. 12 2. CAPÍTULO 2 – ELASTICIDADE EM CLOUD COMPUTING ................................ 13 2.1 OBJETIVOS E CONTRIBUIÇÕES ...................................................................... 17 2.2 O PARADIGMA DE COMPUTAÇÃO EM NUVEM .............................................. 20 2.3 ARQUITETURA ORIENTADA A SERVIÇOS (SOA) ........................................... 28 2.4 SERVIÇO DE PROCESSOS DE NEGÓCIOS .................................................... 30 2.5 WEB 2.0 .............................................................................................................. 31 3. CAPÍTULO 3 – GERENCIAMENTO AUTÔNOMO DE ELASTICIDADE NA NUVEM ..................................................................................................................... 32 3.1 CONFIGURAÇÃO AUTOMÁTICA (AUTOCONFIGURAÇÃO) ............................ 33 3.2 CIRCUITO FECHADO DE CONTROLE AUTONÔMICO .................................... 35 3.3 ELASTICIDADE NA NUVEM ............................................................................... 36 3.4 SISTEMA AUTONÔMICO, ELASTICIDADE MANAGEMENT SOLUTIONS ....... 39 3.5 MODELOS FORMAIS PARA ESPECIFICAÇÃO E ANÁLISE ............................. 44 4. CAPÍTULO 4 – CONSIDERAÇÕES FINAIS ......................................................... 50 5. REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 52 12 1. CAPÍTULO 1 - INTRODUÇÃO A elasticidade é uma característica em um sistema de computação em nuvem que possui a capacidade de se adequar a um volume de trabalho através de montagem e desmontagem de recursos automaticamente na medida que a demanda solicita de acordo com a linha do tempo. Esta capacidade de adaptação dinâmica altera o uso dos recursos de computação de tal forma que atenda as variações de cargas de trabalho, otimizando e explorando todo o potencial que uma infraestrutura de computação em nuvem pode oferecer. A finalidade da elasticidade num ambiente de computação em nuvem é de prover a alocação de recursos sob medida, promovendo o crescimento ou diminuição da disponibilidade desses recursos para um determinado serviço, evitando gargalos ou desperdícios. O comportamento elástico de um sistema depende de como a implantação for realizada. Um ambiente de elasticidade adequadamente configurado proporciona um aproveitamento que pode justificar o custo, qualidade e desempenho de um serviço alocado. Os requisitos de um serviço alocado em nuvem determinarão o que será considerado na construção da infraestrutura elástica para atender as necessidades de aumento ou diminuição da capacidade de alocação de recursos (VERAS, 2013). Para se certificar que um ambiente elástico de computação em nuvem esteja correspondente aos requisitos do serviço alocado, é necessária a adoção de monitoramento e controle do ambiente computacional para promover os ajustes necessários ao atendimento das demandas. Este monitoramento considera como está a utilização dos recursos do sistema como por exemplo CPU, memória, armazenamento e as variáveis que cada serviço alocado requer deste sistema e qual estratégia elástica aplicar para ter o melhor resultado na utilização sob medida do sistema (CHEE; CURTIS, 2011). Um exemplo de utilização que mostra a capacidade elástica de um sistema é a Black Friday, uma das datas mais importantes do varejo junto com outros períodos que antecedem e procedem datas comemorativas como Dia das Mães, Dia das Crianças, Dia dos Namorados e Natal, entre outros que, torna especialmente relevante o desempenho da estrutura elástica e a capacidade de expandir em até 13 vinte vezes a mais que o número regular (VERAS, 2011). Nesta sazonalidade observa-se o aumento expressivo de acessos de visitantes às plataformas e- commerce e, a elasticidade deve comportar este tipo de demanda. Outros tipos de serviço também podem ser afetados pelo aumento da quantidade de acessos como por exemplo plataformas de redes sociais. Um caso que representa esta demanda em rede social é o do falecimento do Rei do POP Michael Jackson que de tanto acesso, derrubou o Twitter e até mesmo o Google que reconheceu o pico de acesso de usuários como um ataque de haker e bloqueou a palavra-chave Rei do POP por um período até normalizarem os acessos. O ponto a ser destacado é que a elasticidade visa prover qualquer quantidade de acesso com o mesmo desempenho proporcionalmente ao aumento ou retração do volume. O escalonamento dos recursos que compõem a elasticidade na computação em nuvem, é feito, geralmente de maneira horizontal, onde a capacidade do recurso é duplicada, com as mesmas características da máquina virtual de origem (VELTE et al, 2011). Desta maneira, se permite que os recursos sejam provisionados sem que o sistema fique indisponível, da mesma forma os recursos são desalocados automaticamente com a diminuição da demanda (CHEE; CURTIS, 2011). Do ponto de vista econômico e gerencial, o próprio usuário pode controlar o número máximo de máquinas que alocará para a demanda sazonal e administrar o provisionamento de recursos financeiros para suportar essa necessidade de aumento de volume com base em relatórios de utilização dos recursos alocados para atendimento das demandas em razão das variáveis que o negócio determina. Estrategicamente é possível medir inclusive os horários com maiores volumes de acessos direcionando esforços para a adequada alocação dos recursos dinamicamente. 2. CAPÍTULO 2 – ELASTICIDADE EM CLOUD COMPUTING Nos últimos anos, com o rápido desenvolvimento da tecnologia da informação, muitas organizações e empresas têm procurado a melhor maneira de reduzir os custos operacionais, assegurar o dimensionamento dos sistemas de TI, fornecer 14 bom desempenho de aplicações, otimizando o uso de recursos de TI. Várias tecnologias surgiram ao longo dos anos, tais como, sistemas distribuídos, processamento paralelo, grid computing, virtualização e outros que abordam a questão do abastecimento eficiente de recursos e implementação do aplicativo. Com o crescimento da demanda do mercado e o aparecimento regular de novos requisitos de negócios, essas tecnologias são menos eficientes por causa da falta de flexibilidade, escalabilidade e custo, por vezes excessivas. Por isso, e para atender as exigências do mercado, a "cloud computing" surgiu com base nessas tecnologias ao adicionar novasfuncionalidades para o fornecimento de recursos de TI (SIMOES; KAMIENSKI, 2014). Assim, as empresas estão adotando cada vez mais o novo modelo econômico oferecido pela computação em nuvem. Uma pesquisa envolvendo 300 empresas, liderada pelo Fórum da Indústria Nuvem 2012 mostrou que 53% das empresas já adotaram a nuvem. A mesma pesquisa mostrou que 73% planejam aumentar a adoção de serviços em nuvem nos próximos 12 meses (COUTINHO et al, 2018). Atualmente, o paradigma de computação em nuvem se tornou imensamente popular, não só na indústria, mas também no mundo acadêmico. Empresas, indivíduos e pesquisadores poderão alugar recursos de computação com base nas necessidades específicas, pagando apenas o consumo real. Clientes de computação em nuvem, assim, tornam-se mais diversificados (HABAK et al, 2017). Para satisfazer esta ampla gama de clientes, especialmente os clientes sem infraestrutura de gestão do conhecimento prévio, os provedores de nuvem emergentes oferecem diferentes tipos de serviços. Os serviços em nuvem podem ser classificados em três camadas ou modelos. A partir do modelo de "infraestrutura como um serviço" (IaaS), provedores de nuvem têm introduzido um outro modelo de serviços em nuvem chamado de "plataforma como um serviço" (PaaS), que desenvolve diferentes tipos de sistemas e aplicativos diretamente na nuvem. Além disso, o modelo de "software como um serviço" (SaaS) tem se mostrado útil para diferentes tipos de clientes, especialmente os que não têm experiência em tecnologia da informação e quer usar apenas serviços muito específicos. Cada um desses modelos de serviço tem vantagens e desvantagens. Por exemplo, a flexibilidade de utilização de serviços em nuvem diminui o nível em IaaS e SaaS o conhecimento necessário para usar cada modelo de serviço (COUTINHO et al, 2018). 15 Um serviço de IaaS oferece um recurso virtualizado (máquina virtual) que o usuário tenha definido, o que poderia ser complicado. Para um usuário de um serviço SaaS, simplesmente interagir com uma interface de programação de aplicações (API) fornecido a flexibilidade de serviços em nuvem diminui o nível de IaaS para SaaS e o conhecimento para usar cada modelo de serviço. A computação em nuvem é baseada em uma ideia simples, é proporcionar aos utilizadores um conjunto de recursos de TI virtualizados para executar cálculos, armazenar dados ou informações de trânsito. Estes recursos estão disponíveis na forma de serviços, geralmente através da Internet e, por vezes, através de uma intranet ou extranet. Os usuários da nuvem podem solicitar serviços sob demanda, de acordo com as necessidades e pagando nem mais nem menos do que consomem. Existem várias características que fazem serviço de cloud computing modelo de entrega muito popular e atraente para empresas e usuários, tais como: modelo econômico baseado no conceito de faturamento "pay-as-you-go" (HABAK et al, 2017). No entanto, a característica mais atraente para usuários da nuvem é o último mencionado, pode distinguir computação paradigma nuvem e outros paradigmas. A origem do conceito de elasticidade encontra-se no campo da física, onde um objeto ou de um material sólido é chamado elástico se é capaz de recuperar a forma original depois de ter sido deformada. Na computação em nuvem, a elasticidade é uma qualidade fundamental que requer um controle efetivo sobre o fornecimento de recursos de TI, aumentando e diminuindo as taxas de utilização de acordo com flutuações na carga de trabalho, para garantir que esses recursos limitados possam ser usados de forma ilimitada. O princípio da elasticidade é manter uma infraestrutura de nuvem para o tamanho necessário, em cada momento, assegurar o fornecimento de recursos necessários e suficientes para o bom funcionamento do mesmo sistema de nuvem quando aumenta a utilização ou diminuições evitando-se assim, sobre-exploração e subutilização dos recursos. Esta é a noção de adaptação dinâmica do consumo (SIMOES; KAMIENSKI, 2014). Em termos de noção de recursos elasticidade é importante para garantir o cumprimento dos acordos de nível de serviço ou "acordos de nível de serviço" (SLA) estabelecidos entre utilizadores de serviços e fornecedor. Da perspectiva do usuário, 16 a elasticidade assegura o fornecimento eficiente de recursos que garante a manutenção da qualidade de serviço (QoS), sem exceder um determinado orçamento. Do ponto de vista do fornecedor, a elasticidade maximiza o ganho financeiro, garantindo uma melhor utilização dos recursos de TI e permitindo que vários clientes sejam servidos ao mesmo tempo, mantendo satisfeitos. A elasticidade é fornecida na nuvem como uma estratégia reativa ou proativa, utilizando três métodos: A escala horizontal (elasticidade horizontal), a escala vertical (elasticidade vertical) e a migração. O método da escala horizontal é replicar ou excluir instâncias virtuais de serviços em nuvem, definir os aumentos de escala vertical ou reduzir a quantidade de recursos atribuídos a uma instância de serviço de nuvem. Finalmente, o método de migração é por mover ou reimplantar um exemplo de um hospedeiro para outro hospedeiro (HABAK et al, 2017). O surgimento do paradigma de computação em nuvem tem gerado um novo tipo de sistema autonômico, onde a elasticidade é um princípio fundamental design. Estes sistemas chamados "nuvem sistemas elásticos" são distribuídos e implantados em várias instâncias com diferentes serviços em nuvem (COUTINHO et al, 2018). A grande vantagem destes sistemas é a capacidade de evoluir, em termos da quantidade de recursos do computador utilizado quando a carga de trabalho é alta, e rebaixar o contrário (a carga de trabalho é baixa), quando possível, reduzindo custos e mantendo o desempenho e qualidade de serviço. Um sistema elástico em nuvem compreende três entidades principais, a front-end, back-end e o controlador elástica interagindo uns com os outros através de vários meios. Nos últimos anos, os sistemas de nuvem elástica atraíram a atenção nas áreas industriais e acadêmicas, e também provedores de serviços de nuvem destinadas a atrair novos usuários para aumentar a, adopção, tentando garantir continuamente a qualidade do serviço (QoS) a um custo competitivo. Com isso, se oferecem soluções para a gestão e planejamento de elasticidade (SIMOES; KAMIENSKI, 2014). No mundo da indústria, existem várias propostas para gerenciar e planejar a elasticidade horizontal e vertical automaticamente em ambientes de nuvem, como Rackspace, HPCloud, Amazon EC2, Google AppEngine e Microsoft Azure. Estas soluções comerciais existentes no mercado ainda não estão completamente prontas, são relativamente novos e têm limitações em termos de controle de rendimento e 17 adaptação dinâmica do consumo de recursos, o que afeta a disponibilidade, desempenho e também sobre o faturamento final. Além disso, os mecanismos propostos por estas soluções industriais são muitas vezes limitados a especificar os serviços em nuvem necessários, independentemente do comportamento elástico. 2.1 OBJETIVOS E CONTRIBUIÇÕES A elasticidade que monitora o comportamento dos sistemas de nuvem para tomar decisões sobre a elasticidade através da adoção de estratégias reativas, proativas ou híbridas (combinação de estratégias reativas e proativas). Uma abordagem comum dos controladores de elasticidade proposta para gerenciar e planejar o fornecimento de recursos de TI em ambientes de nuvem é a utilização de um circuito de regulação fechado chamado: MAPE-K (monitorar, analisar, planejar, executar), introduzido pela IBM autonômica computação. O primeiro passo do ciclo de controle de MAPE-K é recolher controle da informação sobre a utilização e desempenho de recursos de computadores destinados a um sistema de nuvem utilizando um conjunto de sensores (sondas)(COUTINHO et al, 2018). Então, esta informação é analisada para decidir se uma ou mais ações são acionados. O passo final é estabelecer um plano de ação e correr através dos atuadores (DAROLT; DE SOUZA; KOSLOVSKI, 2016). Atualmente, diferentes soluções de elasticidade disponíveis na literatura podem ser classificadas em duas categorias. A primeira categoria inclui controladores de elasticidade que adotam estratégias reativas, tais como as limiares estratégias baseadas. Este tipo de estratégia é muito confiável no caso não há muito pico de carga de trabalho potenciais ou mudanças no comportamento inesperado. No entanto, se tornam menos eficazes quando a carga de trabalho real ou o desempenho do sistema difere dos previstos inicialmente na concepção de sistema de nuvem elástica. A segunda categoria de soluções existentes baseia-se em controladores de elasticidade usando métodos proativas. Estas soluções são muitas vezes baseadas em técnicas de aprendizado de máquina ou teoria de controle e geralmente têm base estatística sólida, permitindo ser rápido, robusto e ideal. No entanto, essas estratégias são caras e difíceis de 18 implementar em ambientes de nuvem. Além disso, podem causar um comportamento indesejado, se não forem devidamente projetados. Ultimamente, algumas iniciativas têm tentado combinar os dois tipos de estratégias reativas e proativas, podem causar um comportamento indesejável, se não forem devidamente projetados (DAROLT; DE SOUZA; KOSLOVSKI, 2016). O fornecimento autônomo de um parque enorme de recursos de software e hardware nos sistemas de nuvem em termos de elasticidade não é uma tarefa trivial. Para ser eficaz, uma boa solução para o planejamento e gestão da elasticidade deve fornecer mecanismos para descrever arquiteturas de tais sistemas e o comportamento elástico. Esta descrição é usada para identificar e compreender as mudanças estruturais e vícios comportamentais no sistema. A descrição deve (1) considerar todos os elementos arquitetônicos em um sistema de molas nuvem, (2) capturar a complexidade das interações internas em uma arquitetura de nuvem, (3) apoiar perpetuamente os recursos de mudanças virtualizadas, armazenamento, computação, e é claro que a maturidade do paradigma nuvem está longe de ser alcançada. (SIMOES; KAMIENSKI, 2014) A definição de uma metodologia para o desenvolvimento do sistema elástico nuvem que vai ajudar diferentes tipos de usuários para melhor controlar vários aspectos dos sistemas em nuvem, vai ajudar a esconder as limitações de tornar os recursos de hardware e software disponíveis. A ideia é ter, no início da fase de projeto, um modelo do sistema elástico para se desenvolver. Este modelo deve ser baseado em base matemática rigorosa tendo em conta uma semântica comportamental para descrever inequivocamente um lado, todos os elementos arquitetônicos de tal sistema e comportamento interno, e em segundo lugar os aspectos de interação, coordenação e sincronização entre esses elementos. É neste contexto que a tese de que tem como objetivo principal desenvolver uma abordagem genérica e abrangente que ajuda a reduzir a complexidade de modelagem e análise de sistemas elásticos baseados em nuvem e comportamento. Estão particularmente interessados na proposta de uma abordagem formal nos sistemas biográficos reativos baseados digitado (com ordenação BRS) para modelar e verificar os aspectos estruturais e comportamentais desses sistemas. As contribuições fornecem soluções para os desafios colocados da seguinte forma: 19 O quadro semântico proposto e formalismo subjacente pode capturar a complexidade da arquitetura de um sistema Elastic Cloud. Em seguida, definem três gráficos algébricas independentes para modelar as três partes constituintes: a front- end, back-end e controlador elástico (COUTINHO et al, 2018). O uso de gráficos algébricos ajudou a apoiar a mobilidade de recursos envolvidos, as relações e dependências componentes intra de um sistema de nuvem. Os constrangimentos estruturais e relacionais que possam existir também são definidos pela digitação lógica que se tem associado com os vários elementos desenhados em gráficos algébricos. É dada especial atenção à modelagem do controlador elástico neste tipo de sistema. A estrutura é baseada nos sistemas autonômicos laço de controle MAPE-K (Monitor, Análise, planejar, executar). A gestão da elasticidade e da evolução dos recursos são suportados pela interpretação do gráfico algébrico desta estrutura (SIMOES; KAMIENSKI, 2014). O modelo proposto para ser vantagem dinâmica, fornece regras de reação paramétricas para modelar diversos aspectos comportamentais em sistemas elásticos baseados em nuvem. Por um lado, a interação entre o front-end e sistema de nuvem back-end são representados por uma primeira categoria de regras de reação que governam o comportamento de diferentes tipos de vis-à-vis as aplicações e serviços ao cliente nuvem (HABAK et al, 2017). Por outro lado, a hipótese de comportamento elástico de sistemas baseados em nuvem também é gerida por uma outra categoria regras de reação. Estas regras são classificadas de acordo com os diferentes métodos de elasticidade utilizados em ambientes de computação em nuvem (horizontal, vertical e de migração) e também de acordo com os quatro níveis de nuvem considerados para a implementação do approvision. O comportamento complexo de sistemas Elastic Cloud assim definido, é modelado através da realização de diferentes regras de reação aprendidas e decoradas com atributos da BILOG lógica espacial. O rendimento e estratégias são definidas para controlar o fornecimento de recursos da nuvem, evitando assim a comportamentos indesejáveis, tais como a instabilidade na atribuição de recursos e uma severa degradação da qualidade de serviço, etc. 20 A fim de consolidar os resultados teóricos desta tese, um protótipo chamado MoVeElastic (para modelagem e verificação Elastic Cloud Systems) é desenvolvido para executar e formalmente verificar modelos formais propostos de acordo com o ambiente Maude. Integrando modelos bigraphiques Maude pode desfrutar dos benefícios de ambos os formalismos. 2.2 O PARADIGMA DE COMPUTAÇÃO EM NUVEM Serviços públicos prestados em uma rede, a ilusão de recursos infinitos, foi uma ideia muito popular na década de 1960, mas desapareceu em meados dos anos 1970, tornou-se claro que a tecnologia de hardware, software e redes no momento simplesmente não estavam prontos, então é no final dos anos 90 que este conceito realmente ganhou destaque pela primeira vez com o surgimento do "Grid Computing" (RIGHI, 2013). Conforme definido pelo OEPN (Organização Europeia para Pesquisa Nuclear), Grid computing é uma capacidade de armazenamento de computação, poder de compartilhamento de serviço e de dados através de redes de computadores. Este serviço pode ser centralizado ou distribuído em vários clusters interconectados em locais diferentes (VERAS, 2013). Grid computing foi principalmente para iniciativas científicas de grande escala na computação de alto desempenho, porém o uso é bastante complexo para não especialistas. Em seguida, levou até a década de 2000 para ver a verdadeira aparência do paradigma de computação em nuvem, abordando um público amplo, com Amazon EC2, ou a colaboração da IBM e Google IBM 2007. Posteriormente, muitas soluções de nuvem open source surgiram, por exemplo, o OpenStack e OpenShift. As primeiras tentativas para definir paradigma de computação nuvem a partir de 2008 foram naturalmente incompletas. Cada vez mais, a computação em nuvem se tornou amplamente adotada e, portanto, definição é mais madura (COUTINHO et al, 2018). Atualmente, a definição mais completa e paradigma de nuvem mais adotada nos círculos acadêmicos e industriais que se introduziu pelo NIST (NationalInstitute of Standards and Technology, Instituto Nacional de Padrões e Tecnologia). O restante deste estudo é dedicado à apresentação desta definição, a partir das 21 cinco características essenciais do modelo de computação em nuvem, três modelos de serviço e quatro modelos de implementação (PARKER, 2016). Paradigma de computação em nuvem, representa um novo modelo para a partilha de recursos de computação, não uma nova tecnologia. É caracterizada pelas seguintes cinco características essenciais: O paradigma de nuvem é baseado no conceito de autosserviço sob demanda. Permitir ao usuário interagir com a nuvem para executar tarefas como a construção, implantação, gestão e planejamento. O usuário deve acessar a capacidade de computação e recursos de computação (CPU, armazenamento, largura de banda, etc.) de acordo com as necessidades, sem a necessidade de intervenção do provedor de nuvem. Este conceito de nuvem de autoatendimento oferecendo aos usuários um certo nível de autonomia e independência, agilidade. O trabalho é permitir tomar as melhores decisões sobre as necessidades atuais e futuras (VERAS, 2013). Os recursos de TI na nuvem devem ser acessados e gerenciados universalmente e rapidamente, utilizando protocolos padrão da Internet (geralmente através de serviços web). Isso permite que os usuários acessem, recursos de nuvem em todos os tipos de dispositivos e terminais (navegador, smartphone, tablet, etc.), desde que tenham uma conexão com a internet. O acesso universal é um elemento chave por trás da adoção da nuvem enorme, não só por atores profissionais, mas também pelo público em geral que está agora familiarizado com soluções baseadas na nuvem, como o armazenamento ou distribuição das nuvens multimídia (RIGHI, 2013). Os recursos de TI são compartilhados entre vários usuários nuvem com vários modelos de locação, com atribuição e reafetação dinâmica de recursos físicos e virtuais com base na demanda. Este compartilhamento torna a localização exata dos dados do usuário, indeterminada. No entanto, é possível saber a localização de dados e recursos em um nível de abstração mais elevado (país, estado ou datacenter) (SIMOES; KAMIENSKI, 2014). Este recurso permite que sistemas baseados em nuvem para alocar ou liberar recursos rapidamente e automaticamente de computação para ser capaz de responder a um avanço ou um retorno do trabalho. Para o usuário nuvem, recursos 22 muitas vezes parecem ser ilimitados e podem ser adquiridos com qualquer quantidade e em qualquer momento (PICONEZ et al, 2017). Os sistemas baseados em nuvem devem ser capazes de gerir a permitir a otimização do sistema interno. Para isso, dependem de medições de referência obtidas através de vários mecanismos de controle. Estas medidas permitem faturamento preciso para os usuários. Faturamento é calculado com base na duração e a quantidade de recursos utilizados. Uma unidade de processamento parada não está sendo carregada. Além disso, não há geralmente um custo para comissionamento (PARKER, 2016). De acordo com o NIST, os serviços em nuvem podem ser classificados em três camadas, de infraestrutura como um serviço (IaaS), plataforma como um serviço (PaaS) e software (SaaS). Os serviços de camadas superiores são geralmente baseados nas camadas subjacentes, mas também pode ser fornecido como serviços de stand-alone. Os usuários da nuvem podem adquirir recursos de vários tipos de vários fornecedores. Um usuário pode alugar plataformas de recursos de infraestrutura, recursos de software, ou os três tipos simultaneamente (VERAS, 2013). A camada IaaS é o mais baixo nível de abstração na nuvem. IaaS é um modelo de serviço que permite aos usuários adquirir nuvem virtualizados recursos de computação, tais como capacidade de computação, armazenamento, largura de banda e outros tipos de serviços, tais como balanceamento de carga e rede entrega de conteúdo (RIGHI, 2013). O provedor de IaaS possui e mantém o equipamento enquanto o usuário aluga os serviços específicos que necessitam. Geralmente em IaaS, os recursos de TI são fornecidos para usuários da nuvem como instâncias de máquinas virtuais que podem ser diferentes em termos de sistema em execução operacional, software instalado e os recursos alocados (número de coração e frequência da CPU, memória, largura de banda e capacidade de armazenamento) (COUTINHO et al, 2018). O provedor de IaaS também permite aos usuários gerenciar a rede das máquinas virtuais (VMs), estabelecendo restrições de acesso ou através da criação de redes virtuais. Além disso, os usuários podem criar cópias das instâncias virtuais como um meio de backup, ou usar uma cópia de uma instância VM rodando VM para criar um modelo que pode ser depois usado para gerar novos corpos clonados. Entre 23 os principais IaaS existentes fornecedores que incluem, Amazon Elastic Compute Cloud (EC2), Amazon Web Services (AWS), Microsoft Azure, o Google Compute Engine, Rackspace Open Cloud e IBM SmartCloud Enterprise (DAROLT; DE SOUZA; KOSLOVSKI, 2016). A camada de PaaS é o segundo nível no modelo de nuvem, principalmente para desenvolvedores e empresas de desenvolvimento de software. O PaaS oferece este tipo de usuários, além de serviço de uso de software remoto, o acesso a uma plataforma de desenvolvimento verdadeiro, equipado com uma linguagem de programação, ferramentas de desenvolvimento e APIs. Por isso, o usuário tem um ambiente de desenvolvimento gerenciado, hospedado, mantido por um fornecedor de serviços e com base numa infraestrutura externa. Será, portanto, a oportunidade de desenvolver ferramentas específicas para as atividades (HABAK et al, 2017). Em geral, o modelo PaaS não irá substituir completamente todos os recursos do usuário. Em vez disso, esses recursos serão baseados no modelo PaaS para serviços essenciais, como hospedagem e implantação de novos sistemas operacionais da aplicação. Em PaaS, o provedor oferece suporte a infraestrutura e da nuvem de software subjacente, enquanto os usuários nuvem só precisam fazer login para usar a plataforma, geralmente através de um navegador e um console web. Exemplos de soluções de PaaS incluí, Amazon Web Services, (Elastic Beanstalk e DynamoDB), Force.com, o Google App Engine, Red Hat OpenShift, IBM Bluemix (PARKER, 2016). A terceira camada SaaS é o mais alto nível de abstração na nuvem. SaaS é um modelo de distribuição de serviços web e software em que diferentes tipos de aplicativos são hospedados e fornecido por um provedor de serviços e disponibilizado aos usuários através da Internet (muitas vezes através de um navegador web). Os usuários da nuvem são, então, totalmente gratuitos para o desenvolvimento e manutenção. No entanto, o prestador de serviços é responsável pela configuração das aplicações subjacentes e gestão de infraestrutura. O modelo de entrega SaaS é cada vez mais popular entre os usuários finais, porque não requer experiência em tecnologia da informação. Pode-se citar como exemplo de SaaS, Gmail para o gerenciamento de e-mail, define quatro modelos de implantação para a computação em nuvem (PICONEZ et al, 2017). 24 Neste modelo, os serviços em nuvem são fornecidos e completamente realizada por um ambiente de provedor de serviços. Usuários de nuvem pública simplesmente podem alugar os recursos de TI necessários são entregues através da Internet. No entanto, esses usuários não têm direito à infraestrutura, hardware e aplicativos fornecidos na nuvem. O provedor de nuvem torna disponível para os usuários de recursos projetados. Gerencia, mantém e faz evoluir com base nas necessidades do usuário ao longo do tempo. Atualmente, a nuvem pública é o modelo de implantação mais adotado, com os principais provedores de serviços de nuvem como Amazon, Microsoft e Google que oferecem serviçoseficientes e confiáveis para uma vasta audiência de usuários com baixo custo (VERAS, 2013). Uma nuvem privada é uma infraestrutura ou plataforma construída especificamente para servir apenas uma empresa. A infraestrutura de nuvem poderia ser construída internamente pela mesma empresa ou por um terceiro. Assim, a nuvem privada é de propriedade da empresa utilizadora, onde é forçada a construir, manter e gerir todos os componentes, que podem ser tanto complicados e caros. As nuvens privadas são diferentes nuvens públicas porque o pool de recursos que estão associados (redes, servidores e infraestrutura de armazenamento) é dedicado a uma empresa e não é acessível a partir de fora da empresa. Este alto grau de controle e transparência permite que o proprietário de uma nuvem privada facilmente cumprir com as normas (COUTINHO et al, 2018). A nuvem comunidade é um modelo de implantação que pode ser usado por várias empresas ou organizações com necessidades comuns. Uma nuvem comunidade compartilhada entre várias empresas é construído, gerenciados e garantidos por todos os participantes ou a terceiros (prestador de serviços). Estes requisitos participantes e interesses semelhantes, reúnem os recursos humanos e financeiros para atingir os objetivos comuns. A infraestrutura comum é projetada especificamente para atender às demandas da comunidade. Por exemplo, as agências governamentais, hotéis, hospitais e empresas de telecomunicações têm limitações de rede, segurança, armazenamento (DAROLT; DE SOUZA; KOSLOVSKI, 2016). A nuvem híbrida como o nome sugere é a combinação e federação de dois ou mais tipos diferentes de nuvens (público, privado e comunitário). Empresas podem exigir recursos adicionais durante períodos de pico. Neste caso, podem solicitar 25 recursos adicionais de provedores de nuvem pública. Com uma nuvem híbrida, uma empresa pode tirar vantagem da simplicidade e baixo custo de uma nuvem pública para hospedar serviços tradicionais que não necessitam de cuidados especiais ao criar a própria nuvem privada para aplicações altamente integrados com os sistemas existentes ou para o armazenamento de dados sensíveis (PARKER, 2016). Também tem a capacidade de priorizar o uso de nuvem privada, mantendo a capacidade de derramar sobre uma oferta de nuvem pública para a necessidade temporária. Em uma nuvem híbrida, nuvens públicas privadas ou comunitárias são entidades independentes, interligadas por uma tecnologia padronizada ou proprietário, permitindo a portabilidade de dados e aplicações (VERAS, 2013). O NIST define cinco grandes jogadores no paradigma de computação em nuvem: a nuvem o consumidor, o provedor de nuvem, a nuvem auditor, corretor nuvem e nuvem transportadora. Cada jogador representa uma entidade (pessoa ou organização) participando de uma transação ou processo e executa tarefas na nuvem (PICONEZ et al, 2017). Com isso, observa-se: 1. Nuvem consumidor (client cloud). Uma pessoa ou organização que mantém uma relação comercial com o provedor de nuvem. Provedor de nuvem (provedor de nuvem). Uma pessoa, organização ou entidade responsável por colocar os serviços em nuvem disponíveis para um conjunto de consumidores. 2. Nuvem Auditor (auditor nuvem). Uma parte pode fazer uma avaliação dos serviços em nuvem em termos de desempenho e segurança dos serviços, mantendo-se independente. 3. Nuvem Broker (corretor de cloud). Uma entidade que gerencia o uso, desempenho e entrega de serviços em nuvem, enquanto negociando relacionamentos entre provedores e consumidores. 4. Nuvem transportadora (transportador de nuvem). Um intermediário que fornece conectividade e carrega o provedor de serviço de nuvem para o consumidor. 5. Nuvem paradigma de computação combina um grande número de conceitos de TI e tecnologias como virtualização, as empresas processos orquestração, arquiteturas orientadas a serviços (SOA), com 26 base de serviços, Web 2.0 e outras tecnologias baseadas na Internet. O objetivo desta seção é introduzir algumas dessas tecnologias e conceitos relacionados (COUTINHO et al, 2018). A Virtualização era uma tecnologia fundamental para a evolução do paradigma de computação em nuvem na forma atual. A Virtualização de hardware habilitado, provedores de nuvem podem ser utilizados eficazmente os recursos materiais disponíveis para fornecer serviços de computação e armazenamento para os usuários. Em particular, a virtualização é um método de implantação de computação e recursos para separar as camadas de software mais elevados das camadas de software mais baixas ou hardware. O conceito de virtualização inicialmente surgiu na década de 1960. E então formalizada em meados dos anos 1970 (VERAS, 2013). Nos últimos anos, a virtualização é cada vez mais utilizada na computação em nuvem por causa dos benefícios que traz em termos de gestão otimizada dos recursos de TI e economizar em hardware reunido. A infraestrutura virtual reduz custos de TI e aumenta a eficiência, utilização e flexibilidade dos recursos existentes (HABAK et al, 2017). Na computação em nuvem, os recursos de TI virtualizados são chamados de máquinas virtuais (VMs). A VM é isolada completamente do recipiente software que pode rodar os próprios sistemas operacionais e aplicativos como uma máquina física. Assim, uma máquina virtual se comporta exatamente como uma máquina física. Inclui um processador, uma memória, um disco rígido e uma placa de interface de rede virtual. VMs são criados e gerenciados por uma camada de software chamada de hypervisor. O hipervisor atua como um mediador entre o hardware (físico) e a parte do software (lógico) para operar simultaneamente vários sistemas operacionais em uma máquina física. Estes hypervisors podem usar várias técnicas de virtualização (PARKER, 2016). Nesta técnica de virtualização, o sistema operacional hospedeiro ou hipervisor emula totalmente o hardware físico que se torna visível para sistemas operacionais convidados. O software de emulação (software de virtualização) cria uma camada que atenua as diferenças em arquiteturas de hardware e permite executar a mesma VM em diferentes hospedeiros com diferentes arquiteturas. Isto dá uma grande flexibilidade e flexibilidade para migrar facilmente VMs a partir de um hospedeiro para outro. No entanto, está emulação é particularmente cara, resultando numa 27 degradação do desempenho forte. VMware Workstation e hipervisors VirtualBox são exemplos da utilização desta técnica. Esta é a instalação de uma camada de virtualização no topo do sistema operacional hospedeiro. O sistema operacional hospedeiro é responsável pela gestão do equipamento. Os sistemas operacionais convidados são instalados e executados no topo da camada de virtualização de aplicações dedicadas devem ser executadas em máquinas virtuais. Esta abordagem de virtualização anfitrião tem algumas vantagens. Por exemplo, o usuário pode usar esta técnica sem fazer quaisquer alterações no sistema operacional hospedeiro. O software de virtualização depende do sistema operacional hospedeiro para fornecer drivers de dispositivo e outros serviços de baixo nível. Embora esta abordagem é flexível (DAROLT; DE SOUZA; KOSLOVSKI, 2016). Esta é uma técnica de virtualização de instalação de uma camada de virtualização diretamente no hardware. Para VM virtualizadas proporciona APIs específicas que requerem modificações significativas realizadas pelo sistema de operação em aplicações de utilizador, degradação do desempenho é um grande problema em sistemas virtualizados (VERAS, 2013). Ao contrário de outras técnicas de virtualização, para-virtualização tentativas para reduzir a sobrecarga de virtualização e, portanto, melhora o desempenho, modificando-se apenas o núcleo do sistema operativo, o que faz com que seja relativamente fácil e mais cômoda. Háum grande número de ferramentas e produtos de virtualização que utilizam esta técnica para virtualização, por exemplo, Xen, KVM e VMware ESX. (COUTINHO et al, 2018) Os sistemas de computação em nuvem fornecem um conjunto completo de modelos de serviço para o pedido, o que poderia ser feito dentro do sistema de nuvem. Portanto, esses sistemas em nuvem devem ser capazes de orquestrar automaticamente os serviços de diferentes fontes e de diferentes tipos para formar um fluxo de serviço ou um fluxo de trabalho transparente e dinâmico para os usuários. A orquestração na nuvem é um tipo de programa que gerencia interconexões e interações entre as entidades de um dado sistema de nuvem (PARKER, 2016). A orquestração é utilizada para organizar os vários componentes de modo que conduzem a um resultado desejado. No contexto de computadores, a orquestração é 28 combinada a tarefas em fluxos de trabalho para automatizar o provisionamento e gerenciamento dos diversos componentes e recursos de TI. A orquestração é ambiente de computação em nuvem mais complexas porque envolve interações gerenciamento entre os processos em execução em diferentes sistemas heterogêneos e distribuídos em diferentes locais (SIMOES; KAMIENSKI, 2014). A orquestração dos produtos de sistemas baseados em nuvem simplifica a comunicação entre os componentes, e as ligações para outras aplicações ou utilizadores. Estes produtos geralmente incluem um portal web para o gerenciamento de orquestrar um só lugar (HABAK et al, 2017). Ao avaliar produtos de orquestração de um administrador de sistema em nuvem primeiro analisar fluxos de trabalho das aplicações em causa. Esta etapa irá permitir que o administrador para visualizar e determinar a complexidade do fluxo de trabalho interno de uma aplicação e como a informação viaja frequentemente fora de todos os componentes desta aplicação (PICONEZ et al, 2017). Isso vai ajudar o administrador para decidir que tipo de orquestração produz o mais rentável, mais eficaz, e que melhor atenda aos requisitos operacionais do sistema de nuvem. 2.3 ARQUITETURA ORIENTADA A SERVIÇOS (SOA) A arquitetura orientada a serviços, ou SOA (Arquitetura Orientada a Serviços) é um modelo de arquitetura para desenvolvimento de software através do uso de um conjunto de serviços atômicos. O principal objetivo deste modelo de arquitetura é para atender os requisitos de interoperabilidade e escalabilidade de TI distribuídas, de baixo acoplamento e com base em padrões diferentes. Há muitas definições para arquiteturas orientadas a serviços; IBM Global Services define SOA como uma abordagem lógica para design de software, para fornecer aplicações em termos de serviços autônomos e distintos. Esses serviços podem ser usados independentemente dos componentes de software que são plataformas de peças e de computação no qual são executados (VERAS, 2013). Os serviços são os principais blocos de construção em arquiteturas orientadas a serviços. São componentes de software autônomos que podem ser consideradas como funções executadas localmente ou remotamente e de forma independente da 29 linguagem de programação ou plataforma de execução. Assim, aplicações em uma arquitetura orientada a serviços são definidos como uma composição de serviços web reutilizáveis, implementar a lógica de negócios do domínio da aplicação de serviços Web são baseados em padrões diferentes com base em XML (Extensible Markup Language) que permitem que funcionem corretamente (COUTINHO et al, 2018): São (Access Protocol Simple Object), Objeto Simples do Protocolo de Acesso é um protocolo de comunicação leve para a troca de informações como uma mensagem XML. O WSDL (Web Services Description Language) é uma linguagem de descrição baseada em XML e padronizada pelo W3C (World Wide Web Consortium). O WSDL é usado para descrever em detalhe os detalhes do serviço web, tais como protocolos, portos utilizados, as operações que podem ser realizadas, os formatos das mensagens e exceções de entrada e saída que podem ser enviados (DAROLT; DE SOUZA; KOSLOVSKI, 2016). O UDDI (Universal Description Discovery Integration), é um diretório distribuído para serviços web SEO, permitindo tanta publicação e exploração. O UDDI se comporta-se como um serviço web cujos métodos são chamados através do protocolo SOAP. O UDDI é um registro aberto a todos e padronizado pela OASIS (Organização para o Avanço de Padrões de Informação Estruturada) (MARCHISOTTI; JOIA; CARVALHO, 2019). O BPEL (Business Process Execution Language) é uma linguagem baseada em XML para serviços da Web em uma arquitetura orientada a serviços para interconectar e compartilhar dados. O BPEL é usado por programadores para definir como um processo de negócio que envolve os serviços da Web será executado por mensagens BPEL são normalmente utilizados para invocar serviços remotos, orquestrar a execução de processos de negócios e gerenciar eventos e exceções. O estilo arquitetônico SOA está estruturada em torno de três atores fundamentais descritos: fornecedor, cliente e diretório de serviços, bem como as interações entre esses atores, ou seja, as operações de publicação, pesquisa e invocação e link serviço (PARKER, 2016). 30 O prestador de serviços é o proprietário do serviço fornecendo uma plataforma host para esta compilação de carga anfitrião e, publicar a descrição de um serviço a partir de um diretório (por exemplo, UDDI) para colocar à disposição dos clientes. O cliente ou a entidade servida que representa o software de investigação e invoca um serviço web. A aplicação para cliente pode ser em si um serviço web. O diretório é um registro e descrição do serviço. Representa a entidade que reúne informações sobre serviços web disponíveis e como acessar (VERAS, 2013). A arquitetura orientada a serviços (SOA) e computação em nuvem são considerados de forma independente. No entanto, são tecnologias complementares e podem ser muito úteis para o outro. Cada vez mais, assumem papéis importantes em grandes organizações e empresas que os utilizam para aumentar a eficiência operacional das aplicações. Geralmente, várias organizações encontram dificuldades no uso da computação em nuvem porque os aplicativos na nuvem não têm uma base de arquitetura sólida (SIMOES; KAMIENSKI, 2014). A SOA é considerada neste caso como um pré-requisito para aplicativos implementados na nuvem. 2.4 SERVIÇO DE PROCESSOS DE NEGÓCIOS Um processo de negócio é um conjunto de um ou mais processos ou atividades que realizam em conjunto um objetivo de negócios ou política, geralmente como parte de uma estrutura organizacional que define papéis funcionais e relacionamentos. Um processo pode ser contido inteiramente dentro de uma única unidade organizacional ou pode abranger várias organizações, tais como a relação de fornecedor-cliente (DAROLT; DE SOUZA; KOSLOVSKI, 2016). A processos de negócios baseados em serviços (PAS) é um processo de negócio que é agrupar um conjunto de serviços web básicos que estão relacionados em termos da contribuição para a realização global do processo de negócio. Um serviço em um processo de negócio é geralmente a menor unidade de trabalho, é um módulo que oferece computação de dados e capacidades. Os serviços de executar as diversas atividades da PAS considerados. Os serviços de montagem de PAS pode ser fornecido utilizando uma variedade de especificações e modelos composição de serviços (por exemplo, BPEL). 31 Os processos de negócios baseados em serviços podem ser projetados usando uma variedade de linguagens como linguagens formais, linguagens de design e linguagens de execução de linguagens formais tais cadeias de Markov e redes de Petri são baseados em modelos teóricos e geralmente são fornecidos com uma semântica precisa e inequívoca. Usadopara verificar a precisão e desempenho através de técnicas e análise formal (modelo de verificação, simulação, etc.). No entanto, as línguas conceituais tais como UML (Unified Modeling Language) e BPMN (Business Process Modelo e Notation) são geralmente informais (COUTINHO et al, 2018). Estas línguas não têm semântica bem definida e não permite análise. Os ambientes de nuvem são cada vez mais adotado por diferentes empresas que utilizam infraestrutura de nuvem e uma plataforma para implantar, hospedar e executar os serviços, especialmente em termos de processos de empresas de serviços baseados (PAS). 2.5 WEB 2.0 O termo Web 2.0 é usado frequentemente para a segunda fase da World Wide Web, a partir de uma coleção de sites para uma plataforma de computação no próprio direito, fornecendo aplicações web para os utilizadores. Os usuários finais terão acesso fácil aos dados a partir de qualquer computador, a qualquer hora (HABAK et al, 2017). O termo Web 2.0 foi introduzido por Tim O'Reilly e Dale Dougherty em outubro de 2004 em uma sessão de conferência de brainstorming entre O'Reilly Media e empresas MediaLive internacionais para citar a evolução do world wide web. Na verdade, a Web 2.0 oferece uma colaboração entre os utilizadores da Internet, provedores de conteúdo e empresas. 32 3. CAPÍTULO 3 – GERENCIAMENTO AUTÔNOMO DE ELASTICIDADE NA NUVEM Com a evolução dos computadores e da emergência de novos sistemas de grande escala, complexos e distribuídos, a intervenção humana está se tornando mais difícil e muito lento para reagir a conta para certas situações relacionadas ao contexto de mudança execução, tais como falha de rede, hardware e software ou a variação brusca da carga de trabalho (COUTINHO; GOMES; DE SOUZA, 2014). Em um ambiente altamente dinâmico como a nuvem, é imperativo contar com uma gestão automática e dinâmica de recursos do computador para garantir uma boa qualidade de serviço (QoS), garantir um bom desempenho e satisfazer as necessidades dos clientes com base em acordos de nível de serviço (SLAs). Para atender a esses requisitos, a computação autônoma é usada na computação em nuvem para gerenciar e planejar o consumo de recursos em termos de elasticidade. A gestão autonômica na nuvem é a capacidade de controlar automaticamente e dinamicamente o fornecimento de recursos de TI de acordo com as flutuações na carga de trabalho (ALBONICO; MOTTU; SUNYÉ, 2016). Este estudo tem como objetivo proporcionar ao leitor uma visão tanto contexto clara e concisa da tese sobre a modelagem e análise de sistemas baseados em nuvem e o comportamento em termos de elasticidade. Para que, neste estudo começar descrevendo numa primeira secção autonômica computação e controle autonômico do circuito MAPE-K como um modelo para a gestão de elasticidade na nuvem. Na segunda seção, este estudo discute o princípio da elasticidade, definição e a elasticidade quádrupla: Estratégia de nível, propósito e método. A terceira seção apresenta uma visão geral das soluções acadêmicas que oferecem abordagens para a gestão autônoma de elasticidade na nuvem. Finalmente, numa quarta secção, o Autonomic Computing foi inicialmente introduzido em 2001 por Paul Horn, durante um discurso na Universidade de Harvard. Esta ideia foi materializada mais tarde em um manifesto publicado para marcar o início da abordagem. Um sistema autônomo é definido como um sistema que se administra, sem a necessidade de intervenção humana para garantir os melhores objetivos do usuário possíveis. Esses sistemas devem antecipar as necessidades para permitir que os usuários se concentrem no que querem realizar em vez de gastar o tempo para supervisionar o comportamento 33 dos sistemas (HABAK et al, 2017). A principal ideia dos sistemas autonômicos é inspirada no funcionamento do sistema nervoso humano que podem observar e adaptar o corpo ao meio ambiente, permitindo ficar em bom estado (COUTINHO et al, 2018). Por exemplo, o sistema nervoso controla a temperatura do corpo, o ritmo cardíaco, o nível de açúcar no sangue, e outras funções vitais. Nesta seção, introduziu-se a retalhista computação e propriedades autonômicas e malha de controle autônomo (SIMOES; KAMIENSKI, 2014). A computação autônoma é uma tentativa iniciada em 2001 pela IBM para superar a complexidade dos sistemas de computador nos dias de hoje e as do futuro, dando recursos de autogerenciamento (COUTINHO; GOMES; DE SOUZA, 2014). Os sistemas autônomos são autogeridos com oito características ou sistemas principais: autoconfiguração, autocura, auto otimização, autoproteção, autoconsciência, consciência do contexto, a abertura e auto adaptação. Os quatro primeiros itens são considerados principais características destes sistemas, enquanto os outros quatro elementos são características complementares. 3.1 CONFIGURAÇÃO AUTOMÁTICA (AUTOCONFIGURAÇÃO) A autoconfiguração refere-se à capacidade de um elemento independente a ser inteiramente integrado num sistema de acordo com a natureza e condição dos objetivos do sistema ou do utilizador. Esta propriedade permite que um sistema de computador para reconfigurar dado e obter, a qualquer único dia em função de objetivos de alto nível pré-definidos por seres humanos (DAROLT; DE SOUZA; KOSLOVSKI, 2016). O administrador do sistema só deve especificar a saída desejada e o sistema seria adaptado automaticamente, permitindo que funcione adequadamente para cumprir os objetivos originais (ALBONICO; MOTTU; SUNYÉ, 2016). Esta é uma propriedade que representa a capacidade de um sistema de computador para detectar, diagnosticar e reparar ou compensar as falhas em um sistema. Os tipos de problemas que são detectados podem ser interpretados num 34 sentido lato: podem ser erros de nível inferior (falhas de hardware) ou erros de nível alto (problemas de software). Assim, os sistemas autonômicos podem diagnosticar estes problemas que ocorrem durante a operação e fazer reparos sem qualquer possível perturbação. Um sistema é, então, a "autocura" ou a falha de reagentes quando é capaz de manter os negócios em uma condição estável por exceder eventos problemáticos devido ao fracasso dos elementos (MARCHISOTTI; JOIA; CARVALHO, 2019). A Autotuning é a capacidade de olhar continuamente maneiras de maximizar a eficiência ou em relação ao desempenho ou custo. Por exemplo, a otimização dos recursos de TI taxas de utilização. As operações de otimização podem ser sensíveis ao estado do sistema ou o ambiente, mas também pode ser iniciada de forma proativa. Assim, esta propriedade permite aos sistemas autonômicos adaptar otimamente configurado para impedir que as condições indesejáveis, tais como sobrecarga ou sub carga. A otimização é feita de acordo com os critérios geralmente definidos pelos usuários do sistema (COUTINHO et al, 2018). Um sistema autônomo pode proteger contra-ataques e ações que podem desestabilizar e tornar inativo maliciosos. Esta propriedade evita adulteração, permite ao sistema garantir a segurança, confidencialidade e proteção de dados. Além disso, a autoproteção é permitir que os sistemas de computação autônoma antecipem os vários ataques e todos os tipos de ameaças de segurança, a tomar precauções e reações apropriadas (DAROLT; DE SOUZA; KOSLOVSKI, 2016). É a capacidade de um sistema autônomo de saber o ambiente e as capacidades finais ou ser capaz de identificar ou calcular. Neste caso, para ser capaz de gerir adequadamente, o sistema deve saber os componentes e os estados, as capacidades atuais e as ligações com outros sistemas. Além disso, deve saber que recursos são de propriedade, e os proprietários de outros recursos que podem ser emprestados ou emprestar e, finalmente, quais são os recursos que podem ser compartilhados (ALBONICO; MOTTU; SUNYÉ, 2016). Caracterizaa capacidade de um sistema autônomo de perceber e utilizar as diversas informações contextuais, tais como a localização, tempo, temperatura, ou a identidade do utilizador para se adaptar dinamicamente a funcionalidade de acordo com as necessidades pré-definidas. Esta propriedade permite que um sistema autônomo para descrever o estado e o estado dos recursos para interagir com outros 35 sistemas. Também permite que descubra automaticamente o estado dos recursos disponíveis no meio ambiente ou o contexto atual (PARKER, 2016). Em adição às propriedades anteriormente mencionadas, os sistemas autônomos deve implementar padrões abertos para ser adequadamente integrados em ambientes heterogêneos (abertura). Além disso, devem antecipar as necessidades, mantendo ocultos dos usuários a complexidade (Auto adaptação). Por exemplo, um servidor de aplicação autônoma pode comparar o acesso em tempo real aos dados com os dados previamente salvos em uma história de antecipar degradações de desempenho e fazer os ajustes necessários (COUTINHO; GOMES; DE SOUZA, 2014). 3.2 CIRCUITO FECHADO DE CONTROLE AUTONÔMICO Os sistemas autonômicos são geralmente baseados em um gestor autonômico que controla as diferentes transições no sistema, e o comportamento interno destes elementos. O gestor autonômico consiste de um circuito fechado de controle inteligente e fechado. Nesta subseção, discutir a malha de controle autonômico MAPE-K arquivado pela IBM. Os detalhes, as quatro principais funções do circuito, a partilha de uma base de conhecimento, que são: observação, análise, planejamento e implementação (RIGHI, 2013). A observação no circuito de controlo MAPE-K proporciona mecanismos de captura de dados e informação a partir do ambiente (físico ou virtual) sobre as propriedades do sistema de gestão autonômicos. Estes dados do elemento administrado através dos sensores (sondas) são agregados, correlacionados e filtrados para determinar o sintoma a ser analisado. A informação processada pode ser transmitida análise de componentes cobrado periodicamente ou o observador o componente de monitoração necessário. No segundo caso, a informação recolhida deve ser analisada profundamente (COUTINHO; GOMES; DE SOUZA, 2014). Raciocinar sobre observações de dados complexos dos sensores com base em políticas e estratégias de gestão de alto nível. O componente de análise compara esta informação com as políticas globais de gestão do sistema definidos pelo administrador. Esta comparação fornece indicadores quantitativos e qualitativos 36 sobre o estado do sistema, para gerar solicitações de mudança enviados para o componente de planeamento (ALBONICO; MOTTU; SUNYÉ, 2016). Envolve a consideração de sensores de dados de vigilância para a produção de planos de ação que definem como as alterações necessárias serão implementadas. Essas mudanças dependem das decisões tomadas pelo componente responsável pela análise. Além disso, as alterações no elemento de dado podem ser planejadas de forma e tempo. Isto é conseguido através da definição de um conjunto de limitações de tempo atrasando as alterações ou o estabelecimento uma ordem ou prioridade de execução para considerar (MARCHISOTTI; JOIA; CARVALHO, 2019). Assegura-se a implementação das emendas do plano recomendado pelo componente dedicado. Isso é feito por meio da execução das ações necessárias por parte administrada através dos próprios atuadores. Se uma dada alteração afete vários elementos administrado, as ações podem ser distribuídas por várias máquinas (DAROLT; DE SOUZA; KOSLOVSKI, 2016). Representa-se as informações e dados de várias fontes, partilhada entre as diversas tarefas do ciclo MAPE-K. Estes conhecimentos compartilhados podem ser explorados e constantemente atualizados por qualquer uma dessas quatro tarefas. 3.3 ELASTICIDADE NA NUVEM A principal característica de sistemas elásticos na nuvem com base é a capacidade de se adaptar aos autônomos e em tempo real de acordo com as mudanças nas condições de funcionamento (por exemplo, aumento do número de pedidos recebidos no sistema) (SIMOES; KAMIENSKI, 2014). Esta qualidade deste tipo de sistema é a propriedade de elasticidade. Representa a principal característica que distingue paradigma de computação em nuvem de outros paradigmas (RIGHI, 2013). Devido a esta propriedade, sistemas baseados em nuvem elástica é capaz de ajustar dinamicamente a alocação de recursos para garantir a qualidade de serviço (QoS) adequada pré-definido nos Acordos de Nível de Serviço (SLA) de acordo com as flutuações da carga trabalho, minimizando os custos operacionais. Em outras palavras. 37 A elasticidade é frequentemente associada com escalabilidade ou "escalabilidade" de um sistema de nuvem. Mas, na realidade estes dois conceitos são diferentes e nunca deve ser usado para expressar a mesma coisa. A Escalabilidade de um sistema em nuvem é a capacidade de adicionar recursos de TI para lidar com o crescimento da carga de trabalho. Na literatura existem várias definições de elasticidade na nuvem (ALBONICO; MOTTU; SUNYÉ, 2016). A definição mais adotada atualmente nos círculos de pesquisa é dada tal como segue: Definição de elasticidade é o grau em que um sistema é capaz de se adaptar a cargas de trabalho de provisionamento e forma autonômica de recursos de modo que os recursos fornecidos são consistentes com a aplicação do sistema (COUTINHO; GOMES; DE SOUZA, 2014). De acordo com a classificação. A elasticidade é caracterizada pelo quádruplo: (estratégia, nível, método e objetivo). O nível especifica o alvo de elasticidade, ou seja, o nível de infraestrutura, plataforma, aplicação e equilíbrio de carga. A estratégia é a implementação da elasticidade da política, pode ser proativa, reativa ou híbrida. O objetivo é o propósito por trás de redimensionamento. Por exemplo, melhorando o desempenho de um sistema de nuvem. Finalmente, o método utilizado na implementação da elasticidade nomeadamente horizontal (escala horizontal), a elasticidade vertical (escala vertical) e a migração. O restante desta seção é dedicado a uma apresentação detalhada do quádruplo (nível, estratégia, alvo, método) (PARKER, 2016). Este nível representa a gama de ação de elasticidade. Este âmbito é definido pela natureza do recurso ou por camadas de um sistema de nuvem. Infraestrutura, plataforma de aplicativos e até mesmo nível de distribuição de carga. Primeiramente, a elasticidade é fornecida pelo IaaS (infraestrutura como um serviço), onde os recursos provisionados são principalmente instâncias de máquinas virtuais. No entanto, outros serviços de infraestrutura também podem ser redimensionados ou replicadas, como largura de banda e capacidade de armazenamento. No PaaS (plataforma como um serviço), a elasticidade é o redimensionamento ou recipientes de replicação ou bases de dados. Além disso, a elasticidade é implementada nas SaaS nível (software-as-a-service), onde os recursos adicionais podem ser concedidos a aplicações ou serviços web (DAROLT; DE SOUZA; KOSLOVSKI, 2016). 38 As estratégias são condições elásticas que representam as interações necessárias para a execução de ações de elasticidade. Na computação em nuvem, a elasticidade é implementada por três tipos de estratégia: proativa, reativo e híbrido (proativas e recativas). Estratégias proativas usar técnicas heurísticas, matemáticas e analíticas para antecipar flutuações na carga de trabalho e mudanças de comportamento em sistemas elásticos nuvem com base e também para decidir quando e como colocar o sistema em escala, estratégias reativas são baseadas no mecanismo de regra de condição de ação (RIGHI, 2013). Uma regra é composta por um conjunto de condições que desencadeiam a ação elástica quando cheio, a fim de tomar as medidas necessárias paraaumentar ou reduzir a quantidade de recursos alocados. Cada condição leva em consideração um sistema de evento ou métrica e compara com informações obtidas a partir de um serviço de monitoramento. Finalmente, uma estratégia híbrida é uma combinação de uma estratégia de proativa e uma estratégia reativa (COUTINHO; GOMES; DE SOUZA, 2014). Nos sistemas baseados em nuvem, a elasticidade é usada por várias razões e para alcançar vários objetivos. Do ponto de vista de um fornecedor, elasticidade garante uma melhor utilização dos recursos de TI que oferece economias de escala e permite servir vários usuários simultaneamente. Do ponto de vista do utilizador, a elasticidade é utilizada principalmente para evitar a falta de recursos e, por conseguinte, a degradação do desempenho do sistema. Além disso, a elasticidade pode ser utilizada para assegurar a eficiência de energia, onde o uso da quantidade mínima de recursos para atingir este objetivo (ALBONICO; MOTTU; SUNYÉ, 2016). A elasticidade na nuvem pode ser fornecida por meio de três métodos. A elasticidade horizontal envolve a replicação (aumento de escala) ou deleção (escala para baixo) instâncias de máquinas virtuais (VMs), recipientes, aplicações de serviços da Web e balanceamento de carga de acordo com as mudanças na carga de trabalho. A escala horizontal é o método mais utilizado atualmente para fornecer elasticidade em ambientes de costura da computação. A elasticidade vertical, também chamada "redimensionamento ou fazendo a escala vertical" altera a capacidade global dos recursos atribuídos a um exemplo (contentor VM, aplicação de carga balanceador) adição (escala acima) ou removendo (escala para baixo) de recursos como CPU, memória, largura de banda de disco. 39 A elasticidade vertical é o método mais simples. No entanto, é menos popular do que a elasticidade horizontal do fato de que é menos eficiente e mais restritiva. Finalmente, o método de migração de transferência de uma máquina virtual, um recipiente ou uma aplicação a ser executada a partir de um hospedeiro para outro sobrecarregado menos carregado. A migração é geralmente utilizada na nuvem para outros objetivos, tais como a tolerância a falhas e isolamento. No entanto, algumas soluções da nuvem não elásticas utilizar este método para simular o comportamento obtido pela escala vertical (DAROLT; DE SOUZA; KOSLOVSKI, 2016). Por exemplo, ao mover uma máquina virtual de um servidor responsável por outro menos carregado, para gerir um aumento na carga de trabalho, o método de migração de transferência de uma máquina virtual, um recipiente ou uma aplicação de execução de um hospedeiro para outro sobrecarregado menos carregado. 3.4 SISTEMA AUTONÔMICO, ELASTICIDADE MANAGEMENT SOLUTIONS Nos últimos anos, um maior esforço tem sido dirigido para a gestão autônoma de recursos de TI na nuvem em termos de elasticidade. Várias contribuições relativas à gestão e planejamento de elasticidade horizontal e vertical em diferentes níveis, proporcionando elasticidade dos controladores autônomos com base em diferentes estratégias, proativas ou reativa, esta seção algumas soluções acadêmicas para garantir elasticidade em ambientes de computação em nuvem. Os autores propuseram um gerente de elasticidade chamado ElastMan que automatiza elasticidade e modelos de armazenamento de dados "lojas de valor- chave" que são executados na nuvem. O gerente ElastMan redimensiona automaticamente os serviços de nuvem de acordo com mudanças na carga de trabalho para garantir uma boa qualidade de serviço (QoS) com um custo mínimo. ElastMan consiste em dois componentes principais: o componente controlador feedforward e o controlador de feedback. Ao combinar estes dois componentes, ElastMan pode gerenciar o desempenho de máquinas virtuais na nuvem, as flutuações na carga de trabalho e de qualidade rigorosos de serviço (QoS). O componente controlador feedforward ElastMan monitora a carga de trabalho e usa um modelo de regressão logística para prever se a carga de trabalho viola os 40 acordos de nível de serviço (SLAs), e reagir de acordo com esta previsão. O componente feedforward controlador é usado principalmente para responder rapidamente às flutuações bruscas de carga de trabalho. O segundo componente do controlador de feedback monitoriza o desempenho de serviço e reage de acordo com a diferença do desvio do desempenho desejado especificados no contrato de nível de serviço (SLA). O componente de feedback do controlador é usado em ElastMan para corrigir erros no modelo de regressão logística utilizada pelo componente controlador feedforward e para gerir as mudanças graduais na carga de trabalho (ALBONICO; MOTTU; SUNYÉ, 2016). Foi proposto um quadro para a gestão autônoma da elasticidade dos aplicativos na nuvem chamado Vulcan. Em particular, propuseram um loop de controle autonômico fechado com base no modelo MAPE-K (monitorar, analisar, planejar e executar) a IBM para garantir elasticidade, enquanto considerando cenários complexos nos sistemas baseados em nuvem. Este circuito fechado de controlo é constituído por um conjunto de componentes. Primeiro, o componente de planeamento que descreve como um aplicativo deve ser reconfigurada de acordo com uma decisão de elasticidade. Onde o componente de escalonamento recebe uma elasticidade de um componente de decisão analisador, calcula o novo estado da aplicação a ser controlada (nova arquitetura da aplicação) (COUTINHO; GOMES; DE SOUZA, 2014). Para realizar essa tarefa, que utiliza uma primeira descrição que representa a arquitetura de aplicação atual e outra descrição que consiste de toda a possível arquitetura da aplicação. Um algoritmo relacionado usa essas descrições para calcular e determinar as mudanças a fazer na arquitetura da aplicação, dependendo da decisão elasticidade. As alterações envolvem principalmente adição e remoção de uma máquina virtual ou recipiente e outras operações para a reconfiguração da arquitetura atual (MARCHISOTTI; JOIA; CARVALHO, 2019). Uma solução de alimentação em termos de recursos e horizontal elasticidade vertical foi apresentada. Os autores propuseram algoritmo inicialmente proativa que funciona em duas fases: a primeira fase determina o número e tipo de máquinas virtuais ideais para fornecer e atender uma carga de trabalho esperada no futuro (reserva de recursos de longo prazo). A segunda fase prevê recursos adicionais se a capacidade de recursos reservados atualmente é insuficiente (provisionamento fina 41 de recursos). Além disso, uma arquitetura é proposta para provedores de serviços em nuvem. Esta arquitetura utiliza o algoritmo em duas fases para garantir a oferta elástica de recursos, além de otimizar os custos (RIGHI, 2013). A arquitetura proposta consiste de um componente de monitoração de motor que monitora as flutuações da carga de trabalho e a utilização de recursos (PARKER, 2016). Um componente Workload Analyzer que utiliza modelos analíticos para analisar a carga de trabalho é um componente de modelo que prevê a carga de trabalho de entrada. Um componente planeja a elasticidade que executa o algoritmo em duas fases inicialmente propostas, para assegurar uma alocação ótima de recursos. Finalmente, um componente Resource Broker que realiza o planejamento e entrega de recursos provedor de IaaS adaptativo. Um componente Planner Elasticidade que executa o algoritmo em duas fases inicialmente propostas, para assegurar uma alocação ótima de recursos. Os autores incidiram sobre a gestão dos ambientes de nuvem elásticas horizontais no nível de infraestrutura. Para atingir este objetivo, propuseram uma elasticidade híbrida e controlador que casam entre um controlador reativo para a criação de novas instâncias VM (ampliam) e outro controlador proativa para excluir instâncias
Compartilhar