Apresentação realizada em dezembro de 2016, como defesa do Trabalho de Conclusão para conclusão da Graduação de Análise de Sistemas, pela Universidade Unisinos.
A pesquisa buscou validar a diferença no resultado das métricas de índice de manutenibilidade e complexidade ciclomática, ao avaliar o mesmo projeto construído sob duas abordagens diferentes (arquitetura de microsserviços vs arquitetura monolítica).
Sobre mim: https://www.linkedin.com/in/felipecmachado
4. INTRODUÇÃO MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
PROBLEMA
softwares com a arquitetura monolítica
com o tempo tem sua manutenibilidade
reduzida e qualidade do software
prejudicada;
o modelo de arquitetura de
microsserviços proposto contempla uma
nova forma de desenvolvimento;
a falta de informações e comparativos
prejudica a tomada de decisão de qual
arquitetura seguir por organizações.
PROPOSTA
avaliar quais os benefícios providos por
microsserviços, aplicando métricas
quantitativas de software;
responder se microsserviços auxilia na
redução da complexidade no
desenvolvimento de software;
apresentar dados que ajudarão
desenvolvedores e organizações a
entenderem melhor o impacto de suas
decisões arquiteturais na vida de um
software.
5. INTRODUÇÃO MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
Analisar como a arquitetura
de Microsserviços auxilia na
redução da complexidade
no desenvolvimento de
software.
a) Identificar métricas para a
análise da complexidade de
software;
b) Comparar as arquiteturas de
Microsserviços e Monolítico;
c) Analisar a aplicabilidade da
ferramenta Visual Studio Code
Metrics a arquitetura de
Microsserviços.
GERAL ESPECÍFICOS
7. FUNDAMENTAÇÃO TEÓRICA MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
MANUTENIBILIDADE
DE SOFTWARE
MÉTRICAS
QUANTITATIVAS DE
SOFTWARE
uma forma padrão
de medir um atributo
de um software ou
do processo, como
tamanho, custo,
defeitos, qualidade
ou ambiente.
ARQUITETURA
MICROSSERVIÇOS
ARQUITETURA
MONOLÍTICA
capacidade de
um software de ser
modificado a fim de
corrigir defeitos,
adequar-se a novos
requisitos, aumentar
a suportabilidade o
u se adequar a um
ambiente novo.
arquitetura de
software na qual a
interface de usuário
e todo código
server-side é
combinado em
uma única unidade.
especialização da
arquitetura SOA
utilizada para
desenvolver suítes
de serviços com
deploy
independente.
8. FUNDAMENTAÇÃO TEÓRICA MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
trabalhos
relacionados On Micro-services Architecture A Visualizing Network Benchmark for
Microservices
Assessment of Software Maintainability
Evolution Using C&K Metrics
Namiot e Sneps-Sneppe (2014)
Kratzke e Quint (2016)
Barbosa Jr. e Hirama (2013)
Towards a Technique for Extracting
Microservices from Monolithic Enterprise
Systems Levcovitz, Terra e Valente (2015)
identifica vantagens e desvantagens do
microsserviços;
perspectiva técnica e de implementação;
viabilidade de migração.
benchmark desenhado para arquitetura de
microsserviços;
comparativo de performance.
evolução da manutenibilidade de um software;
utilização das métricas Chidamber e Kemerer (C&K).
10. MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
software utilizado
em colaboração
com uma
empresa
3
CENÁRIOS
As métricas índice de
manutenibilidade
e complexidade
ciclomática foram
escolhidas para efetuar o
comparativo
unidade
de
análise
construídos, utilizando os
princípios de
microsserviços para
possibilitar o comparativo
PROJETO
11. MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
ARQUITETURA
ATUAL
ARQUITETURA
PROJETADA
arquitetura
Desenvolvido em 2012 utilizando stack Microsoft;
Cerca de 50k linhas de código;
Índice de Manutenibilidade médio de 43;
Arquitetura monolítica. Uma única DLL.
Desenvolvido em C# e .NET;
Quebra em microsserviços;
Utilização de ECS (AWS EC2 Container Service);
Separação por responsabilidades.
PROJETO
12. MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
CADA CENÁRIO FOI
AVALIADO E QUEBRADO
cenários
• Identificado todos os métodos dentro de
cada controladora
• Dividido entre três responsabilidades:
• Informações Sucintas; Informações
Completas; e Alterações da base de dados.
1 2
3
PROJETO
14. RESULTADOS MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
COMPLEXIDADE
CICLOMÁTICA
Redução de 83% e 53% nos dois
primeiros cenários.
Redução Média de 45%.
ÍNDICE DE
MANUTENIBILIDADE
Aumento respectivo de
103%, 52% e 76%.
Aumento médio de 77%.
16. CONCLUSÃO MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO
preencheu-se uma lacuna no que diz respeito à
complexidade de software da arquitetura de microsserviços.
através de três cenários, comprovou-se uma maior
manutenibilidade e redução de complexidade para a
arquitetura de microsserviços em comparação ao modelo
monolítico.
métricas quantitativas utilizadas e ferramenta Code Metrics
totalmente aderentes para o desenvolvimento na
linguagem C#.
17. Além da complexidade do software, podemos ainda
explorar o impacto em recursos (CPU/memória/tráfego de
rede) e mudanças na qualidade do código.
Ainda é possível avaliar a complexidade de software
no novo paradigma de arquitetura Serverless.
CONCLUSÃO MICROSSERVIÇOS:
COMPARATIVO DA ARQUITETURA DE MICROSSERVIÇOS COM MODELO MONOLÍTICO