O comparativo de arquiteturas de software monolíticas em relação a arquitetura de micro serviços...
-
Upload
emmanuel-neri -
Category
Software
-
view
180 -
download
1
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 [email protected]
24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT