• Nenhum resultado encontrado

Ferramenta para Avaliar Arquitecturas de Microsserviço

N/A
N/A
Protected

Academic year: 2021

Share "Ferramenta para Avaliar Arquitecturas de Microsserviço"

Copied!
77
0
0

Texto

(1)

Ferramenta para Avaliar Arquitecturas de Microsservic¸o

Jo ˜ao Jos ´e da Costa

Dissertac¸ ˜ao para obtenc¸ ˜ao do Grau de Mestre em

Engenharia Inform ´atica e de Computadores

Orientador: Prof. Jo ˜ao Coelho Garcia

J ´

uri

Presidente: Prof. Daniel Jorge Viegas Gonc¸alves

Orientador: Prof. Jo ˜ao Coelho Garcia

Vogal: Prof. Lu´ıs Manuel Antunes Veiga

(2)
(3)

Resumo

A arquitectura de microsservic¸o oferece in ´umeras vantagens para os sistemas distribu´ıdos em larga escala, tais como escalabilidade diferenciada, resili ˆencia e optimizac¸ ˜ao de cada subsistema de forma aut ´onoma [Newman, 2015]. Estas vantagens dependem da qualidade de construc¸ ˜ao dos microsservic¸os, que ´e um processo complexo e apresenta fundamentalmente desafios arquitecturais e operacionais. A construc¸ ˜ao dum sistema baseado em microsservic¸os ´e realizada a partir da conjugac¸ ˜ao de diversos factores (protocolos de comunicac¸ ˜ao, replicac¸ ˜ao, coordenac¸ ˜ao, frameworks e outros). A conjugac¸ ˜ao desses factores resulta num conjunto elevado de alternativas de plataforma, cuja decis ˜ao de quais escolher e como avaliar o impacto desta decis ˜ao sob uma base comum n ˜ao ´e tarefa trivial.

Esta dissertac¸ ˜ao prop ˆos uma ferramenta que permite avaliar o desempenho de variantes de plata-formas subjacentes de sistemas baseado em microsservic¸os sob uma base comum. As ferramentas actuais para Benchmarking de microsservic¸os focam-se em sistemas monol´ıticos, por exemplo o TPC-W (um Benchmark reconhecido para avaliac¸ ˜ao de bases de dados de com ´ercio online) e muitas outras ferramentas, n ˜ao s ˜ao facilmente aplicadas aos sistemas de microsservic¸os devido as caracter´ısticas deste modelo arquitectural. A nossa ferramenta permite avaliar e comparar, em termos de d ´ebito e lat ˆencia, estas diferentes implementac¸ ˜oes (quer monol´ıticas quer baseadas em microsservic¸os) inde-pendentemente da implementac¸ ˜ao espec´ıfica da interface da aplicac¸ ˜ao. A nossa ferramenta apresentou bons resultados, em termos de correc¸ ˜ao e desempenho, em comparac¸ ˜ao com o TPC-W e a si mesma quando comparada com instalac¸ ˜ao georeplicada do servic¸o Shopping. Os testes realizados mostraram que a nossa ferramenta avalia com boa precis ˜ao e com bom desempenho.

Palavras Chave

(4)
(5)

Abstract

The microservice architecture offers numerous advantages for large-scale distributed systems, such as differentiated scalability, resilience and autonomous optimization of each subsystem [Newman, 2015]. These advantages depend on the quality of building microservices, which is a complex process and fundamentally presents architectural and operational challenges. The system-building based on micro-services results in the combination of several factors (communication protocols, replication, coordination, frameworks, and others). The combination of these factors results in a variety of platform alternatives, whose decision on which to choose and how to evaluate the impact of this decision on a common basis is no trivial task.

This dissertation proposed a Benchmark tool that allows evaluating the performance of underlying platform variants of microservices-based systems. Today’s microservice benchmarking tools focus on monolithic systems, for example, TPC-W (a recognized benchmark for online commerce database eva-luation) and many other tools, are not easily applied to microservice systems due to their characteristics. Our tool allows you to evaluate and compare, in terms of throughput and latency, these different imple-mentations (both monolithic and microservices-based) regardless of the specific implementation of the application interface. Our tool delivered good results in terms of correction and performance compared to TPC-W and itself when compared to the geo-replicated deployment of the Shopping service. The tests performed showed that our tool evaluates with good accuracy and good performance.

Keywords

(6)
(7)

Conte ´

udo

1 Introduc¸ ˜ao 1

2 Fundamentos Te ´oricos e Trabalhos Relacionados 7

2.1 Fundamentos Te ´oricos. . . 9 2.1.1 Microsservic¸os . . . 9 2.1.2 Benchmarks . . . 12 2.2 Trabalhos relacionados . . . 14 2.2.1 Benchmark TPC-W . . . 15 2.2.2 Benchmark RUBiS. . . 16

2.2.3 Benchmark SPEC Web 2009 . . . 17

2.3 Resumo . . . 19

3 Arquitectura 21 3.1 Requisitos . . . 23

3.2 Arquitectura . . . 24

3.2.1 TPC-W microsservic¸o . . . 26

3.3 Fluxo de Trabalho T´ıpico. . . 34

3.3.1 Escalabilidade e populac¸ ˜ao das bases de dados . . . 35

3.3.2 Ativac¸ ˜ao das medic¸ ˜oes . . . 35

3.3.3 Execuc¸ ˜ao das medic¸ ˜oes. . . 36

3.3.4 Encerramento das medic¸ ˜oes . . . 36

3.3.5 Apresentac¸ ˜ao de relat ´orio . . . 37

4 Implementac¸ ˜ao 39 4.1 Detalhes Gerais . . . 41 4.1.1 Comunicac¸ ˜ao. . . 41 4.1.2 Configurac¸ ˜ao . . . 42 4.2 Principais Componentes . . . 43 4.2.1 Fase de Pr ´e-teste . . . 43 4.2.2 Fase de Teste. . . 44

(8)

4.2.3 Fase de P ´os-teste . . . 44 5 Avaliac¸ ˜ao 47 5.1 Configurac¸ ˜oes . . . 49 5.2 Correcc¸ ˜ao . . . 50 5.3 Desempenho . . . 51 5.4 Resumo . . . 53 6 Conclus ˜ao 55 6.1 Trabalho Futuro . . . 57

(9)

Lista de Figuras

1.1 Arquitecturas de software monol´ıtica - suas caracter´ısticas. . . 3

1.2 Arquitecturas de software de microsservic¸o - suas caracter´ısticas. . . 4

2.1 Arquitecturas de software: Monol´ıtica e Microsservic¸o. . . 10

2.2 Abordagem de Benchmark para avaliac¸ ˜ao de desempenho . . . 13

2.3 Arquitectura do TPC-W. . . 15

2.4 Arquitectura do RUBiS. . . 17

2.5 Arquitectura do SPEC Web 2009.. . . 19

3.1 Arquitectura da nossa ferramenta de Benchmark . . . 24

3.2 Sistema em Avaliac¸ ˜ao, da express ˜ao em Ingl ˆes System Under Test (SUT) baseado em Microsservic¸o. . . 27

3.3 Modelo de Dados do Customer.. . . 28

3.4 Modelo de Dados do Product. . . 29

3.5 Modelo de Dados do Shopping.. . . 30

3.6 Escalabilidade e populac¸ ˜ao das bases de dados. . . 35

3.7 Ativac¸ ˜ao das medic¸ ˜oes. . . 36

3.8 Execuc¸ ˜ao das medic¸ ˜oes. . . 37

3.9 Encerramento das medic¸ ˜oes. . . 37

4.1 Comunicac¸ ˜ao entre os componentes da ferramenta. . . 41

4.2 Execuc¸ ˜ao das medic¸ ˜oes - Detalhes. . . 44

5.1 Verificac¸ ˜ao da satisfac¸ ˜ao dos limites de Interac¸ ˜oes de Servic¸o por Segundo, da express ˜ao em Ingl ˆes Service Interactions Per Second (SIPS) para o TPC-W. . . 51

5.2 Verificac¸ ˜ao da satisfac¸ ˜ao dos limites de SIPS para a nossa ferramenta. . . 51

5.3 Comparac¸ ˜ao de d ´ebitos SIPS: TPC-W vs Nossa ferramenta. . . 52

(10)

5.5 M ´edia de Tempo de Resposta: TPC-W e Nossa ferramenta . . . 53

5.6 Comparac¸ ˜ao de D ´ebitos SIPS: Sem m ´oduloOrders georeplicado versus m ´odulo Orders

(11)

Lista de Tabelas

2.1 Comparac¸ ˜ao das arquitecturas de software - Microsservic¸o versus Monol´ıtica. . . 10

2.2 Caracterizac¸ ˜ao dos trabalhos relacionados. . . 20

3.1 Principais funcionalidades do subsistemaCustomer. . . . 28

3.2 Principais funcionalidades do subsistemaProduct.. . . 29

3.3 Principais funcionalidades do subsistemaShopping . . . 29

5.1 Matriz de mistura de interac¸ ˜oes. . . 50

5.2 Matriz de restric¸ ˜ao de Tempo de Resposta de Interac¸ ˜oes Web, da express ˜ao em Ingl ˆes Web Service Interaction Response Time (WIRT) . . . 50

(12)
(13)

Lista de Algoritmos

4.1 GetEndpointGeo: Estrat ´egia para obter pr ´oximo endpoint - teste de georeplicac¸ ˜ao. . . 45

(14)
(15)

Acr ´

onimos

SUT Sistema em Avaliac¸ ˜ao, da express ˜ao em Ingl ˆes System Under Test

SQL-DDL Linguagem de definic¸ ˜ao de dados SQL, da express ˜ao em Ingl ˆes SQL - Data Definition

Language

SQL Linguagem de Consulta Estruturada, da express ˜ao em Ingl ˆes Structured Query Language

SIPS Interac¸ ˜oes de Servic¸o por Segundo, da express ˜ao em Ingl ˆes Service Interactions Per Second

WIRT Tempo de Resposta de Interac¸ ˜oes Web, da express ˜ao em Ingl ˆes Web Service Interaction Response Time

EB Neg ´ocio Emulado, da express ˜ao em Ingl ˆes Emulated Business

BSL Tamanho da Sess ˜ao de Neg ´ocio, da express ˜ao em Ingl ˆes Business Session Length

RBE Emulador Remoto de Neg ´ocio, da express ˜ao em Ingl ˆes Remote Business Emulator

B2B Modelo de Troca de Produtos, Servic¸os ou Informac¸ ˜oes entre Empresas, da express ˜ao em Ingl ˆes Business-To-Business

POV Verificac¸ ˜ao da Ordem de Compra, da express ˜ao em Ingl ˆes Purchase Order Verification

PGE Emulador de Portal de pagamento, da express ˜ao em Ingl ˆes Payment Gateway Emulator

ICE Emulador de Controle de Invent ´ario, da express ˜ao em Ingl ˆes Inventory Control Emulator

DDD Desenho Orientado a Dom´ınio, da express ˜ao em Ingl ˆes Domain-Driven Design

API Interface de Programa de Aplicac¸ ˜ao, da express ˜ao em Ingl ˆes Application Program Interface

(16)

TPC Conselho de Desempenho de Processamento de Transac¸ ˜oes, da express ˜ao em Ingl ˆes Transaction Processing Performance Council

HTTP Protocolo de Transfer ˆencia de Hipertexto, da express ˜ao em Ingl ˆes Hypertext Transfer Protocol

(17)

1

Introduc¸ ˜ao

(18)
(19)

Tradicionalmente as aplicac¸ ˜oes s ˜ao desenhadas baseadas numa arquitectura monol´ıtica, Figura1.1. Neste modelo arquitectural, as aplicac¸ ˜oes possuem os m ´odulos fortemente acoplados, instalados como um ´unico pacote e executados como um ´unico processo (Figura 1.1.(a)) [Gamma et al., 1994,Taibi et al., 2017]. Todos os componentes s ˜ao combinados num ´unico programa, p.e., as operac¸ ˜oes do lado do servidor, l ´ogica de neg ´ocio, camada de base de dados e integrac¸ ˜oes s ˜ao todas interligadas e inter-dependentes [Alonso et al., 2004].

Esta arquitectura apresenta v ´arias limitac¸ ˜oes para os sistemas distribu´ıdos em larga escala, tais como falta de resili ˆencia, escalabilidade limitada, depend ˆencias de instalac¸ ˜ao dos m ´odulos e tanto a qualidade do c ´odigo como a agilidade reduzem com o crescimento da aplicac¸ ˜ao [Newman, 2015,Taibi et al., 2017,Wolff, 2017].

Devido ao forte acoplamento, Figura1.1.(a), qualquer actualizac¸ ˜ao requer a criac¸ ˜ao de novo pacote da aplicac¸ ˜ao. A complexidade do c ´odigo aumenta gradualmente em func¸ ˜ao das modificac¸ ˜oes, i.e., ´e dif´ıcil manter uma boa estrutura modular. ´E imposs´ıvel combinar diferentes tecnologias, p.e., combinar duas tecnologias de base de dados para explorar o melhor de cada uma. A aplicac¸ ˜ao n ˜ao ´e resiliente, i.e., ´e incapaz de resistir a falha de um dos m ´odulos. Precisa executar v ´arias inst ˆancia da aplicac¸ ˜ao para satisfazer os requisitos de escalabilidade e disponibilidade, Figura1.1.(b), i.e., n ˜ao permitem es-calar e aumentar a disponibilidade apenas dos componentes que apresentam um desempenho limitado (escalabilidade diferenciada, Figura1.2.(b)).

(20)

Devido a estas limitac¸ ˜oes, actualmente tem sido adoptada a arquitectura de microsservic¸o, Fi-gura1.2, para o desenvolvimento de aplicac¸ ˜oes distribu´ıdas em larga escala [Taibi et al., 2017].

Os Microsservic¸os potenciam uma divis ˜ao da aplicac¸ ˜ao em unidades aut ´onomas, Figura 1.2, de alta coes ˜ao e fracamente acopladas de tal modo que, estas unidades, possam ser desenvolvidas, distribu´ıdas, executadas e mantidas de forma independente [Lewis and Fowler, 2014,Newman, 2015].

Estas unidades s ˜ao componentes da aplicac¸ ˜ao executadas cada um no seu pr ´oprio processo comu-nicando atrav ´es de Web Services ou outros mecanismos similares. Enquanto que em aplicac¸ ˜oes Mo-nol´ıticas as bibliotecas s ˜ao definidas como componentes vinculadas ao programa e invocadas usando chamadas de func¸ ˜ao na mem ´oria [Alonso et al., 2004], na arquitectura de microsservic¸os os compo-nentes da aplicac¸ ˜ao s ˜ao os Microsservic¸os [Newman, 2015,Lewis and Fowler, 2014].

A divis ˜ao da aplicac¸ ˜ao em unidades, Microsservic¸os ou subsistemas, permite uma escalabilidade diferenciada, isolamento de dados, liberdade tecnol ´ogica, f ´acil instalac¸ ˜ao, entrega cont´ınua, alinha-mento organizacional, reutilizac¸ ˜ao de c ´odigo atrav ´es de chamadas de servic¸os e resili ˆencia bem como a optimizac¸ ˜ao de cada subsistema em func¸ ˜ao da demanda ou da expans ˜ao do dom´ınio de neg ´ocio de forma ´agil [Newman, 2015,Hunter II, 2017,Wolff, 2017].

Figura 1.2: Arquitecturas de software de microsservic¸o - suas caracter´ısticas.

A atractividade dos microsservic¸os para as aplicac¸ ˜oes distribu´ıdas em larga escala, motivou em-presas como a Amazon, Microsoft e Netflix a adoptarem este modelo arquitectural e muitas outras a emigrar os seus sistemas para a arquitectura de microsservic¸os [Taibi et al., 2017,Scholl et al., 2016].

(21)

Os benef´ıcios oferecidos pela arquitectura de microsservic¸os dependem da qualidade de construc¸ ˜ao dos Microsservic¸os. A construc¸ ˜ao de Microsservic¸os ´e um processo complexo e apresenta fundamen-talmente desafios arquitecturais e operacionais resultante da interac¸ ˜ao entre os v ´arios componentes distribu´ıdos que comp ˜oem o sistema [Newman, 2015,Hunter II, 2017,Daya et al., 2015]

Por exemplo, se for solicitado a quatro especialistas o desenho duma arquitectura de microsservic¸o dado um conjunto de requisitos para uma loja online, podem cada um apresentar uma arquitectura diferente. Este mesmo desenho dado a quatro equipas de desenvolvimento, podem apresentar qua-tro implementac¸ ˜oes diferentes em termos de tecnologias, frameworks e protocolos. Ao passar para produc¸ ˜ao, dando a quatro administradores de sistema dependendo do cen ´ario de cada um (centro de dados local ou na nuvem, demanda de pedidos, recursos financeiros e outros), podem propor quatro plataformas diferentes (infraestruturas, ferramentas de monitoramento e outros).

Esta situac¸ ˜ao ocorre, porque a construc¸ ˜ao duma aplicac¸ ˜ao baseado em Microsservic¸os ´e realizada a partir da conjugac¸ ˜ao de diversos factores (protocolos de comunicac¸ ˜ao, replicac¸ ˜ao, coordenac¸ ˜ao, tipos de armazenamentos, Frameworks e outros) [Murugesan, 2017,Hunter II, 2017,Daya et al., 2015].

A conjugac¸ ˜ao desses factores resulta num conjunto elevado de alternativas de plataforma, cuja decis ˜ao de quais escolher e como avaliar o impacto desta decis ˜ao sob uma base comum n ˜ao ´e tarefa trivial.

Nestas condic¸ ˜oes, ´e indispens ´avel uma ferramenta que permita comparar as v ´arias combinac¸ ˜oes e alternativas de soluc¸ ˜oes, em termos de plataforma, sob uma base comum capaz de avaliar o desem-penho destes sistemas de modo a minimizar a complexidade na avaliac¸ ˜ao das diferentes alternativa de desenho sob uma base comum.

Uma das maneiras mais f ´aceis e diretas de avaliar diferentes sistemas em termos de desempenho ´e atrav ´es de Benchmarking (processo pelo qual ´e comparado, em termos quantitativos, uma soluc¸ ˜ao em relac¸ ˜ao a outra considerada como padr ˜ao) [Jain, 1991b,Obaidat and Boudriga, 2010,Fortier and Michel, 2013a].

As ferramentas actuais para Benchmarking de Microsservic¸os focam-se em sistemas Monol´ıticos, por exemplo o TPC-W [Francisco, 2003] (um Benchmark reconhecido para avaliac¸ ˜ao de bases de dados de com ´ercio online) e muitas outras ferramentas [OW2, 2011,SPEC, 2003], n ˜ao s ˜ao facilmente aplicadas aos sistemas de Microsservic¸os devido as caracter´ısticas deste modelo arquitectural.

Nosso objectivo ´e fornecer uma nova ferramenta de Benchmark que avalia o desempenho de vari-antes de plataformas subjacentes de sistemas baseado em microsservic¸os sob uma base comum. ´E avaliado, em termos de d ´ebito e lat ˆencia, o desempenho dos servidores de aplicac¸ ˜ao e de servidores de base de dados associados a cada servidor de aplicac¸ ˜ao. Em resumo, nossas contribuic¸ ˜oes neste trabalho podem ser resumidas da seguinte forma:

(22)

(quer Monol´ıticas quer baseadas em Microsservic¸os), em termos de d ´ebito e lat ˆencia, e permitir avaliar alternativas de desenhos independentemente da implementac¸ ˜ao espec´ıfica da interface da aplicac¸ ˜ao. A ferramenta avalia e compara diferentes alternativa de desenho e instalac¸ ˜oes (implantac¸ ˜oes ou deployment em ingl ˆes) sob uma base comum.

• Propomos uma divis ˜ao do TPC-W em microsservic¸os

• Desenvolvemos o TPC-W microsservic¸o, que ´e a vers ˜ao microsservic¸o do TPC-W baseada na nossa proposta de divis ˜ao.

• Realizamos uma s ´erie de experimentos para testar a correcc¸ ˜ao e o desempenho da nossa ferra-menta de Benchmark.

Esta dissertac¸ ˜ao est ´a composta por 6 cap´ıtulos. No cap´ıtulo 1, ´e introduzido o trabalho. No cap´ıtulo2, ´e apresentado os conceitos essenciais para melhor compreens ˜ao do trabalho e uma an ´alise comparativa dos trabalhos relacionados. No cap´ıtulo3, ´e feito uma descric¸ ˜ao da arquitectura da nossa ferramenta de Benchmark e, de seus detalhes de implementac¸ ˜ao no cap´ıtulo4. No cap´ıtulo5, apre-sentamos e discutimos os resultados da avaliac¸ ˜ao da nossa ferramenta de Benchmark. E no cap´ıtulo6, encerramos com algumas considerac¸ ˜oes finais e sugest ˜oes para trabalhos futuros.

(23)

2

Fundamentos Te ´

oricos e Trabalhos

Relacionados

Conte ´

udo

2.1 Fundamentos Te ´oricos . . . . 9

2.2 Trabalhos relacionados. . . 14

(24)
(25)

Neste cap´ıtulo, ´e apresentado os conceitos fundamentais para melhor compreens ˜ao do conte ´udo deste documento. Na sec¸ ˜ao 2.1, ´e introduzido e discutido os Microsservic¸os e os Benchmarks. Na secc¸ ˜ao2.2, ´e feita uma an ´alise comparativa dos trabalhos relacionados. E finalmente, na secc¸ ˜ao 2.3

´e apresentado, de forma sucinta, os aspectos mais relevantes relacionados a an ´alise comparativa feita na secc¸ ˜ao2.2.

2.1

Fundamentos Te ´

oricos

Na subsecc¸ ˜ao2.1.1, ´e apresentado os conceitos essenciais relacionados aos Microsservic¸os, desde as suas caracter´ısticas at ´e aos seus desafios. Finalmente na subsecc¸ ˜ao2.1.2, ´e apresentado os prin-cipais conceitos relacionados aos Benchmarks.

2.1.1

Microsservic¸os

Microsservic¸os s ˜ao servic¸os de fina granularidade, de alta coes ˜ao1 e fracamente acoplados, em que cada servic¸o ´e focado numa capacidade de neg ´ocio e executado em seu pr ´oprio processo [ New-man, 2015,Scholl et al., 2016], mas trabalham juntos para atender aos requisitos duma determinada aplicac¸ ˜ao.

A arquitectura de microsservic¸o, de forma sucinta, ´e um modelo arquitectural que permite o desenho de aplicac¸ ˜oes como um conjunto de subsistemas aut ´onomos, que se comunicam atrav ´es de Web Ser-vices ou mecanismos similares. Estes subsistemas podem ser actualizados de forma independente, sem a necessidade de actualizar, igualmente, seus consumidores. Cada subsistema exp ˜oe sua API para colaborac¸ ˜ao e consome os servic¸os necess ´arios, expostos por outros subsistemas, para atender um determinado pedido.

Esta abordagem contrasta com o m ´etodo tradicional de construc¸ ˜ao de servic¸os Monol´ıticos. Em que as aplicac¸ ˜oes possuem os m ´odulos fortemente acoplados, instalados como um ´unico pacote e executados como um ´unico processo [Alonso et al., 2004,Gonzalez, 2016]. A Figura 2.1, ilustra as particularidade destes modelos arquitecturais.

Os Microsservic¸os oferecem muitas vantagens para os sistemas distribu´ıdos em larga escala [ New-man, 2015,Scholl et al., 2016,Hunter II, 2017], desde a liberdade para combinar diversas tecnologias, resistir a falha de subsistemas, optimizar os subsistemas que apresentam desempenho limitado, ins-talar e manter subsistemas de forma independente, at ´e ao alinhamento organizacional. A Tabela2.1, resume as principais vantagens da arquitectura de microsservic¸o em relac¸ ˜ao a arquitectura monol´ıtica. A heterogeneidade tecnol ´ogica ´e uma vantagem da arquitectura de microsservic¸o em relac¸ ˜ao a ar-quitectura monol´ıtica. A arar-quitectura de microsservic¸o, permite usar diferentes tecnologias nos

(26)

Figura 2.1: Arquitecturas de software: Monol´ıtica e Microsservic¸o.

Tabela 2.1: Comparac¸ ˜ao das arquitecturas de software - Microsservic¸o versus Monol´ıtica.

Microsservic¸o Monol´ıtica

Tecnologia Heterog ˆenea Homog ˆenea

Resili ˆencia Presente Ausente

Escalabilidade Subsistema Sistema

Manutenc¸ ˜ao F ´acil Dif´ıcil

Gest ˜ao de dados Descentralizado Centralizado

Alinhamento Organizacional Neg ´ocio Tecnologia

tes subsistemas [Newman, 2015,Scholl et al., 2016]. Isto significa que podemos escolher a ferramenta certa para cada subsistema e aproveitar o melhor que cada uma pode oferecer. Por exemplo, para uma rede social, podemos armazenar as interac¸ ˜oes dos utilizadores numa base de dados orientada a grafo para refletir facilmente a interconex ˜ao entre os utilizadores, enquanto as publicac¸ ˜oes dos utiliza-dores podem ser armazenadas numa base de dados orientada a documentos, dando origem a uma arquitetura heterog ´enea. Pode-se ainda decidir usar uma pilha de tecnologia diferente que oferec¸a os melhores n´ıveis de desempenho necess ´arios.

A pr ´oxima vantagem ´e a resili ˆencia. ´E uma qualidade desej ´avel nos sistemas distribu´ıdos em larga escala, que ´e apenas oferecida pela arquitectura de microsservic¸o. Numa aplicac¸ ˜ao Monol´ıtica, se um servic¸o falhar, tudo p ´ara de funcionar. Embora, num sistema Monol´ıtico, podemos executar v ´arias m ´aquinas para reduzir as chances de falha, o sistema Monol´ıtico n ˜ao resiste, p.e., a falha total dum servic¸o. Enquanto que com a arquitectura de microsservic¸o, podemos construir sistemas que lidam com a falha total dos servic¸os e degradam a funcionalidade respectiva [Wolff, 2017].

A escalabilidade independente ou diferenciada ´e outra vantagem. Na arquitectura de microsservic¸o, cada subsistema pode ser escalado independentemente de outros servic¸os [Newman, 2015,Wolff, 2017,Gonzalez, 2016]. Isto elimina a necessidade de escalar todo o sistema quando apenas parte do sistema apresenta um desempenho limitado. Executar v ´arias inst ˆancias do sistema inteiro, como ´e requerido na arquitectura monol´ıtica, para garantir a escalabilidade e melhor desempenho tem im-pactos infra-estruturais e operacionais. Por exemplo, ao executar v ´arias inst ˆancias do sistema, quando

(27)

apenas alguns subsistemas est ˜ao subcarregados, aloca recursos desnecess ´ario na nuvem e adiciona desafios administrativo ao n´ıvel operacional. Al ´em de que, a alocac¸ ˜ao de recursos desnecess ´ario tem custos financeiros adicionais, uma vez que, tipicamente os provedor de servic¸os de nuvem, cobram pela computac¸ ˜ao, armazenamento ou outras m ´etrica de utilizac¸ ˜ao de recurso.

Analogamente, a f ´acil manutenc¸ ˜ao do sistema ´e outra vantagem dos Microsserc¸os. Numa arquitec-tura monol´ıtica, a substituic¸ ˜ao dum determinado m ´odulo ou actualizac¸ ˜ao dum novo recurso, requer que todo sistema seja reconstru´ıdo e reinstalado. Isto tem impacto na qualidade de fornecimento de servic¸o, dentre v ´arios problemas, a indisponibilidade de servic¸o ´e um desafio. Enquanto que, numa arquitectura de microsservic¸os, ´e poss´ıvel substituir e actualizar subsistemas de forma independente. Isto permite f ´acil optimizac¸ ˜ao do sistema e agiliza as entregas de actualizac¸ ˜oes ou novas funcionalidades.

A autonomia dos Microsservic¸o d ´a lugar a uma gest ˜ao de dados e de sistemas mais personalizado e f ´acil em relac¸ ˜ao a arquitectura monol´ıtica. Enquanto que numa arquitectura monol´ıtica temos os dados centralizados, que ´e problema (alterac¸ ˜ao pode afectar o sistema num todo), na arquitectura de microsservic¸os temos os dados distribu´ıda, que permite melhor gest ˜ao (esquema de base de dados menor e nos dados a administrar em cada subsistema).

Finalmente, esta mesma autonomia, tamb ´em permite permite alinhar melhor a arquitetura `a organizac¸ ˜ao, a minimizar o n ´umero de pessoas que trabalham em qualquer base de c ´odigo para atingir o ponto ideal de tamanho e produtividade da equipa. As equipas s ˜ao especializadas em determinados dom´ınios e usa a componentizac¸ ˜ao para terceiros consumirem os seus servic¸o.

O modelo arquitectural baseado em Microsservic¸o, emergiu de v ´arias tend ˆencias tecnol ´ogicas, padr ˜oes e culturas adoptadas actualmente, tais como virtualizac¸ ˜ao sob demanda, automac¸ ˜ao de infra-estrutura, sistemas em escala, pequenas equipas aut ´onomas, desenho orientado a dom´ınio e entrega cont´ınua [Newman, 2015,Wolff, 2017].

Muitas organizac¸ ˜oes, como Amazon e NetFlix, descobriram que ao adoptar a arquitetura de microsservic¸o, podem fornecer servic¸os com melhor desempenho, adoptar novas tecnologias sem a necessidade de mudar o sistema num todo, usufruir da liberdade para novo alinhamento organizacional de modo a res-ponder mais r ´apido e adequadamente `as mudanc¸as inevit ´aveis [Taibi et al., 2017,Scholl et al., 2016].

Por exemplo a Amazon Web Service, al ´em de adoptar os Microsservic¸os como parte de sua ar-quitectura, promove disponibilizando servic¸os para simplificar a instalac¸ ˜ao de Microsservic¸os em sua plataforma e infraestrutura, como ´e o caso da Amazon Elastic Container Service (Amazon ECS) [ ECS-AWS, 2015], que ´e ´e um servic¸o altamente escal ´avel e de alta desempenho para a orquestrac¸ ˜ao.

Outro exemplo, ´e a Netflix [Netflix, 2015], que al ´em de implementar com sucesso a arquitetura de microsservic¸os em seus servic¸os de larga escala, com base nas suas experi ˆencias e considerando a complexidade operacional, contribuiram com as suas ferramentas de microsservic¸os que visam minimi-zar os esforc¸os de implementac¸ ˜ao de Microsservic¸os.

(28)

Para que a arquitectura de microsservic¸o seja vantajosa para as aplicac¸ ˜oes distribu´ıdas em larga escala, ´e necess ´ario lidar com os v ´arios desafios de construc¸ ˜ao, nomeadamente t ´ecnicos, arquitecturais e operacionais. De forma sucinta os principais desafios s ˜ao [Wolff, 2017,Scholl et al., 2016]:

Granularidade - determinar a granularidade ideal dum subsistema requer a considerac¸ ˜ao de

v ´arios factores, tais como tamanho da equipa, impacto da redund ˆancia ou depend ˆencia de c ´odigo, comunicac¸ ˜ao entre os subsistemas, transacc¸ ˜oes, consist ˆencia e muitos outros.

Complexidade - a comunicac¸ ˜ao entre os subsistemas atrav ´es da rede e a gest ˜ao destas comunicac¸ ˜oes

podem ser muito complexa. Estas comunicac¸ ˜oes podem afetar negativamente o tempo de res-posta e a lat ˆencia dos subsistemas. Os subsistemas podem falhar, ´e necess ´ario garantir que a falha num subsistema n ˜ao resulte na falha de todo o sistema, os subsistemas restantes devem compensar a falha e permitir o funcionamento do sistema, o que pode degradar a qualidade dos servic¸os. Al ´em disto, como Microsservic¸os s ˜ao sistemas distribu´ıdos, ´e introduzido os desafios de sistemas distribu´ıdos.

Lat ˆencia e congestionamento da rede - numa arquitectura de microsservic¸o, um pedido para um

servic¸o pode envolver m ´ultiplos pedidos a outros servic¸os para completar a transac¸ ˜ao web. Al ´em das interac¸ ˜oes entre os microsservic¸os, cada subsistema pode fazer acesso a sua base de dados ou cache, por exemplo. Todas estas interac¸ ˜oes podem ter impacto negativo no desempenho da aplicac¸ ˜ao e como resultado optimizac¸ ˜oes na rede tornam-se importantes e indispens ´avel.

Consist ˆencia de dados - como os dados s ˜ao descentralizados, isto ´e, como cada subsistema

possui o seu pr ´oprio esquema ou base de dados, ´e introduzido os desafios de consist ˆencia e integridade de dados que pode ser dif´ıcil de resolver.

Roteamento e descoberta de servic¸o - em ambiente de Microsservic¸o ´e necess ´ario que exista

a capacidade de determinar os endpoints de suas depend ˆencias e rote ´a-los. Isto pode adicionar complexidade.

Para estes e outros desafios existem soluc¸ ˜oes de frameworks, plataformas e ambiente de execuc¸ ˜ao. H ´a v ´arias alternativa de desenho e implementac¸ ˜ao para uma arquitectura de microsservic¸o e a escolha acerta de uma plataforma que oferece um desempenho ideal requer avaliac¸ ˜ao das v ´arias alternativas.

Uma forma simples e objectiva de avaliar diferentes alternativas sob uma base comum ´e utilizando ferramentas de Benchmark. A subsec¸ ˜ao2.1.2, aborda sobre estas ferramentas.

2.1.2

Benchmarks

Benchmarks s ˜ao ferramenta que permite comparar uma medida (mark, em portugu ˆes significa marca) a um padr ˜ao preestabelecido, a partir de um ponto de observac¸ ˜ao (bench, em portugu ˆes base

(29)

ou refer ˆencia), isto ´e, um ponto fixo ou refer ˆencia para comparac¸ ˜oes [Jain, 1991a,Gregg, 2014]. Por exemplo, supondo que desejamos medir a temperatura duma pessoa para aferir o seu estado de sa ´ude. Para tal precisamos de uma ferramenta, por exemplo um term ´ometro, que produz medidas, por exemplo o grau celsius, quando avalia um objecto, por exemplo o corpo da pessoa. Com isto, temos apenas medidas. Para sabermos o estado de sa ´ude da pessoa precisamos de uma base ou refer ˆencia (bench) para compararmos as medidas ou marcas (mark ) da pessoa e ent ˜ao tirar conclus ˜oes, por exemplo podemos definir a base ou refer ˆencia 37ºC, em que abaixo ´e considerado um estado normal e acima ´e considerado um estado de febre. Assim para a pessoa que mediu e obteve a marca 35,5ºC, podemos afirma que o seu estado de sa ´ude ´e normal, porque est ´a abaixo de 37ºC. Analogamente, se desejarmos aferir o desempenho dum sistema computacional, precisamos medir o desempenho, obter marcas, e comparar estas marcas com uma determinada base ou refer ˆencia para podermos aferir o seu estado em termos de desempenho. E para tal, ´e usado uma ferramenta de Benchmark.

Neste contexto, um benchmark ´e um programa de alto-n´ıvel, representativo de uma classe de aplicac¸ ˜oes, utilizado para medir o desempenho dum dado sistema ou para comparar diferentes sis-temas. Para tal, requer o uso de carga de trabalho de teste para exercitar o sistema com foco no componente a ser avaliada [Obaidat, 2010].

Benchmark ´e sin ´onimo para testes de carga de trabalho [Fortier and Michel, 2013b], Figura2.2, em que programas que geram carga de trabalho exercitam um determinado sistema usando um conjunto adequado de instruc¸ ˜oes [Jain, 1991b]. Basicamente, uma carga de trabalho ´e a combinac¸ ˜ao de dados de entrada com as operac¸ ˜oes do sistema em avaliac¸ ˜ao associadas aos mesmos dados. Os Bench-marks s ˜ao cargas de trabalho aplicadas para an ´alise de desempenho de sistemas computacionais. E o processo de comparar dois sistemas usando Benchmarks, tipicamente Benchmarks conhecidos e padr ˜ao, ´e chamado de Benchmarking [Gregg, 2014].

Figura 2.2: Abordagem de Benchmark para avaliac¸ ˜ao de desempenho

Os Benchmarks geram uma carga de trabalho padronizada e fornece informac¸ ˜oes relevantes para o benchmarking. A coleta de informac¸ ˜oes relevantes envolvem o monitoramento do sistema enquanto est ´a sujeito a uma carga de trabalho espec´ıfica e depende de uma selecc¸ ˜ao cuidadosa da carga de trabalho. A carga de trabalho tamb ´em ´e geralmente chamada por carga de trabalho de teste e denota alguma carga de trabalho usada em estudo de desempenho [Jain, 1991a,Gregg, 2014].

(30)

Uma carga de trabalho pode ser real ou sint ´etico. Uma carga de trabalho real ´e observada num sistema sendo usado para operac¸ ˜oes normais, n ˜ao pode ser repetida e, portanto, geralmente n ˜ao ´e adequado para uso como carga de trabalho de teste. Enquanto que, uma carga de trabalho sint ´etica, cujas caracter´ısticas s ˜ao semelhantes `as da carga de trabalho real, pode ser aplicada repetidas vezes de forma controlada, ´e desenvolvida e usada para estudo por v ´arias raz ˜oes, algumas destas raz ˜oes s ˜ao a representatividade, f ´acil modificac¸ ˜ao sem afectar as operac¸ ˜oes, seguro, port ´avel e pode possui capacidade de medic¸ ˜ao [Jain, 1991c,Gregg, 2014].

Existem v ´arios tipos de carga de trabalho, por exemplo, as cargas de trabalho tradicionalmente usadas para comparar sistemas computacionais, tais como processadores e sistemas timesharing s ˜ao (1) instruc¸ ˜ao de adic¸ ˜ao, (2) mix de instruc¸ ˜oes e (3) Kernel. E posteriormente, para comparar sistemas de base de dados e redes, por exemplo, (4) programas sint ´eticos e (5) aplicac¸ ˜oes de Benchmark.

Por exemplo o TPC-W [Francisco, 2003], um Benchmark reconhecido para avaliac¸ ˜ao de bases de dados de com ´ercio online, ´e um exemplo duma aplicac¸ ˜ao de Benchmark. A carga de trabalho deste Benchmark, ´e realizada em um ambiente controlado de com ´ercio online que simula as actividades de um servidor da Web transacional orientado a neg ´ocios. Sua carga de trabalho sint ´etica exercita uma variedade de componentes do sistema associados a esses ambientes. Na subsecc¸ ˜ao2.2.1, ´e apresentado mais detalhes deste Benchmark.

Um outro exemplo, ´e o framework Yahoo! Cloud Serving Benchmark (YCSB) [Cooper et al., 2010], que ´e uma aplicac¸ ˜ao de Benchmark que permite comparar o desempenho de nova gerac¸ ˜ao de siste-mas de servic¸o de dados em nuvem. Sua carga de trabalho sint ´etica constitui um pacote que combina operac¸ ˜oes de leitura / escrita, distribuic¸ ˜oes de pedido e assim por diante. Com este pacote ´e poss´ıvel examinar uma fatia ampla do espac¸o de desempenho. Pode ser usada para avaliar modelos de con-sist ˆencia, selecionar a base de dados n ˜ao relacional e assim por diante.

Para concluir, o Benchmark ´e uma abordagem muito utilizada para avaliac¸ ˜ao de desempenho por aferic¸ ˜ao2. ´E muito utilizado para comparar o desempenho de m ´aquinas diferentes, redesenhar hardware ou software, decis ˜ao em fase de aquisic¸ ˜ao dum novo sistema, ajudar a optimizar programas e muito mais. Outras t ´ecnicas como modelagem, usada em simulac¸ ˜ao, p.e., podem ser aplicadas em v ´arias ´area incluindo intelig ˆencia artificial e sa ´ude [Calado et al., 2014], mas para medir e comparar a t ´ecnica de aferic¸ ˜ao ´e a que melhor se aplica.

2.2

Trabalhos relacionados

Nesta secc¸ ˜ao, ´e analisado comparativamente os Benchmarks TPC-W [Francisco, 2003], RUBiS [SPEC, 2003] e SPEC Web 2009 [OW2, 2011], considerando o tipo, o objectivo, a carga de trabalho de

(31)

teste, a m ´etrica principal e a aplicac¸ ˜ao em avaliac¸ ˜ao.

2.2.1

Benchmark TPC-W

O TPC-W [Francisco, 2003] ´e um Benchmark de Web Service transacional. A carga de trabalho ´e executada em um ambiente gerido que simula as actividades dum servidor de aplicac¸ ˜ao transacional orientado a neg ´ocios. Seu objectivo ´e medir o desempenho de servidor e o custo por desempenho em lojas online.

A m ´etrica de desempenho relatada pelo TPC-W ´e a Interac¸ ˜oes de Servic¸o por Segundo, da ex-press ˜ao em Ingl ˆes Service Interactions Per Second (SIPS). V ´arias interac¸ ˜oes de Web Service s ˜ao utilizadas para simular a actividade duma loja online e cada interac¸ ˜ao est ´a sujeita a uma restric¸ ˜ao de tempo de resposta.

Figura 2.3: Arquitectura do TPC-W.

Possui uma arquitectura cliente/servidor, Figura2.3. A esquerda da Figura2.3, est ´a o componente Emulador Remoto de Neg ´ocio, da express ˜ao em Ingl ˆes Remote Business Emulator (RBE) e o com-ponente composto pelos sistemas externos de Verificac¸ ˜ao da Ordem de Compra, da express ˜ao em Ingl ˆes Purchase Order Verification (POV), Emulador de Portal de pagamento, da express ˜ao em Ingl ˆes Payment Gateway Emulator (PGE) e Emulador de Controle de Invent ´ario, da express ˜ao em Ingl ˆes In-ventory Control Emulator (ICE). As suas principais responsabilidade s ˜ao:

• ORBE ´e o componente respons ´avel por conduzir a carga de trabalho de teste ao Sistema em Avaliac¸ ˜ao, da express ˜ao em Ingl ˆes System Under Test (SUT) e realizar as medic¸ ˜oes.

• O POV ´e o componente respons ´avel por validar a informac¸ ˜ao de cr ´edito no acto de registo de novo cliente a pedido doSUT.

• OPGE´e o componente respons ´avel por validar o cart ˜ao de cr ´edito no acto de registo de ordem de compra a pedido doSUT.

(32)

• OICE ´e o componente respons ´avel pelo reabastecimento da loja.

A direita de Figura2.3est ´a oSUT. OSUT´e uma loja online para o com ´ercio de livros. Possui uma arquitectura monol´ıtica e ´e integrado a uma base de dados relacional.

A carga de trabalho submetida aoSUTpode incluir (a) navegac¸ ˜ao, (b) pesquisas de produtos, (c) compras e (d) encomendas. Sua principais interac¸ ˜oes s ˜ao:

• Registo de novo cliente

• Alterac¸ ˜ao do m ´etodo de pagamento • Criar pedido de compra

• Remessa de produto

• Processo de gest ˜ao de estoque • Estado do pedido

• Lista dos produtos recentes • Detalhes de produtos

Nas subsecc¸ ˜oes seguintes (subsecc¸ ˜ao2.2.2e subsecc¸ ˜ao2.2.3), ´e descrito os outros Benchmarks comparativamente ao TPC-W.

2.2.2

Benchmark RUBiS

O RUBiS [SPEC, 2003] tamb ´em ´e um Benchmark de Web Service transacional, tal como o TPC-W. A carga de trabalho ´e executada em um ambiente gerido que simula as actividades de um servidor de aplicac¸ ˜ao transacional orientado a neg ´ocios. Mas difere parcialmente nos objectivos. O RUBiS tamb ´em avalia o desempenho do servidor de aplicac¸ ˜ao, mas correlaciona com a escalabilidade, i.e., avaliar padr ˜oes de desenho de aplicac¸ ˜ao e escalabilidade/desempenho de servidores de aplicac¸ ˜ao.

A sua principal m ´etrica ´e o n ´umero de pedidos por sess ˜ao. Tal como o TPC-W, v ´arias interac¸ ˜oes de Web Service s ˜ao utilizadas para simular a actividade dum sistema de leil ˜ao online. E cada interac¸ ˜ao ´e parte duma sess ˜ao de experimento.

Tal como o TPC-W, o RUBiS possui uma arquitectura cliente/servidor, Figura2.4. Os seus principais componentes s ˜ao:

Clientes: realiza medic¸ ˜oes enquanto submete uma carga de trabalho de teste aoSUT.

Servidor Web: lida com os pedidos Protocolo de Transfer ˆencia de Hipertexto, da express ˜ao em

Ingl ˆes Hypertext Transfer Protocol (HTTP) e ´e capaz de balancear a carga entre m ´ultiplos servi-dores de aplicac¸ ˜ao.

(33)

Figura 2.4: Arquitectura do RUBiS.

Servidor de aplicac¸ ˜ao: ´e respons ´avel por executar o servidor RUBis.

Servidor de base de dados: mantem a base de dados do RUBis.

A carga de trabalho submetida ao SUTpode incluir (a) navegac¸ ˜ao, (b) vendas e (c) licitac¸ ˜ao. Em termos de interac¸ ˜oes, al ´em da l ´ogica de neg ´ocio principal, o RUBis implementa servic¸os complemen-tares, como mensagens instant ˆaneas ou grupos de not´ıcias. As interac¸ ˜oes do RUBis s ˜ao realizadas dentro de sess ˜oes, como referido, e distingue entre tr ˆes tipos de sess ˜oes do utilizador:

visitante: os utilizadores n ˜ao precisam se registar, mas t ˆem permiss ˜ao para navegar.

comprador: precisa registar-se. Al ´em da funcionalidade fornecida durante as sess ˜oes do

visi-tante, durante uma sess ˜ao do comprador, os utilizadores podem fazer lances para itens e consul-tar um resumo de seus lances, classificac¸ ˜oes e coment ´arios atuais deixados por outros usu ´arios.

vendedor: precisa registar-se. Esta sess ˜ao exige um emolumento antes que um utilizador possa

colocar um item `a venda. Um leil ˜ao comec¸a imediatamente e dura normalmente n ˜ao mais que uma semana. O vendedor pode especificar um prec¸o de reserva (m´ınimo) para o item.

A arquitectura do RUBis ´e similar a arquitectura do TPC-W, ambas s ˜ao Monol´ıticas, uma ´unica base de dados, um servidor de aplicac¸ ˜ao que pode ser replicado por quest ˜oes de optimizac¸ ˜oes.

A seguir na subsecc¸ ˜ao2.2.3, ´e descrito o benchmark SPEC Web 2009 comparativamente aos ben-chmarks TPC-W e RUBis.

2.2.3

Benchmark SPEC Web 2009

O SPEC Web 2009 [OW2, 2011], tal como o TPC-W e o RUBis, ´e um Benchmark de Web Service transacional. A carga de trabalho ´e executada em um ambiente gerido que simula as atividades de um servidor de aplicac¸ ˜ao transacional orientado a neg ´ocios. Tamb ´em avalia o desempenho de servidor de

(34)

aplicac¸ ˜ao, como o TPC-W e o RUBis, mas seu objectivo principal ´e avaliar o desempenho de servidor web ligados a E/S, de modo que seus resultados possam mostrar como a consolidac¸ ˜ao afeta a lat ˆencia e a efici ˆencia de energia de aplicac¸ ˜oes ligadas a E/S.

A principal m ´etrica de desempenho, ´e dada por X@Y . Onde X, como apresentado na equac¸ ˜ao2.1, ´e a m ´edia geom ´etrica das sess ˜oes de utilizadores simult ˆaneas (sus) para tr ˆes tipos de cargas de tra-balho (servic¸os banc ´arios, loja online e suporte a download) e Y , como apresentado na equac¸ ˜ao2.2, representa a m ´edia geom ´etrica dos Watts correspondentes registrados.

X = SP ECweb2009 Banking × SP ECweb2009 Ecommerce × SP ECweb2009 Support

3 sus (2.1)

Y = W atts Banking × W atts Ecommerce × W atts Support

3 Watts (2.2)

A m ´etrica de desempenho principal ´e derivada das tr ˆes subm ´etricas, como uma m ´edia geom ´etrica. Os Watts correspondentes a estas subm ´etricas, tamb ´em, s ˜ao derivados como uma m ´edia geom ´etrica dos Watts usados durante a execuc¸ ˜ao das cargas de trabalho para servic¸os banc ´arios, com ´ercio electr ´onico e suporte a download. Os Watts representa o consumo de energia durante o experimento.

As contagens das subm ´etricas da carga de trabalho est ˜ao em unidades de sess ˜oes simult ˆaneas. Eles representam o n ´umero de sess ˜oes simult ˆaneas do utilizador que oSUTpode oferecer ao atender aos requisitos de Qualidade de Servic¸o, da express ˜ao em Ingl ˆes Quality Of Service (QoS) do Bench-mark. Enquanto a m ´etrica principal oferece contagens de desempenho para o sistema que est ´a a ser testado, as contagens das subm ´etricas oferecem uma vis ˜ao de carga de trabalho por carga de trabalho das caracter´ısticas de desempenho dum sistema nos n´ıveis de pico.

Tal como o TPC-W e o RUBiS, o SPEC Web 2009 possui uma arquitectura cliente/servidor, Fi-gura2.5. Os seus principais componentes s ˜ao:

Clientes: conduz uma carga de trabalho de teste aoSUT. Existe um cliente principal, que

inici-aliza e controla o comportamento dos outros clientes, executa rotinas de iniciinici-alizac¸ ˜ao no servidor Web e noSimulador e, coleta e armazena os resultados dos testes de Benchmark. Por quest ˜oes

arquitecturais e garantia de qualidade, o cliente principal pode ser alocado num servidor f´ısico separado.

Simulador: emula um servidor de aplicac¸ ˜ao de backend com o qual o servidor Web deve se

comunicar para recuperar informac¸ ˜oes espec´ıficas necess ´arias para concluir uma respostaHTTP

(35)

Figura 2.5: Arquitectura do SPEC Web 2009.

Servidor Web: lida com os pedidos emitidos pelos clientes.

Subsistema de armazenamento: mant ´em os dados processados.

Diferente do TPC-W e do RUBis, o SPEC Web 2009 tem diferentes sistemas em avaliac¸ ˜ao, nomea-damente, servic¸os banc ´arios, com ´ercio electr ´onico e suporte de download. Inclui carga de trabalho de teste de energia (baseada na carga de trabalho da loja online) e uma m ´etrica desempenho/energia.

2.3

Resumo

Na Tabela2.2, ´e resumida as principais caracter´ısticas dos Benchmarks comparados. Nesta secc¸ ˜ao discutiremos estas caracter´ısticas.

Os Benchmarks apresentados seguem o padr ˜ao arquitectural de tr ˆes camadas, resultante dum n ´umero significativo de aplicac¸ ˜oes Monol´ıticas em nuvem ou locais antes do surgimento e populari-dade dos Microsservic¸os. Parte deles, j ´a est ˜ao descontinuados. Hoje v ´arios deles, s ˜ao adaptados para estudar caracter´ısticas de aplicac¸ ˜ao baseadas em Microsservic¸os em v ´arios dom´ınios de aplicac¸ ˜ao, p.e., [Gan et al., 2019].

Estas ferramentas diferem-se em termos de objectivos espec´ıficos, porque em termos de objectivo geral (avaliac¸ ˜ao de desempenho de servidor de aplicac¸ ˜ao), s ˜ao similares. A m ´etrica comum de de-sempenho do servidor e presente nos Benchmarks apresentados ´e o d ´ebito sob restric¸ ˜ao de tempo de resposta. Esta restric¸ ˜ao pode estar definida explicitamente ou implicitamente. A computac¸ ˜ao desta m ´etrica variou em func¸ ˜ao dos objectivos e da carga de trabalho de cada Benchmark.

(36)

Tabela 2.2: Caracterizac¸ ˜ao dos trabalhos relacionados.

Trabalho Objectivo Carga de

traba-lho

M ´etrica principal Aplicac¸ ˜ao

TPC-W Medir o desempenho do

servidor e custo/desem-penho em lojas online.

Navegac¸ ˜ao, pesquisas,

compras e

encomendas.

N ´umero de SIPS medi-dos usando uma mis-tura de carga de trabalho sint ´etica.

Loja online.

RUBis Avaliar padr ˜oes de de-senho de aplicac¸ ˜ao e escalabilidade/desem-penho de servidores de aplicac¸ ˜ao. Navegac¸ ˜ao, vendas e licitac¸ ˜ao.

N ´umero de pedidos por sess ˜ao.

Sistema de

leil ˜ao online.

SPEC Web 2009

Avaliar o desempenho de servidor web ligados a E/S, de modo que seus resultados possam mos-trar como a consolidac¸ ˜ao afeta a lat ˆencia e a efici ˆencia de energia de aplicac¸ ˜oes ligadas a E/S.

Navegac¸ ˜ao e operac¸ ˜oes de persist ˆencia.

Dada por X@Y. Onde X ´e a m ´edia geom ´etrica das sess ˜oes de utiliza-dores simult ˆaneas (sus) para os tr ˆes tipos de car-gas de trabalho e Y repre-senta a m ´edia geom ´etrica dos Watts corresponden-tes registrados. servic¸os banc ´arios, com ´ercio electr ´onico e suporte de download.

S ˜ao todos Benchmark de aplicac¸ ˜ao de Web Service transacional. E de modo geral, estes Bench-marks, tentam compreender como o desempenho - medido em termos de tempo de resposta e d ´ebito - varia `a medida que mais utilizadores acessam um Web Site ou p ´agina Web.

Embora a avaliac¸ ˜ao de desempenho ´e realizada de forma associada a outros factores, tais como dinheiro ou custo de energia. Estes Benchmarks, tentam responder as quest ˜oes t´ıpicas que surgem ao analisar a escalabilidade/desempenho ou desempenho de Web Sites transacionais, p.e., se o Site ser ´a capaz de fornecer um desempenho aceit ´avel mesmo com o aumento da carga, qual ´e o n ´umero m ´aximo de transac¸ ˜oes que podem ser processadas por segundo, o Site pode ser atualizado de forma simples (por exemplo, adicionando mais servidores ou substituindo servidores existentes por outros mais po-derosos) para suportar volumes de tr ´afego mais altos ou ´e necess ´ario fazer alterac¸ ˜oes arquitecturais, entre outras quest ˜oes.

Todos estes Benchmarks foram desenhados para sistemas Monol´ıticos, i.e., tipicamente o foco ´e um servidor de aplicac¸ ˜ao integrado a um servidor de base de dados. Nenhum dos Benchmarks apre-sentados ´e capaz de medir o desempenho de diferentes implementac¸ ˜oes de Microsservic¸os sob uma base comum de forma simples. Na secc¸ ˜ao3, ´e apresentado a arquitectura de soluc¸ ˜ao.

(37)

3

Arquitectura

Conte ´

udo

3.1 Requisitos . . . 23

3.2 Arquitectura . . . 24

(38)
(39)

Neste cap´ıtulo, ´e definido os requisitos para construc¸ ˜ao da nossa ferramenta de Benchmark na secc¸ ˜ao3.1. Na secc¸ ˜ao3.2, ´e apresentada a arquitectura da nossa ferramenta de Benchmark. E para finalizar, na secc¸ ˜ao3.3, ´e descrito o fluxo de trabalho t´ıpico.

3.1

Requisitos

A nossa principal preocupac¸ ˜ao durante o desenho da nossa ferramenta de Benchmark foi garantir duas principais qualidades, nomeadamente a (1) correcc¸ ˜ao e o (2) desempenho da nossa ferramenta de Benchmark durante as medic¸ ˜oes e Benckmarking.

Estas operac¸ ˜oes s ˜ao realizadas durante tr ˆes fases: (1) Pr ´e-teste, que consiste na configurac¸ ˜ao do sistema para garantir as condic¸ ˜oes iniciais dos experimentos; (2) Teste, que consiste em monitorar os experimentos e colectar dados; E finalmente, a fase de (3) P ´os-teste, que consiste na reduc¸ ˜ao dos dados e comparac¸ ˜ao das marcas.

Importa referir que, a escalabilidade das bases de dados, emulac¸ ˜ao de terminal e clientes bem como o perfil da carga de trabalho de teste e a mistura de interac¸ ˜oes ´e definida em conformidade com a especificac¸ ˜ao TPC-W, deste modo quest ˜oes relacionada a aproximac¸ ˜ao a demanda real s ˜ao acauteladas.

Destas preocupac¸ ˜oes referidas, definimos os seguintes requisitos:

• A ferramenta deve funcionar de modo a garantir que as diferentes fases n ˜ao sobrecarreguem-se umas `as outras, isto ´e, que n ˜ao haja interrupc¸ ˜oes ou sobreposic¸ ˜oes de tarefas (populac¸ ˜ao das bases de dados, medic¸ ˜oes ou Benchmarking).

• A ferramenta deve minimizar o impacto de sobrecarga que pode ser introduzida durante as medic¸ ˜oes bem como validar as medic¸ ˜oes.

• OSUTdeve ser simples, mas deve possuir as caracter´ısticas relevantes para avaliac¸ ˜ao que pro-duza resultado com boa precis ˜ao;

As diferentes fases n ˜ao sobrecarregam-se devido a separac¸ ˜ao clara dos componentes e da organizac¸ ˜ao dos diferentes subsistemas dentro de cada componente, bem como divido a estrat ´egia de separac¸ ˜ao das diferentes fases do experimento. A divis ˜ao de pequenos trabalho nos diferentes subsistemas e a capacidade deste subsistemas colaborarem, permite minimizar o impacto de sobrecarga que pode ser introduzida durante as medic¸ ˜oes. A divis ˜ao do TPC-W em Microsservic¸o foi baseada em abordagem orientada a dom´ınio combinado com a caracterizac¸ ˜ao da carga de trabalho de teste, que permitiu sim-plicidade, mas garantindo as caracter´ısticas relevantes para a avaliac¸ ˜ao. Na secc¸ ˜ao3.2, ´e apresentado estes aspectos.

(40)

3.2

Arquitectura

Figura 3.1: Arquitectura da nossa ferramenta de Benchmark

`

A esquerda da Figura 3.1, est ´a o Gerador de carga. ´E a parte da ferramenta respons ´avel pela emulac¸ ˜ao de terminal, dos utilizadores e dos pedidos a serem enviados aoAvaliador para exercitar o

TPC-W microsservic¸o, que ´e oSUT.

Esta parte da ferramenta implementa a especificac¸ ˜ao TPC-W para conduzir a carga de trabalho de teste em intervalos apropriados utilizado para exercitar oSUT, mas com optimizac¸ ˜oes para experimen-tos em cen ´arios de georeplicac¸ ˜ao.

Esta parte da ferramenta, ´e composta por dois subsistemas principais, nomeadamente o (1) Popu-lator subsistema que preenche as bases de dados com uma carga de trabalho de teste TPC-W e o (2) RBE(Remote Business Emulator) subsistema que conduz a carga de trabalho de teste TPC-W. Suas principais responsabilidades:

Populator: ´e respons ´avel por garantir as condic¸ ˜oes iniciais para o experimento.

RBE: ´e respons ´avel pela emulac¸ ˜ao de terminal, utilizadores e carga de trabalho de teste.

No centro da Figura 3.1, est ´a o Avaliador, o elemento principal da nossa ferramenta que

per-mite avaliar e comparar diferentes alternativas de desenho e ou diferentes cen ´arios de instalac¸ ˜ao (implantac¸ ˜oes ou deployments em ingl ˆes).

´

E a parte da ferramenta respons ´avel pela medic¸ ˜oes, registo de marcas e por reportar os resultados.

OAvaliador utiliza a carga de trabalho de teste gerada pelo Gerador de Carga para exercitar oSUTe

colectar dados enquanto monitora o experimento.

OAvaliador possui dois subsistemas principais e um terceiro componente de armazenamento de

(41)

Monitor: ´e respons ´avel pelas medic¸ ˜oes e monitoramento do experimento.

Reporter: ´e respons ´avel pela reduc¸ ˜ao dos dados, comparac¸ ˜ao das marcas e por reportar os

resultados.

Repository: ´e respons ´avel por armazenar persistentemente as m ´etricas recebidas, tempo de

inicializac¸ ˜ao e interm ´edios do experimento bem como toda informac¸ ˜ao relevante relacionada ao estado doAvaliador.

OAvaliador possui sua pr ´opria Interface de Programa de Aplicac¸ ˜ao, da express ˜ao em Ingl ˆes

Ap-plication Program Interface (API), utilizada para controlar as interac¸ ˜oes. A Listagem 3.1, ilustra um exemplo daAPIdo Avaliador para mistura de interac¸ ˜oes com georeplicac¸ ˜ao semi-controlada peloRBE.

Listagem 3.1: Exemplo daAPIdo Avaliador para mistura de interac¸ ˜oes com georeplicac¸ ˜ao semi-controlada pelo RBE. 1 { 2 "mode":{ 3 "region":"us-east-1", 4 "zone":"ZOJJZC49E0EPZ" 5 }, 6 "interaction":"ChangePaymentMethod", 7 "input":{ 8 "customerId":2, 9 "paymentMethod":"CC", 10 "creditInfo":"ASN23Jaksdssa" 11 } 12 }

Para configurac¸ ˜ao Defined no ficheiro de configurac¸ ˜ao do Gerador de carga para o modo de

georeplicac¸ ˜ao, o Gerador de carga controla o encaminhamento de pedido por zona e regi ˜ao, mas

a escolha do endpoint numa dada zona ´e definido peloAvaliador, como ser ´a explicado na Cap´ıtulo4. ´

E responsabilidade doAvaliador ignorar ou utilizar determinados par ˆametros no modo de interac¸ ˜ao

preenchida no pedido. E esta decis ˜ao ´e tomada em func¸ ˜ao das configurac¸ ˜oes iniciais do experimento, realizadas atrav ´es dos ficheiros de configurac¸ ˜ao do Gerador de carga e do pr ´oprio Avaliador. A

Listagem3.2, ´e um exemplo daAPIdo pedido especial de inicializac¸ ˜ao do experimento enviado pelo

(42)

Listagem 3.2: Exemplo daAPIdo Avaliador para o pedido especial de inicializac¸ ˜ao de experimento. 1 { 2 "command": "init", 3 "Geo": "Defined", 4 "scale":{ 5 "active": 10000, 6 "item": 2000 7 }, 8 "wirt90":{ 9 "NewCustomer": 1, 10 "ChangePaymentMethod": 3, 11 "CreateOrder": 4, 12 "OrderStatus": 4, 13 "NewProductsList": 1, 14 "ProductDetail": 1, 15 "ChangeItem": 1, 16 } 17 } `

A direita da Figura 3.1, est ´a o TPC-W microsservic¸o, o SUT, tamb ´em pode ser denominado por Sistema em Avaliac¸ ˜ao. ´E a vers ˜ao microsservic¸o do TPC-W. A subsecc¸ ˜ao3.2.1, apresenta a divis ˜ao arquitectural doSUT.

3.2.1

TPC-W microsservic¸o

O TPC-W Microsservic¸o ´e um sistema representativo duma loja online para avaliar o desempenho de plataformas adjacentes. ´E uma vers ˜ao em Microsservic¸o do TPC-W Monol´ıtico de nossa autoria.

Este sistema ´e uma simplificac¸ ˜ao, mas representativo o suficiente para avaliar o desempenho de diferentes plataformas, duma loja online em ambientes de nuvem com ou sem georeplicac¸ ˜ao. O sistema modela interac¸ ˜ao de (1) novo cliente, (2) mudanc¸a do m ´etodo de pagamento, (3) ordem de compra, (4) alterac¸ ˜ao de item, (5) detalhes de cada item para uma lista de n elementos, (6) estado da ordem de compra, (7) produtos mais recentes, (8) gest ˜ao de estoque e (9) entregas. As duas ´ultimas, i.e. (8) e (9), s ˜ao tarefas administrativas, mas existem como parte do modelo representado pela carga de trabalho (s ˜ao executados como processos em background ).

A divis ˜ao do SUTMonol´ıtico emSUTMicrosservic¸o, Figura3.2, foi realizada baseada na aborda-gem de Desenho Orientado a Dom´ınio, da express ˜ao em Ingl ˆes Domain-Driven Design (DDD) [Evans, 2003,Vernon, 2013], que consiste em identificar entidades, servic¸os, agregac¸ ˜oes e m ´odulos de forma sistem ´atica. A divis ˜ao obtida ´e a granularidade ideal para os

(43)

OSUT ´e composto por tr ˆes subsistemas principais, nomeadamente Customer, Product e

Shop-ping. Estes subsistemas s ˜ao considerados base comum para as diferentes alternativas de desenho e

para os diferentes cen ´arios de instalac¸ ˜ao. Todos os subsistemas s ˜ao associados a uma base de dados com seu respectivo modelo de dados. Estes subsistemas s ˜ao as partes da plataforma alvos de Ben-chmark e a divis ˜ao das tabelas n ˜ao podem possuir granularidade mais fina do que as propostas nesta secc¸ ˜ao, mas de resto todos os componentes podem ser substitu´ıdos e, como tal, avaliados.

O m ´odulo dePOV, m ´odulo dePGEe m ´odulo deICEs ˜ao sistemas externos aos TPC-W microsservic¸o, como ilustrado na Figura3.2.

O componenteAvaliador na Figura3.2, serve para ilustrar as interac¸ ˜oes entre o TPC-W microsservic¸o

e oAvaliador, i.e., ilustrar, claramente, os componentes que s ˜ao exercitados directamente pelo

Ava-liador (os componentes que s ˜ao alvos de Benchmark ). Como ilustrado na Figura3.1, estes

compo-nentes comunicam internamente entre si e com sistemas externos ao TPC-W microsservic¸o. Embora n ˜ao esteja ilustrado, estes subsistemas (Customer, Shopping e Product) comunicam-se com suas

respectivas base de dados. Cada subsistema tem o seu pr ´oprio modelo de dados e um conjunto de interac¸ ˜oes internas e externas.

Figura 3.2:SUTbaseado em Microsservic¸o.

O subsistema Customer, ´e respons ´avel por gerir os clientes. Este subsistema, armazena os

da-dos de contacto, pagamento e enderec¸o de cobranc¸a do cliente, como ilustrado na Figura 3.3, que representa o seu modelo de dados. Este subsistema possui v ´arias funcionalidade, das quais as

(44)

prin-cipais s ˜ao listadas na Tabela3.1 e o formato de mensagem usada para comunicac¸ ˜ao ´e ilustrada na Listagem3.3.

Tabela 3.1: Principais funcionalidades do subsistema Customer.

Funcionalidade Sa´ıda

M ´ODULO CUSTOMER

newCustomer Permite realizar o registo dum novo cliente

no sistema.

Novo Nº da Ordem de Compra e Novo Identificador de Cliente.

changePaymentMethod Permite realizar alterac¸ ˜ao do

m ´etodo de pagamento dum cliente.

Novo m ´etodo de pagamento.

updateCustomerAddress Permite realizar actualizac¸ ˜ao

do enderec¸o de cobranc¸a dum cliente.

cliente actualizado.

findCustomerById Permite recuperar o cliente dado um

identificador.

cliente encontrado.

Figura 3.3: Modelo de Dados do Customer.

O subsistema Product, ´e respons ´avel por gerir os itens e os respectivos estoque. Este

subsis-tema, armazena os dados dos livros, autor e o estoque de produto, como ilustrado na Figura3.4, que representa o seu modelo de dados. Este subsistema possui v ´arias funcionalidade, das quais as prin-cipais s ˜ao listadas na Tabela3.2 e o formato de mensagem usada para comunicac¸ ˜ao ´e ilustrada na Listagem3.4.

O subsistemaShopping, ´e respons ´avel por gerir os pedidos de compra e de remessa. Este

subsis-tema, armazena os dados dos pedidos de compra, carinho de compras e de remessa, como ilustrado na Figura3.5, que representa o seu modelo de dados. Este subsistema possui v ´arias funcionalidade, das quais as principais s ˜ao listadas na Tabela3.3e o formato de mensagem usada para comunicac¸ ˜ao

´e ilustrada na Listagem3.5.

Os sistemas externos n ˜ao s ˜ao alvos de Benchmark directo, permitem representar de forma mais realista poss´ıvel a comunicac¸ ˜ao entre os subsistemas do TPC-W microsservic¸o e os subsistemas

(45)

ex-Tabela 3.2: Principais funcionalidades do subsistema Product.

Funcionalidade Sa´ıda

M ´ODULO PRODUCT

create Permite realizar o registO do novo produto. Novo produto.

updateStock Permite realizar a actualizac¸ ˜ao do atributo

S LAST MODIFIED da tabela STOCK com a data e hora actual dado um produto.

Produto com estoque actualizado.

newProducts Permite retornar uma lista dos itens

modifi-cados recentemente.

Lista de itens modificados.

getCostOfProducts Permite retornar o custo de cada

pro-duto num lista de propro-dutos.

Lista de itens.

productDetail Permite retornar informac¸ ˜ao detalhada de

produto duma lista de produtos pedidos.

Lista de itens.

Figura 3.4: Modelo de Dados do Product.

Tabela 3.3: Principais funcionalidades do subsistema Shopping

Funcionalidade Sa´ıda

M ´ODULO SHOPPING

create Permite criar um pedido no base de dados e,

em seguida, encaminhar o processo de atendimento para envi ´a-lo.

Novo pedido.

status Permite retornar os ´ultimos n pedidos feitos pelo

cliente.

Lista de pedido.

ternos de fornecimento de servic¸o. Os sistemas externos s ˜ao:

POV: sistema externo que autoriza cr ´edito para um novo cliente.

PGE: sistema externo que autoriza pagamentos por cart ˜ao de cr ´edito.

(46)

Figura 3.5: Modelo de Dados do Shopping.

Listagem 3.3: Exemplo de formato de mensagens ProtoBuf para o m ´odulo Customer

1 m e s s a g e B u y e r { 2 i n t 3 2 id = 1; 3 s t r i n g b u s i n e s s _ n a m e = 2; 4 s t r i n g b u s i n e s s _ i n f o = 3; 5 s t r i n g p a s s w o r d = 4; 6 s t r i n g f i r s t _ n a m e = 5; 7 s t r i n g l a s t _ n a m e = 6; 8 s t r i n g p h o n e = 7; 9 s t r i n g e m a i l = 8; 10 f l o a t d i s c o u n t = 9; 11 e n u m M e t h o d T y p e { 12 PO = 0; 13 CC = 1; 14 } 15 m e s s a g e P a y m e n t { 16 s t r i n g c r e d i t _ i n f o = 1; 17 i n t 3 2 p u r c h a s e _ o r d e r _ n u m b e r = 2; 18 M e t h o d T y p e m e t h o d = 3; 19 } 20 m e s s a g e A d d r e s s { 21 i n t 3 2 id = 1; 22 s t r i n g s t r e e t 1 = 2; 23 s t r i n g s t r e e t 2 = 3; 24 s t r i n g c i t y = 4; 25 s t r i n g s t a t e = 5;

(47)

26 s t r i n g zip = 6; 27 } 28 m e s s a g e C o u n t r y { 29 i n t 3 2 id = 1; 30 s t r i n g n a m e = 2; 31 } 32 P a y m e n t p a y m e n t = 10; 33 A d d r e s s a d d r e s s = 11; 34 C o u n t r y c o u n t r y = 12; 35 } 36 m e s s a g e B u y e r L i s t { 37 r e p e a t e d B u y e r b u y e r s = 1; 38 }

Listagem 3.4: Exemplo de formato de mensagens ProtoBuf para o m ´odulo Product

1 m e s s a g e R e c e n t P r o d u c t { 2 i n t 3 2 d u r a t i o n = 1; 3 s t r i n g s u b j e c t = 2; 4 i n t 3 2 l i m i t = 3; 5 } 6 m e s s a g e M a x P r o d u c t D e t a i l I D s { 7 i n t 3 2 max = 1; 8 } 9 m e s s a g e P r o d u c t { 10 m e s s a g e I t e m { 11 i n t 3 2 id = 1; 12 s t r i n g t i t l e = 2; 13 s t r i n g p u b _ d a t e = 3; 14 s t r i n g p u b l i s h e r = 4; 15 s t r i n g s u b j e c t = 5; 16 s t r i n g d e s c r i p t i o n = 6; 17 f l o a t srp = 7; 18 f l o a t c o s t = 8; 19 s t r i n g a v a i l a b l e = 9; 20 s t r i n g i s b n = 10; 21 i n t 3 2 p a g e = 11;

(48)

22 s t r i n g b a c k i n g = 12; 23 s t r i n g d i m e n s i o n s = 13; 24 } 25 m e s s a g e A u t h o r { 26 i n t 3 2 id = 1; 27 s t r i n g f i r s t _ n a m e = 2; 28 s t r i n g l a s t _ n a m e = 3; 29 } 30 m e s s a g e S t o c k { 31 i n t 3 2 id = 1; 32 i n t 3 2 q u a n t i t y = 2; 33 s t r i n g l a s t _ m o d i f i e d = 3; 34 } 35 I t e m i t e m = 1; 36 A u t h o r a u t h o r = 2; 37 S t o c k s t o c k = 3; 38 } 39 m e s s a g e P r o d u c t L i s t { 40 r e p e a t e d P r o d u c t p r o d u c t s = 1; 41 }

Listagem 3.5: Exemplo de formato de mensagens ProtoBuf para o m ´odulo Shopping

1 i m p o r t " c u s t o m e r . p r o t o "; 2 i m p o r t " p r o d u c t . p r o t o "; 3 e n u m S t a t u s T y p e { 4 P E N D I N G = 0; 5 B A C K _ O R D E R E D = 1; 6 } 7 e n u m S h i p T y p e { 8 AIR = 0; 9 UPS = 1; 10 F E D E X = 2; 11 S H I P = 3; 12 C O U R I E R = 4; 13 M A I L = 5; 14 }

(49)

15 m e s s a g e S h i p { 16 i n t 3 2 id = 1; 17 s t r i n g d a t e = 2; 18 S h i p T y p e t y p e = 3; 19 i n t 3 2 a d d r _ i d = 4; 20 f l o a t c o s t = 5; 21 i n t 3 2 o r d e r _ i d = 6; 22 } 23 m e s s a g e O r d e r { 24 i n t 3 2 id = 1; 25 i n t 3 2 c u s t o m e r _ i d = 2; 26 s t r i n g d a t e = 3; 27 f l o a t s u b _ t o t a l = 4; 28 f l o a t tax = 5; 29 f l o a t t o t a l = 6; 30 S h i p s h i p = 7; 31 S t a t u s T y p e s t a t u s = 8; 32 s t r i n g a u t h _ i d = 9; 33 f l o a t d i s c o u n t = 10; 34 } 35 m e s s a g e O r d e r L i n e { 36 i n t 3 2 id = 1; 37 i n t 3 2 o r d e r _ i d = 2; 38 i n t 3 2 i t e m _ i d = 3; 39 i n t 3 2 q u a n t i t y = 4; 40 S t a t u s T y p e s t a t u s = 5; 41 f l o a t c o s t = 6; 42 } 43 e n u m C a r d T y p e { 44 V I S A = 0; 45 M A S T E R C A R D = 1; 46 D I S C O V E R = 2; 47 A M E R I C A N _ E X P R E S S = 3; 48 D I N E R S = 4; 49 } 50 m e s s a g e C a r d { 51 i n t 3 2 id = 1; 52 s t r i n g n a m e = 2;

(50)

53 s t r i n g n u m b e r = 3; 54 s t r i n g e x p i r y = 4; 55 s t r i n g c o d e = 5; 56 i n t 3 2 o r d e r _ i d = 6; 57 C a r d T y p e t y p e = 7; 58 } 59 m e s s a g e C r e a t e O r d e r { 60 B u y e r b u y e r = 1; 61 P r o d u c t L i s t i t e m s = 2; 62 S h i p s h i p = 3; 63 C a r d c a r d = 4; 64 } 65 m e s s a g e O r d e r S t a t u s { 66 B u y e r b u y e r = 1; 67 i n t 3 2 max = 2; 68 r e p e a t e d O r d e r o r d e r s = 3; 69 } 70 m e s s a g e C a r d L i s t { 71 r e p e a t e d C a r d c a r d s = 1; 72 }

3.3

Fluxo de Trabalho T´ıpico

O Fluxo de trabalho segue v ´arias etapas, algumas etapas ocorrem antes das medic¸ ˜oes, outras durante e outras depois das medic¸ ˜oes. Em resumo o fluxo de trabalho t´ıpico tem o seguinte ciclo de vida:

1. Escalabilidade e populac¸ ˜ao das bases de dados, esta etapa ocorre antes das medic¸ ˜oes. ´E deta-lhada na subsecc¸ ˜ao3.3.1

2. Ativac¸ ˜ao das medic¸ ˜oes, esta etapa inicializa as medic¸ ˜oes. ´E detalhada na subsecc¸ ˜ao3.3.2

3. Execuc¸ ˜ao das medic¸ ˜oes, esta etapa realiza as medic¸ ˜oes e o registo de marcas. ´E detalhada na subsecc¸ ˜ao3.3.3

4. Encerramento das medic¸ ˜oes, esta etapa encerra as medic¸ ˜oes. ´E detalhada na subsecc¸ ˜ao3.3.4

(51)

3.3.1

Escalabilidade e populac¸ ˜ao das bases de dados

Para comec¸ar, ´e necess ´ario garantir as condic¸ ˜oes iniciais para o experimento. Para tal, Figura3.6,

o Gerador de carga executa o Populator. O Populator, carrega as configurac¸ ˜oes e inicializa os

par ˆametros de escalabilidade das bases de dados. Em seguida, estabelece ligac¸ ˜ao com oAvaliador

para iniciar as transacc¸ ˜oes relacionadas com a populac¸ ˜ao inicial. Ao inicializar o Avaliador, este

re-cria as tabelas em cada base de dados doSUT. Por esta raz ˜ao, oPopulator n ˜ao inclui as operac¸ ˜oes

de eliminac¸ ˜ao e de criac¸ ˜ao de tabelas. Para cada transacc¸ ˜ao efectuada peloPopulator, o Avaliador

realiza uma interac¸ ˜oes para cada Endpoint existente na matriz de georeplicac¸ ˜ao associada a respec-tiva interac¸ ˜ao Modelo de Troca de Produtos, Servic¸os ou Informac¸ ˜oes entre Empresas, da express ˜ao em Ingl ˆes Business-To-Business (B2B). A populac¸ ˜ao das bases de dados ´e realizada para todos os m ´odulos doSUTde forma sequencial. Finalmente, ap ´os concluir o processo de populac¸ ˜ao, oPopulator

solicita estat´ıstica do estado das bases de dados para verificar se todas as operac¸ ˜oes foram realizadas com sucesso. A principal informac¸ ˜ao estat´ıstica ´e a cardinalidade das bases de dados, que ´e o principal argumento do verificador doPopulator.

Figura 3.6: Escalabilidade e populac¸ ˜ao das bases de dados.

3.3.2

Ativac¸ ˜ao das medic¸ ˜

oes

Antes das medic¸ ˜oes, ´e necess ´ario verificar as condic¸ ˜oes iniciais para o experimento e ativar as medic¸ ˜oes. Para tal, Figura 3.7, o Gerador de carga executa o RBE que, inicialmente carrega as configurac¸ ˜oes (inclui o tipo de teste, que pode ser normal ou de georeplicac¸ ˜ao e, caso seja georepli-cado; o tipo de interac¸ ˜ao, que pode ser aleat ´oria ou definida), Listagem4.2, envia um pedido especial de in´ıcio de experimento aoAvaliador. O Avaliador por interm ´edio do Monitor, carrega as configurac¸ ˜oes

(52)

(matriz de restric¸ ˜ao de tempo de resposta e outras configurac¸ ˜oes), verifica o estado inicial das bases de dados e, se necess ´ario, verifica a configurac¸ ˜ao da matriz de georeplicac¸ ˜ao se satisfazem o tipo de teste solicitado. Se a verificac¸ ˜ao for satisfeita, oMonitor activa as medic¸ ˜oes e retornar o estado aoRBE, o estado inclui a lista de zonas e regi ˜oes dispon´ıveis, cardinalidade das bases de dados e se pode ou n ˜ao dar in´ıcio ao experimento.

Figura 3.7: Ativac¸ ˜ao das medic¸ ˜oes.

3.3.3

Execuc¸ ˜ao das medic¸ ˜

oes

Como ilustrado na Figura 3.8, com as condic¸ ˜oes iniciais satisfeitas e tido a aprovac¸ ˜ao para in´ıcio do experimento, oRBEinicia os clientes e a seguir executa as interac¸ ˜oes com oAvaliador com um

tempo de reflex ˜ao probabil´ıstico. OAvaliador recebe o pedido por meio do Monitor e contabiliza. O Monitor realiza o mapeamento do pedido, mede o tempo da operac¸ ˜ao, verifica se o tempo medido para

a operac¸ ˜ao satisfaz a matriz de restric¸ ˜ao, se satisfaz armazena a marca registada, contabiliza resposta e retorna a resposta aoRBErespectivo.

3.3.4

Encerramento das medic¸ ˜

oes

Para encerrar as medic¸ ˜oes, Figura 3.9, oRBEenvia um pedido especial ao Avaliador. O Avalia-dor atrav ´es do Monitor, verifica se todos os pedidos foram conclu´ıdos, se todos foram conclu´ıdos com

sucesso, calcula oSIPSglobal, armazena de forma persistente no Repository, encerra as medic¸ ˜oes

(pr ´oximos pedidos n ˜ao ser ˜ao contabilizados) e retorna uma mensagem de sucesso aoRBE. Se exis-tirem pedidos, incompletos de um determinado tipo de operac¸ ˜ao, verifica se 90% deste tipo de pedido foram conclu´ıdo com sucesso, calcula oSIPSglobal, armazena de forma persistente no Repository,

Referências

Documentos relacionados

Os ativos não circulantes classificados como disponível para venda são mensurados pelo menor montante entre o seu custo contábil e o seu valor justo, líquido das despesas com a

Surgem novas formas de pensar o direito que não almejam a universalidade. O estado plurinacional, a interculturalidade e o pluralismo jurídico, tal como são tratados pelos movimentos

Pode haver alguns acordos prévios, como visto na classificação proposta em trabalho anterior (GUERRERO, 2006), mas estes são propostos sempre mantendo elevado

Os testes de desequilíbrio de resistência DC dentro de um par e de desequilíbrio de resistência DC entre pares se tornarão uma preocupação ainda maior à medida que mais

CAIXA, além do benefício previsto no parágrafo segundo da cláusula 26, o empregado que adotar ou obtiver guarda judicial para fins de adoção de criança fará jus

Se no cadastro da administradora, foi selecionado na aba Configurações Comissões, para que as comissões fossem geradas no momento da venda do contrato, já é

Em confronto à posição daqueles países, União Européia, Estados Unidos e Japão são os principais atores representantes dos países mais avançados, in- teressados também

O presente trabalho tem a pretensão de começar um debate acerca da avalia- ção nas universidades, com base em pesquisa realizada em uma IES e entrevistas com docentes da mesma.