SlideShare uma empresa Scribd logo
1 de 51
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
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
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
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
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
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
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
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
Arquitetura monolítica
9 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
Fowler (2014)
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
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
Arquitetura de micro serviços
12 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
Fowler (2014)
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
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
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).
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)
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
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
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
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
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
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
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
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
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:
Arquitetura monolítica
26 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT
Arquitetura monolítica. Fonte: O autor
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OBRIGADO
Emmanuel Neri de Souza
emmanuelnerisouza@gmail.com
51 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT

Mais conteúdo relacionado

Mais procurados

Aula05 - Metodologias Ágeis
Aula05 - Metodologias ÁgeisAula05 - Metodologias Ágeis
Aula05 - Metodologias ÁgeisDaniela Brauner
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosMessias Batista
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviçosRaphael Almeida
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoCarla De Bona
 
Gestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumGestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumMarcos Garrido
 
Aula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosAula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosFernando Dantas
 

Mais procurados (20)

Aula05 - Metodologias Ágeis
Aula05 - Metodologias ÁgeisAula05 - Metodologias Ágeis
Aula05 - Metodologias Ágeis
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
 
Scrum
ScrumScrum
Scrum
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
 
Treinamento em gestão de projetos
Treinamento em gestão de projetosTreinamento em gestão de projetos
Treinamento em gestão de projetos
 
Scrum
ScrumScrum
Scrum
 
Gestão de Projetos Ágeis
Gestão de Projetos ÁgeisGestão de Projetos Ágeis
Gestão de Projetos Ágeis
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
TOGAF em Ação
TOGAF em AçãoTOGAF em Ação
TOGAF em Ação
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
 
Gestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumGestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com Scrum
 
Aula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosAula 1 - Gestão de Projetos
Aula 1 - Gestão de Projetos
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Scrum
ScrumScrum
Scrum
 
Gestão de Projetos
Gestão de ProjetosGestão de Projetos
Gestão de Projetos
 
Manifesto Ágil.pdf
Manifesto Ágil.pdfManifesto Ágil.pdf
Manifesto Ágil.pdf
 

Destaque

Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouJett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouEmmanuel Neri
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaEmmanuel Neri
 
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCConstruindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCEmmanuel Neri
 
A Cultura do Home Office
A Cultura do Home OfficeA Cultura do Home Office
A Cultura do Home OfficeEmmanuel Neri
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Emmanuel Neri
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Emmanuel Neri
 
O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareEmmanuel Neri
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJSEmmanuel Neri
 

Destaque (9)

Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouJett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
 
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCConstruindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
 
A Cultura do Home Office
A Cultura do Home OfficeA Cultura do Home Office
A Cultura do Home Office
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
 
O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de software
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJS
 

Semelhante a Comparativo de arquiteturas de software corporativos

Engenharia de Software
Engenharia de SoftwareEngenharia de Software
Engenharia de SoftwareSm3nd3s29
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Gustavo Malheiros
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelAlan Braz
 
SAlmox SIIC 2014
SAlmox SIIC 2014SAlmox SIIC 2014
SAlmox SIIC 2014Jonas Mayer
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosEmmanuel Neri
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Guilherme Ponce
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Application Insights
Application InsightsApplication Insights
Application InsightsCDS
 
Ágil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemÁgil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemCentus Consultoria
 
Application Insights: identificando problemas de performance em aplicações le...
Application Insights: identificando problemas de performance em aplicações le...Application Insights: identificando problemas de performance em aplicações le...
Application Insights: identificando problemas de performance em aplicações le...Renato Groff
 
Monitorando serviços REST com o Application Insights e Distributed Tracing
Monitorando serviços REST com o Application Insights e Distributed TracingMonitorando serviços REST com o Application Insights e Distributed Tracing
Monitorando serviços REST com o Application Insights e Distributed TracingRenato Groff
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 

Semelhante a Comparativo de arquiteturas de software corporativos (20)

Engenharia de Software
Engenharia de SoftwareEngenharia de Software
Engenharia de Software
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiável
 
SAlmox SIIC 2014
SAlmox SIIC 2014SAlmox SIIC 2014
SAlmox SIIC 2014
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativos
 
Aula01 introducao
Aula01 introducaoAula01 introducao
Aula01 introducao
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Metodologias de desenvolvimento
Metodologias de desenvolvimentoMetodologias de desenvolvimento
Metodologias de desenvolvimento
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Application Insights
Application InsightsApplication Insights
Application Insights
 
Ágil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemÁgil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se Atraem
 
Application Insights: identificando problemas de performance em aplicações le...
Application Insights: identificando problemas de performance em aplicações le...Application Insights: identificando problemas de performance em aplicações le...
Application Insights: identificando problemas de performance em aplicações le...
 
Monitorando serviços REST com o Application Insights e Distributed Tracing
Monitorando serviços REST com o Application Insights e Distributed TracingMonitorando serviços REST com o Application Insights e Distributed Tracing
Monitorando serviços REST com o Application Insights e Distributed Tracing
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Analise aula2
Analise aula2Analise aula2
Analise aula2
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 

Mais de Emmanuel Neri

Arquitetura orientada a eventos
Arquitetura orientada a eventosArquitetura orientada a eventos
Arquitetura orientada a eventosEmmanuel Neri
 
Iniciando com Docker
Iniciando com DockerIniciando com Docker
Iniciando com DockerEmmanuel Neri
 
Arquitetura reativa, a solução para os microserviços?
Arquitetura reativa,  a solução para os microserviços?Arquitetura reativa,  a solução para os microserviços?
Arquitetura reativa, a solução para os microserviços?Emmanuel Neri
 
Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Emmanuel Neri
 
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Emmanuel Neri
 
Combatendo code smells em Java
Combatendo code smells em Java Combatendo code smells em Java
Combatendo code smells em Java Emmanuel Neri
 
Configurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigConfigurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigEmmanuel Neri
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixEmmanuel Neri
 
Análise e Design - RUP
Análise e Design - RUPAnálise e Design - RUP
Análise e Design - RUPEmmanuel Neri
 
Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Emmanuel Neri
 

Mais de Emmanuel Neri (12)

Arquitetura orientada a eventos
Arquitetura orientada a eventosArquitetura orientada a eventos
Arquitetura orientada a eventos
 
Iniciando com Docker
Iniciando com DockerIniciando com Docker
Iniciando com Docker
 
Arquitetura reativa, a solução para os microserviços?
Arquitetura reativa,  a solução para os microserviços?Arquitetura reativa,  a solução para os microserviços?
Arquitetura reativa, a solução para os microserviços?
 
Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...
 
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
 
Combatendo code smells em Java
Combatendo code smells em Java Combatendo code smells em Java
Combatendo code smells em Java
 
Configurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigConfigurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud Config
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
 
Trabalho Remoto
Trabalho RemotoTrabalho Remoto
Trabalho Remoto
 
Análise e Design - RUP
Análise e Design - RUPAnálise e Design - RUP
Análise e Design - RUP
 
Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3
 
Jenkins
JenkinsJenkins
Jenkins
 

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
  • 9. Arquitetura monolítica 9 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 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:
  • 26. Arquitetura monolítica 26 24/06/2016 Programa de Pós-graduação em Desenvolvimento de Tecnologia – GTT Arquitetura monolítica. Fonte: O autor
  • 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

  1. 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
  2. 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
  3. 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 .
  4. 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
  5. Microserviços é um estilo ou design de software dentro da arquitetura de software, o qual faz parte da área de engenharia de software
  6. 1000 linhas ou 2 semanas
  7. 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
  8. Direciona a avaliação de arquiteturas Não diz como fazer as análises
  9. 9 passos 4 fases
  10. 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
  11. Adaptação do método de ATAM para as fases da pesquisa
  12. Linguagem java Sonar e análise de estrutura Coletas de tempo executados Mac OS 10.11 JVM Oracle 1.8
  13. Cliente-servidor Web (usuário não instala) Padrão MVC Banco de dados relacional gerenciado pelo servidor de aplicação
  14. 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
  15. - base de comparação - Em tempo real - transparente para o usuário
  16. Geralmente base de dados única Funcionalidades separadas mas em uma única estrutura Única base de código fonte
  17. Comunicação direta por métodos da linguagem Maior dependência nas funcionalidades, gerando mais acoplamento Ganho de performance
  18. Ú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
  19. Entidade se relacionam diretamente, + acoplamento Maior consistência dos dados Única base de dados
  20. Numeros baixos Complexidade : é a quantidade de fluxos que determinado código fonte pode executa
  21. Medições 5x por causa das interferência do SO Explicar dependências dos casos de usos
  22. Módulos separadas em estruturas por responsabilidades Permiti um ou vários repositórios As setas representa interligação entre os módulos
  23. Resultado final é 4 artefatos
  24. Estratégia de consumir os dados quando necessitados Padrão Rest
  25. Os micro serviços permitem a separação das bases de dados Banco de dados menores com essa estratégia
  26. 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
  27. 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
  28. 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
  29. 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
  30. Repetição das tabelas Dados replicados entre as estruturas
  31. Replicação das entidades Ligações apenas locais Estruturas gerenciadoras outras apenas armazenadoras Modelo de dados maior Mais tolerante a falhas (estrutura mais independente)
  32. Repetição do modelo de dados Complexidade das lógicas de replicação Complicação manutenibilidade
  33. 4 estruturas Sem comunicação entre estrutura A replicação é assíncrona gerenciada pelo sistemas Transparente pelo usuário
  34. 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
  35. Deploy total monolítico MS possibilitam a flexibilidade do deploy fragmentado Latência maior na comunicação em tempo real
  36. 8 Conceitos mais avaliados nas 5 características nos últimos15 anos segundo a pesquisa 3 conceitos constante utilizados em comparativos