O comparativo de arquiteturas de software monolíticas em relação a arquitetura de micro serviços...

Post on 15-Apr-2017

180 views 1 download

Transcript of O comparativo de arquiteturas de software monolíticas em relação a arquitetura de micro serviços...

O comparativo de arquiteturas de software monolíticas em relação a

arquitetura de micro serviços em ambientes

corporativosEmmanuel Neri de Souza

Dr. Sebastião Ribeiro JuniorDr. Rodrigo Clemente Thom de Souza

2

Introdução

• Aumento da informatização proporcionando um crescimento na abrangência dos softwares

• Adoção a mobilidade dos softwares• Surgimento de novos modelos de negócios

baseados em computação em nuvem, como os softwares como serviços (SaaS)

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

3

Objetivo Geral

• O objetivo geral do trabalho é a aplicação da arquitetura de micro serviços, para que possa se analisado os benefícios e limitações da construção de softwares corporativos utilizando esse conceito e suas possíveis variações de estilos arquiteturais em comparação aos monólitos.

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

4

Objetivos Específicos

• Contextualização dos temas de arquitetura de softwares

• Implementação de um cenário corporativo na estrutura monolítica, micro serviços síncrona e assíncrona

• Aplicação de método de avaliação de arquiteturas

• Análise comparativa entre as soluções• Conclusão dos resultados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

5

Justificativa

• Redução do tamanho dos projetos de software

• Redução do acoplamento e aumento de flexibilidade

• A necessidade de escalar os softwares• Melhor gerenciamento de recursos • Aumento da disponibilidade

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

6

Softwares Corporativos

• São aqueles que automatizam processos de natureza administrativa, financeira, contábil e outros relacionados a gestão empresarial.

• Pode-se dizer que as aplicações corporativas são a espinha dorsal de muitos processos.Brunnet A., Wischer K., Krcmar (2014)

• “Complexidades voltada a expressivo volume de dados, grande número de usuários e extensa quantidade de linhas de códigos.”

Fowler (2008)

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

7

Arquitetura de Software

• Edsger Dijkstra em 1968 e David Parnas no início de 1970

• Trata-se da estrutura do software• Caracteriza os pontos positivos e

negativos no softwares

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

8

Arquitetura monolítica

• “Quando uma aplicação é construída em uma grande e única unidade.”

Savchenko, Radchenko, Taipale(2015)

• Software composto por um conjunto de funcionalidades em uma única estrutura

• O modelo de arquitetura mais comum no desenvolvimento de software

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

9

Arquitetura monolítica

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Fowler (2014)

10

Arquitetura monolítica

• Composto por múltiplos módulos em apenas uma estrutura

• O software é executado em uma única instância

• Permite ser escalado apenas em horizontal

• Restrito a uma tecnologia

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

11

Arquitetura de micro serviços

• “Um conjunto de serviços pequenos, autônomos que trabalham em conjunto.”

Newman (2015)

• Software modularizado em pequenos serviços que se comunicam por através de uma forma padronizada

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

12

Arquitetura de micro serviços

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Fowler (2014)

13

Características de micro serviços

• Serviços pequenos• Serviços autônomos

Pode ser executado em uma ou mais instâncias

Deploys independentes entre os serviços• Interface de comunicação padronizada

Independência de tecnologia• Permite ser escalado horizontal e vertical

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

14

Comunicação entre os serviços

• Síncrona Comunicação em tempo real, pois as

chamadas no servidor serão bloqueadas até que a operação seja completada. Newman, S. (2015)

• Assíncrona Comunicação que não dependem de

respostas para continuar as ações.Newman, S. (2015)

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

15

ATAM

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

• O ATAM (Architecture tradeoff analysis method), um método de avalição de arquiteturas criado pelo SEI (Software Engineering Institute).

• O método define modelos de qualidades para possibilitar o tradeoff e os riscos das arquiteturas avaliadas.

Szwed P.; Skrzynski P. P.; Rogus G.; Werewka J. (2015).

16

Fases ATAM

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Nove passos propostos pelo método ATAM separado por quatro fases

Fonte: Mariotti F., André P. (2016)

17

Estado da Arte

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Linha do tempo arquitetura de micro serviços - Fonte o autor

18

Metodologia

• Pesquisas• Definição do cenário corporativo• Implementação dos experimentos de

softwares baseados nos cenários levantados e representação dos diagramas UML

• Aplicação do método ATAM• Análise e conclusão dos resultados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

19

Método

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Passos do ATAM adaptados para a pesquisa Fonte: O autor

20

Materiais

• Experimentos desenvolvidos em linguagem de programação Java EE

• Diagramas UML• Plataforma SonarQube• Coleta do tempo de implantação pelo

servidor de aplicação• Coleta do tempo de execução através de

recursos da linguagem

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

21

Cenário corporativo

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de caso de uso do cenário. Fonte: O autor

22

Entidades do cenário

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de classe do cenário. Fonte: O autor

23

Arquitetura base

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de deployment da arquitetura base. Fonte: O autor

Possíveis características

24 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

caracteristicas de arquitetura de

software

Manutenibilidade

Modificabilidade

Baixo acomplamento

Design portável

Tamanho código fonte

Quantidade de linhas de código

Percentual de duplicação

Interoperabilidade

Melhorias e integrações com outros sistemas

Facilidade para interagir com

outros sistemas

Performance

Latência

Gerenciamento de recursos

Disponibilidade

Detecção de falhas

Recuperação a falhas

Tolerância a falha

Escalabilidade

Possibilidade de escalar

Processamento sobe demanda

Segurança

Autorização

Risco de ataques

Usabilidade

Fácil de usar

Organograma das possíveis características a serem avaliadas. Fonte: O autor

25

Arquitetura elegidas

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

1. Arquitetura Monolítica2. Arquitetura de Micro serviços – síncrona3. Arquitetura de Micro serviços – assíncrona

Experimentos:

26

Arquitetura monolítica

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Arquitetura monolítica. Fonte: O autor

27

Comunicação

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de componente da arquitetura monolítica. Fonte: O autor

28

Artefato gerado

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de deployment do artefato monolítico. Fonte: O autor

29

Modelo de dados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de classe da estrutura monolítica. Fonte: O autor

30

Análise de código fonte

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Painel de métricas de tamanho. Fonte: Plataforma SonarQube

Painel de complexidade. Fonte: Plataforma SonarQube

Painel de duplicação. Fonte: Plataforma SonarQube

31

Coleta de tempos

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Testes Tempo (segundos)

Execução 1 10,905

Execução 2 11,334

Execução 3 11,073

Execução 4 11,052

Execução 5 10,478

Média: 10,968 segundos

Testes Tempo (milissegundos)

Execução 1 36

Execução 2 7

Execução 3 6

Execução 4 6

Execução 5 5

Média: 12 milissegundos

Testes Tempo (milissegundos)

Execução 1 42

Execução 2 11

Execução 3 10

Execução 4 8

Execução 5 9

Média: 16 milissegundos

Testes Tempo (milissegundos)

Execução 1 15

Execução 2 9

Execução 3 12

Execução 4 10

Execução 5 10

Média: 13 milissegundos

Tempo de deploy. Fonte: O autor Tempo execução cadastrar cliente. Fonte: O autor

Tempo execução emitir pedido. Fonte: O autor Tempo execução relatório de classificação de clientes. Fonte: O autor

32

Arquitetura de micro serviços

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Arquitetura de micro serviços. Fonte: O autor

33

Artefatos gerados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de deployment artefatos em um servidor. Fonte: O autor

Diagrama de deployment artefatos em vários servidores. Fonte: O autor

34

Arquitetura de micro serviços com comunicação síncrona

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

35

Comunicação síncrona

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de componentes da arquitetura de micro serviços síncrona. Fonte: O autor

36

Base de dados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Base de dados arquitetura de micro serviços síncrona. Fonte: O autor

37

Modelo de dados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de classe arquitetura de micro serviços síncrona. Fonte: O autor

38

Análise de código fonte

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Painel de duplicação. Fonte: Plataforma SonarQube

Painel de métricas de tamanho. Fonte: Plataforma SonarQube

Painel de complexidade. Fonte: Plataforma SonarQube

39

Coleta de tempo

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Testes Tempo Individual(segundos) Total(segundos)  portal cadastros pedidos relatorios  

Execução 1 4,935 7,067 9,104 11,069 32,175

Execução 2 5,201 7,752 9,841 11,902 34,696

Execução 3 5,521 8,607 10,985 12,987 38,100

Execução 4 5,927 8,732 11,227 13,463 39,349

Execução 5 5,650 8,696 10,993 13,215 38,554

Média: 36,574 segundos

Testes Tempo (milissegundos)

Execução 1 37

Execução 2 6

Execução 3 5

Execução 4 2

Execução 5 6

Média: 11,2 milissegundos

Testes Tempo (milissegundos)

Execução 1 36

Execução 2 8

Execução 3 10

Execução 4 8

Execução 5 9

Média: 14,2 milissegundos

Testes Tempo (milissegundos)

Execução 1 175

Execução 2 31

Execução 3 31

Execução 4 30

Execução 5 29

Média: 59,2 milissegundos

Tempo de deploy. Fonte: O autor

Tempo de deploy. Fonte: O autor Tempo de deploy. Fonte: O autor Tempo execução relatório de classificação de clientes. Fonte: O autor

40

Arquitetura de micro serviços com comunicação assíncrona

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

41

Comunicação assíncrona

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de componentes da arquitetura de micro serviços assíncrona. Fonte: O autor

42

Base de dados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Base de dados da arquitetura de micro serviços assíncrona. Fonte: O autor

43

Modelo de dados

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Diagrama de componentes da arquitetura de micro serviços assíncronas. Fonte: O autor

44

Análise de código fonte

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Painel de métricas de tamanho. Fonte: Plataforma SonarQube

Painel de complexidade. Fonte: Plataforma SonarQube

Painel de duplicação. Fonte: Plataforma SonarQube

45

Coleta de tempos

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Testes Tempo Individual(segundos) Total(segundos)  portal cadastros pedidos relatorios  

Execução 1 5,687 8,315 10,860 13,402 35,636

Execução 2 5,163 7,533 9,796 12,045 32,167

Execução 3 5,588 8,291 10,553 12,798 34,527

Execução 4 5,648 8,201 10,365 12,910 34,571

Execução 5 5,023 7,470 9,679 11,861 31,586

Média: 33,697 segundos

Testes Tempo (milissegundos)

Execução 1 12

Execução 2 6

Execução 3 5

Execução 4 5

Execução 5 6

Média: 6,8 milissegundos

Testes Tempo (milissegundos)

Execução 1 28

Execução 2 13

Execução 3 11

Execução 4 12

Execução 5 11

Média: 15 milissegundos

Testes Tempo (milissegundos)

Execução 1 15

Execução 2 9

Execução 3 10

Execução 4 10

Execução 5 9

Média: 10,6 milissegundos

Tempo de deploy. Fonte: O autor

Tempo de deploy. Fonte: O autor Tempo de deploy. Fonte: O autor Tempo execução relatório de classificação de clientes. Fonte: O autor

46

Resultados do código fonte

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

0

100

200

300

400

500

600

156

371

508

Monolítica Micro serviços - síncronoMicro serviços - assíncrono

0%

5%

10%

15%

20%

25%

2%

8%

21%

Monolítica Micro serviços - síncronoMicro serviços - assíncrono

0

1000

2000

3000

4000

5000

6000

1841

4014

5218

Monolítica Micro serviços - síncronoMicro serviços - assíncrono

Comparativo linha de código. Fonte: O autor Comparativo complexidade. Fonte: O autor

Comparativo percentual de duplicação. Fonte: O autor

47

Resultados das coletas de tempo

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Series1

0 5 10 15 20 25 30 35 40

10.968

36.571

33.697

Micro serviços - assíncrono Micro serviços - síncronoMonolítica

Series1

0 2 4 6 8 10 12

9.6

6.6

7.4

Micro serviços - assíncrono Micro serviços - síncronoMonolítica

Series1

13 13.5 14 14.5 15 15.5 16 16.5

16

14.2

15

Micro serviços - assíncrono Micro serviços - síncronoMonolítica

Series1

0 10 20 30 40 50 60 70

13

59.2

10.6

Micro serviços - assíncrono Micro serviços - síncronoMonolítica

Comparativo de tempo de deploy. Fonte: O autor Comparativo de tempo execução cadastrar cliente. Fonte: O autor

Comparativo de tempo execução emitir pedido. Fonte: O autor Comparativo de tempo execução relatório classificar clientes. Fonte: O autor

48

Características elegidas

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

caracteristicas de arquitetura de

software

Manutenibilidade

Modificabilidade

Baixo acoplamento

Design portável

Tamanho código fonte

Quantidade de linhas de código

Percentual de duplicação

Interoperabilidade

Melhorias e integrações com outros sistemas

Facilidade para interagir com

outros sistemas

Performance

Latência

Gerenciamento de recursos

Disponibilidade

Detecção de falhas

Recuperação a falhas

Escalabilidade

Possibilidade de escalar

Organograma das características elegidas para avaliação. Fonte: O autor

49

Classificação

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Característica Conceito Monolítica Micro serviços – síncrono Micro serviços – assíncrono

Manutenbilidade

 

Quantidade de código fonte Atende Não atende Não Atende

Percentual de duplicação Atende amplamente Atende com restrições Não atende

Manutenibilidade

(modificabilidade)

Baixo acoplamento Não atende Atende Atendeamplamente

Design portável Não atende Atende Atende

InteroperabilidadeEvoluções e integração com outros sistemas Atende com restrições Atende Atende

Facilidade de integrar com outros sistemas Não atende Atendeamplamente

Atende 

PerformanceLatência Atende amplamente Atende com restrições Atende com restrições

Gerenciamento de recursos Atende com restrições Atende Atende

Disponibilidade

 

Detecção de falhas Atende com restrições Atende Atendecom restrições

Recuperação a falhas Atende com restrições Atende Atende amplamente 

EscalabilidadePossibilidade de escalar Atende com restrições Atende Atende

Tabela comparativa. Fonte: O autor

50

Conclusão

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

• 8 de 11 conceitos os micro serviços apresentaram vantagem em relação ao monólito

• 3 de 11 conceitos o monólito apresentou vantagem sobre os micro serviços

• A arquitetura com mais vantagem nos conceitos foi micro serviços síncrona

• Apesar das vantagens na maioria dos conceitos a arquitetura de micro serviços apresentou expressivo problemas nos conceitos com desvantagem

51

OBRIGADO

Emmanuel Neri de Souzaemmanuelnerisouza@gmail.com

24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT