Comparativo de arquiteturas de software corporativos
1. O comparativo de
arquiteturas de software
monolíticas em relação a
arquitetura de micro
serviços em ambientes
corporativos
Emmanuel Neri de Souza
Dr. Sebastião Ribeiro Junior
Dr. 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 – GTT2
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.
3 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
4 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
5 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)
6 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
7 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
8 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
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
10 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
11 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
12. Arquitetura de micro serviços
12 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
13 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)
14 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
15. ATAM
15 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
16 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
17 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
18 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
19. Método
19 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
20 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
21. Cenário corporativo
21 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
22 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
23 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
Diagrama de deployment da arquitetura base. Fonte: O autor
24. 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
25 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
1. Arquitetura Monolítica
2. Arquitetura de Micro serviços – síncrona
3. Arquitetura de Micro serviços – assíncrona
Experimentos:
27. Comunicação
27 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
28 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
29 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
30 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
31 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
32 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
33 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
34 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
35. Comunicação síncrona
35 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
36 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
37 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
38 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
39 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
40 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
41. Comunicação assíncrona
41 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
42 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
43 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
44 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
45 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çã
de clientes. Fonte: O autor
46. Resultados do código fonte
46 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
156
371
508
0
100
200
300
400
500
600
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
2%
8%
21%
0%
5%
10%
15%
20%
25%
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
1841
4014
5218
0
1000
2000
3000
4000
5000
6000
Monolítica Micro serviços - síncrono Micro 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
47 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
10.968
36.571
33.697
0 10 20 30 40
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
9.6
6.6
7.4
0 2 4 6 8 10 12
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
16
14.2
15
13 13.5 14 14.5 15 15.5 16 16.5
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
13
59.2
10.6
0 10 20 30 40 50 60 70
Monolítica Micro serviços - síncrono Micro serviços - assíncrono
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
48 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
49 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 Atende
amplamente
Design portável Não atende Atende Atende
Interoperabilidade
Evoluções e integração com outros sistemas Atende com restrições Atende Atende
Facilidade de integrar com outros sistemas Não atende Atende
amplamente
Atende
Performance
Latê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 Atende
com restrições
Recuperação a falhas Atende com restrições Atende Atende amplamente
Escalabilidade
Possibilidade de escalar Atende com restrições Atende Atende
Tabela comparativa. Fonte: O autor
50. Conclusão
50 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 Souza
emmanuelnerisouza@gmail.com
51 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
Notas do Editor
Crescimento da informatização -> softwares maiores e mais complexos
Adoção da mobilidade -> softwares com mais usuários em diversos dispositivos
Surgimento de novos modelos SaaS e Computação em nuvem -> maior disponibilidade e escabilidade
Conclui-se que os softwares estão exigindo novos estilos arquiteturais
Implementar os três cenários
Monolítico + 2 variações de implementação de micro serviços
Aplicar ATAM + UML + Código para análise das arquiteturas
Classificação dos experimentos nos eixos de características de softwares
Aplicar o conceito de decomposição de software proposto pela arquitetura de micro serviços , visando um comparativo com estruturas monolíticas
De forma que possa ser elegido a solução maior satisfaz as mudanças de características que os softwares modernos estão estabelecendo .
ERP e CRM
A criação de software corporativo é uma atividade complexa, que envolve inúmeros desafios, entre os quais, lidar com expressivo volume de dados, grande número de usuários, extensa quantidade de linha de código
Microserviços é um estilo ou design de software dentro da arquitetura de software, o qual faz parte da área de engenharia de software
1000 linhas ou 2 semanas
Síncrono
Dados em tempo real
Maior dependência
Desafio com performance e disponibilidade
Assíncronos
Dados não disponíveis em tempo real
Maior desacoplamento
Trata a performace de forma diferente
Propricio a caso de disponibilidade
Direciona a avaliação de arquiteturas
Não diz como fazer as análises
9 passos
4 fases
Arquitetura orientada a serviço finamente granulada
2014: Amazon, Ebay, Globo.com
2015:
SEI – Carnigie Mellon
Sam Newman Autor junto com Folwer
2016: Base de novas tendências alem de vários artigos acadêncimos
Radar
Adaptação do método de ATAM para as fases da pesquisa
Linguagem java
Sonar e análise de estrutura
Coletas de tempo executados
Mac OS 10.11
JVM Oracle 1.8
Cliente-servidor
Web (usuário não instala)
Padrão MVC
Banco de dados relacional gerenciado pelo servidor de aplicação
Artigo de estudo de 15 anos de avaliação com o método ATAM
De 2006 a 2013
Todas as características aparecem na pesquisa
13 de 16 conceitos no artigo
7 caracteristicas
- base de comparação
- Em tempo real
- transparente para o usuário
Geralmente base de dados única
Funcionalidades separadas mas em uma única estrutura
Única base de código fonte
Comunicação direta por métodos da linguagem
Maior dependência nas funcionalidades, gerando mais acoplamento
Ganho de performance
Único artefato
Escalonamento apenas por replicação
Gerencimento de recursos apenas no único artefato
Propício a ponto único de falha
Indisponibilidade total em atualizações
Depoy único
Entidade se relacionam diretamente, + acoplamento
Maior consistência dos dados
Única base de dados
Numeros baixos
Complexidade : é a quantidade de fluxos que determinado código fonte pode executa
Medições 5x por causa das interferência do SO
Explicar dependências dos casos de usos
Módulos separadas em estruturas por responsabilidades
Permiti um ou vários repositórios
As setas representa interligação entre os módulos
Resultado final é 4 artefatos
Estratégia de consumir os dados quando necessitados
Padrão Rest
Os micro serviços permitem a separação das bases de dados
Banco de dados menores com essa estratégia
Cada estrutura possui apenas as entidades que gerencia
As entidades não tem ligações com outros módulos
Projeto Integrador para centralizar classes reaproveitada entre as estruturas
Menor consistência dos dados a nível de banco de dados
4 estruturas de projetos analisadas
Repetição das configurações
Repetição dos dados convertidos para comunicação
Percentual ficou no valor de 8.5 devido o integrador
Pedidos: no caso de uso não tem integração de módulos
Relatório: aumento significativo devido a integração
Quase 4x maior que emissão de um pedido
Replicação assíncrona
Após ação no módulo
Web service Rest
Sistema é responsável pelo momento da replicação
Pode causa indisponibilidade momentânea
Repetição das tabelas
Dados replicados entre as estruturas
Replicação das entidades
Ligações apenas locais
Estruturas gerenciadoras outras apenas armazenadoras
Modelo de dados maior
Mais tolerante a falhas (estrutura mais independente)
Repetição do modelo de dados
Complexidade das lógicas de replicação
Complicação manutenibilidade
4 estruturas
Sem comunicação entre estrutura
A replicação é assíncrona gerenciada pelo sistemas
Transparente pelo usuário
Mon -> MSS = 2173 | Mon -> MSS = 215 | Mon -> MSS = 6
Mon -> MAS – 3377 | Mon -> MAS – 352 | Mon -> MAS = 19
MAS -> MAS = 1204 | MAS -> MAS = 132 | MAS -> MAS = 13
Deploy total monolítico
MS possibilitam a flexibilidade do deploy fragmentado
Latência maior na comunicação em tempo real
8 Conceitos mais avaliados nas 5 características nos últimos15 anos segundo a pesquisa
3 conceitos constante utilizados em comparativos