SlideShare uma empresa Scribd logo
Desconstruindo
Monolitos
Como construir micro serviços Delphi
com agilidade e qualidade
Hello World!! ✋
Felipe Caputo
Desenvolvedor sênior e líder técnico na
Softplan, atualmente sou responsável
pelo desenvolvimento de soluções para
integração entre aplicações dos órgãos
da justiça no País.
May Fernandes
Analista de Testes com mais de 08 anos
de experiência com testes de aplicações
desktop e micro-serviços. Atualmente
trabalho com processos de automação
de testes e QAOps na Softplan.
Softplan
▸ Principais sistemas em Delphi com mais de 20
anos
▸ Milhares de usuários e milhões de linhas de
código
▸ Dezenas de versões
▸ Diversas integrações
▸ Evolução para plataforma
▸ Integração com outras linguagens
Agenda
▸ Monolitos e sistemas legados
▸ Porque micro serviços?
▸ Estratégias de adoção / migração
▸ QA
▸ DevOps
1.
MONOLITOS E
SISTEMAS
LEGADOS
“Você sabe o que significa legado?
É o que você deixa para seus filhos
e para os filhos dos seus filhos.
É o que resta de você depois que
você se for.
Evolução do legado
▸ Evolução gradativa
▸ Refactoring e testes
▸ Modernização da aplicação
▸ Adoção de novas tecnologias de
comunicação
▸ Lento e gradual
▸ Longo prazo para refletir as mudanças
Fonte: https://www.amazon.com/FEATHERS-WORK-EFFECT-LEG-
CODE/dp/0131177052
Evolução do legado:
Fazer o novo
▸ O novo legado?
▸ O valor do legado
▸ Investimento ao longo
do tempo
▸ Existência conjunta
▸ Riscos
Fonte: http://bonkersworld.net/building-software
O melhor dos dois mundos
E se fosse possível fazer um novo, evoluindo o velho,
adotando novas tecnologias e evoluindo o legado?
Código Legado Novas implementações / Serviços
Evolutionary Architecture
Mas e a parte de microserviços?
Fonte: https://www.thoughtworks.com/books/building-evolutionary-architectures Fonte: https://www.thoughtworks.com/books/building-microservices
2.
POR QUE MICRO
SERVIÇOS?
Pontos positivos
▸ Escalabilidade
▸ Possibilidade de usar a ferramenta certa para
cada serviço
▸ Menor tempo de implementação e correções
▸ Serviços de escopo contido e controlado
(testabilidade)
▸ Continuous Delivery
Pontos negativos
▸ Necessidade de infraestrutura maior
▸ Dificuldade maior nos testes de integração
▸ Necessidade de monitoramento e automação
3.
ESTRATÉGIAS DE
ADOÇÃO
“Lei de Conway
Organizações que desenvolvem
sistemas de software tendem a
produzir sistemas que são
cópias das estruturas de
comunicação dessas
organizações.
Cenário Inicial
Grande Monolito
Nossa
Funcionalidade
Cenário Inicial - Visão completa
Nossa
Funcionalidade
Nossa
Funcionalidade
Nossa
Funcionalidade
Nossa
Funcionalidade
Versão 1 Versão 2
Versão 3 Versão N
Passo 1
Lidando com as dependências
Extrair as dependências comuns para serem
utilizadas por ambas as aplicações.
Como exportar com NuGet
Extração das bibliotecas
Framework
Comum
Biblioteca
de Logs
Grande Monolito
Nossa
Funcionalidade
Passo 2
Extraindo os fontes
Cópia sem
Alterações!
Framework
Comum
Biblioteca
de Logs
Grande Monolito
Nossa
Funcionalidade
Nossa
Funcionalidade
Passo 2
Migrando os fontes para versão Delphi Tokyo
Framework
Comum
Biblioteca
de Logs
Grande Monolito
Nossa
Funcionalidade
Nossa
Funcionalidade
Win32
Win64
Linux64
Adequação
e Melhoria
dos Testes
Passo 2
O que aprendemos migrando os
fontes para a versão Delphi Tokyo
▸ Uso de namespaces é excelente para identificar e
gerir cada dependência e serviço.
▸ Multiplataforma ainda precisa de {$IFDEF PLATFORM}
▸ Testes executados em cada plataforma (DUnitX)
▸ TObjectList não é multiplataforma,
mas o TObjectList<TObject> é.
Passo 3
Transformando funcionalidade em Serviço
Framework
Comum
Biblioteca
de Logs
Nosso
ServiçoGrande Monolito
Nossa
Funcionalidade
Passo 3
DockerFile
Passo 4 - Mais serviços surgiram
Novo
Serviço 1
Novo
Serviço 2
Framework
Comum
Biblioteca
de Logs
Grande Monolito
Nosso
Serviço
4.
QA
A importância da automação dos
testes End2End
▸ Garantem os contratos
▸ Garantem que a integração entre os serviços
continue funcionando
▸ Continuam a existir mesmo com mudança de
tecnologia
▸ Servem de documentação
Nosso
Serviço
Estratégias de QA
▸ Metodologia Ágil - ATDD
▸ Testes unitários (TDD) e Code Review
▸ Testes funcionais com framework com Robot
Framework
▸ Documentação viva (BDD executável)
▸ Testes não-funcionais com Locust e Python
Metodologia ATDD
Acceptance Test-Driven Development
▸ Critérios de Aceitação definidos em BDD (Behavior
Driven Development)
▸ Refinamento dos critérios em time (PO + DEV + QA)
▸ TDD
▸ Os testes automatizados funcionais se tornam a
documentação viva do produto
▸ Definition of Done: 100% dos critérios de aceitação
entregue automatizados
Metodologia ATDD
Acceptance Test-Driven Development
Metodologia ATDD
Acceptance Test-Driven Development
Testes Unitários e Code Review
▸ Testes unitários com DUnitX (multiplataforma)
▸ Implementação suportando testes
▹ Uso intensivo de interfaces para facilitar
Mocks
▸ TDD e Test First
▸ Code Review: Oportunidade para outros DEVs
acompanharem o projeto
▸ Code Review: Boas práticas compartilhadas e
feedbacks de possíveis problemas
Automação dos Testes Funcionais
Robot Framework
▸ Open Source: Framework Python, muito bem mantido pela
comunidade e documentação abrangente
▸ Genérico: permite automação de qualquer sistema (web,
serviço, desktop, mobile, etc)
▸ Produtivo: Possui diversas bibliotecas com códigos prontos
para automação de testes (RequestsLibrary, Collections,
RabbitMQLibrary, RedisLibrary, MongoDBLibrary, etc)
▸ Documentação viva: A automação é feita por linguagem mais
humana e suporta o BDD
▸ Virtualização dos Serviços: Utilização de mocks para testes
End2End
Automação dos Testes Não-Funcionais
Locust e Python
▸ Load Testing: testes de carga contra os micro serviços
▹ Utilizamos o LOCUST open source em python
▹ Se o micro serviço se comunicava via mensageria,
utilizamos API REST auxiliar para enviar e receber
requisições
▸ Memory check:
▹ Captura do status da memória do container após várias
rodadas de teste (Linux) e FastMM4 (Windows)
▹ Análise do vazamento de memória via script Python
(Linux)
5.
DEVOPS
Integração Contínua
Continuous Integration
https://aws.amazon.com/pt/devops/continuous-integration/
https://aws.amazon.com/pt/devops/continuous-integration/
Entrega Contínua
Continuous Delivery
Entrega Contínua
Continuous Delivery
Entrega Contínua
Continuous Delivery
Implantação Contínua
Continuous Deployment
https://aws.amazon.com/pt/devops/continuous-integration/
O que utilizamos
Robot Framework
THANKS!
Perguntas?
Vocês podem nos achar em:
https://github.com/felipecaputo
https://github.com/mayribeirofernandes
https://www.linkedin.com/in/felipewcaputo/
https://www.linkedin.com/in/mayfernandes/
felipe.caputo@gmail.com
ammmayara@hotmail.com

Mais conteúdo relacionado

Mais procurados

UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
Stefan Teixeira
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
Leonardo Kobus
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
s4nx
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
Universidade Federal Rural do Semi Arido
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
João Carlos Ottobboni
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
Gilmar Pupo
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
tdc-globalcode
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
Michel Cordeiro
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Marcos Pessoa
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testes
kinow
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
Norberto Santos
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
Felipe Santos
 
Qualidade de Software: Ferramentas de apoio
Qualidade de Software: Ferramentas de apoioQualidade de Software: Ferramentas de apoio
Qualidade de Software: Ferramentas de apoio
Alex Camargo
 
Jenkins
JenkinsJenkins
Jenkins
Emmanuel Neri
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do Java
Fernando Boaglio
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
Felipe
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
Alex Camargo
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
Cloves da Rocha
 
Jenkins workshop
Jenkins workshopJenkins workshop
Jenkins workshop
Felipe Joel da Rosa
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
SOL7 - Tecnologia de Decisão
 

Mais procurados (20)

UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
 
Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testes
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
 
Qualidade de Software: Ferramentas de apoio
Qualidade de Software: Ferramentas de apoioQualidade de Software: Ferramentas de apoio
Qualidade de Software: Ferramentas de apoio
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do Java
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
 
Jenkins workshop
Jenkins workshopJenkins workshop
Jenkins workshop
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 

Semelhante a Desconstruindo monolitos - Construindo microservicos em Delphi

Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a ponta
Rodrigo Kono
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
Alefe Variani
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
Edson Celio
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
Humberto Streb
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
Grupo de Testes Carioca
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
Ricardo Martins ☁
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
Qualister
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
Júlio de Lima
 
DevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamenteDevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamente
Randerson Oliveira Melville Rebouças
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
Jackson F. de A. Mafra
 
Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
Leandro Kersting de Freitas
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
Renato Groff
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e tools
Paulo Mattos
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
José Bringel Filho
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Renato Groff
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Renato Groff
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
Jaqueline Ramos
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
Renato Groff
 
Tees Final
Tees FinalTees Final
Tees Final
Marcus Oliveira
 

Semelhante a Desconstruindo monolitos - Construindo microservicos em Delphi (20)

Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a ponta
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
DevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamenteDevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamente
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e tools
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Tees Final
Tees FinalTees Final
Tees Final
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (8)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

Desconstruindo monolitos - Construindo microservicos em Delphi

  • 1. Desconstruindo Monolitos Como construir micro serviços Delphi com agilidade e qualidade
  • 2. Hello World!! ✋ Felipe Caputo Desenvolvedor sênior e líder técnico na Softplan, atualmente sou responsável pelo desenvolvimento de soluções para integração entre aplicações dos órgãos da justiça no País. May Fernandes Analista de Testes com mais de 08 anos de experiência com testes de aplicações desktop e micro-serviços. Atualmente trabalho com processos de automação de testes e QAOps na Softplan.
  • 3. Softplan ▸ Principais sistemas em Delphi com mais de 20 anos ▸ Milhares de usuários e milhões de linhas de código ▸ Dezenas de versões ▸ Diversas integrações ▸ Evolução para plataforma ▸ Integração com outras linguagens
  • 4. Agenda ▸ Monolitos e sistemas legados ▸ Porque micro serviços? ▸ Estratégias de adoção / migração ▸ QA ▸ DevOps
  • 6. “Você sabe o que significa legado? É o que você deixa para seus filhos e para os filhos dos seus filhos. É o que resta de você depois que você se for.
  • 7. Evolução do legado ▸ Evolução gradativa ▸ Refactoring e testes ▸ Modernização da aplicação ▸ Adoção de novas tecnologias de comunicação ▸ Lento e gradual ▸ Longo prazo para refletir as mudanças Fonte: https://www.amazon.com/FEATHERS-WORK-EFFECT-LEG- CODE/dp/0131177052
  • 8. Evolução do legado: Fazer o novo ▸ O novo legado? ▸ O valor do legado ▸ Investimento ao longo do tempo ▸ Existência conjunta ▸ Riscos Fonte: http://bonkersworld.net/building-software
  • 9. O melhor dos dois mundos E se fosse possível fazer um novo, evoluindo o velho, adotando novas tecnologias e evoluindo o legado? Código Legado Novas implementações / Serviços Evolutionary Architecture
  • 10. Mas e a parte de microserviços? Fonte: https://www.thoughtworks.com/books/building-evolutionary-architectures Fonte: https://www.thoughtworks.com/books/building-microservices
  • 12. Pontos positivos ▸ Escalabilidade ▸ Possibilidade de usar a ferramenta certa para cada serviço ▸ Menor tempo de implementação e correções ▸ Serviços de escopo contido e controlado (testabilidade) ▸ Continuous Delivery
  • 13. Pontos negativos ▸ Necessidade de infraestrutura maior ▸ Dificuldade maior nos testes de integração ▸ Necessidade de monitoramento e automação
  • 15. “Lei de Conway Organizações que desenvolvem sistemas de software tendem a produzir sistemas que são cópias das estruturas de comunicação dessas organizações.
  • 17. Cenário Inicial - Visão completa Nossa Funcionalidade Nossa Funcionalidade Nossa Funcionalidade Nossa Funcionalidade Versão 1 Versão 2 Versão 3 Versão N
  • 18. Passo 1 Lidando com as dependências Extrair as dependências comuns para serem utilizadas por ambas as aplicações.
  • 20. Extração das bibliotecas Framework Comum Biblioteca de Logs Grande Monolito Nossa Funcionalidade
  • 21. Passo 2 Extraindo os fontes Cópia sem Alterações! Framework Comum Biblioteca de Logs Grande Monolito Nossa Funcionalidade Nossa Funcionalidade
  • 22. Passo 2 Migrando os fontes para versão Delphi Tokyo Framework Comum Biblioteca de Logs Grande Monolito Nossa Funcionalidade Nossa Funcionalidade Win32 Win64 Linux64 Adequação e Melhoria dos Testes
  • 23. Passo 2 O que aprendemos migrando os fontes para a versão Delphi Tokyo ▸ Uso de namespaces é excelente para identificar e gerir cada dependência e serviço. ▸ Multiplataforma ainda precisa de {$IFDEF PLATFORM} ▸ Testes executados em cada plataforma (DUnitX) ▸ TObjectList não é multiplataforma, mas o TObjectList<TObject> é.
  • 24. Passo 3 Transformando funcionalidade em Serviço Framework Comum Biblioteca de Logs Nosso ServiçoGrande Monolito Nossa Funcionalidade
  • 26. Passo 4 - Mais serviços surgiram Novo Serviço 1 Novo Serviço 2 Framework Comum Biblioteca de Logs Grande Monolito Nosso Serviço
  • 27. 4. QA
  • 28.
  • 29. A importância da automação dos testes End2End ▸ Garantem os contratos ▸ Garantem que a integração entre os serviços continue funcionando ▸ Continuam a existir mesmo com mudança de tecnologia ▸ Servem de documentação Nosso Serviço
  • 30. Estratégias de QA ▸ Metodologia Ágil - ATDD ▸ Testes unitários (TDD) e Code Review ▸ Testes funcionais com framework com Robot Framework ▸ Documentação viva (BDD executável) ▸ Testes não-funcionais com Locust e Python
  • 31. Metodologia ATDD Acceptance Test-Driven Development ▸ Critérios de Aceitação definidos em BDD (Behavior Driven Development) ▸ Refinamento dos critérios em time (PO + DEV + QA) ▸ TDD ▸ Os testes automatizados funcionais se tornam a documentação viva do produto ▸ Definition of Done: 100% dos critérios de aceitação entregue automatizados
  • 34. Testes Unitários e Code Review ▸ Testes unitários com DUnitX (multiplataforma) ▸ Implementação suportando testes ▹ Uso intensivo de interfaces para facilitar Mocks ▸ TDD e Test First ▸ Code Review: Oportunidade para outros DEVs acompanharem o projeto ▸ Code Review: Boas práticas compartilhadas e feedbacks de possíveis problemas
  • 35. Automação dos Testes Funcionais Robot Framework ▸ Open Source: Framework Python, muito bem mantido pela comunidade e documentação abrangente ▸ Genérico: permite automação de qualquer sistema (web, serviço, desktop, mobile, etc) ▸ Produtivo: Possui diversas bibliotecas com códigos prontos para automação de testes (RequestsLibrary, Collections, RabbitMQLibrary, RedisLibrary, MongoDBLibrary, etc) ▸ Documentação viva: A automação é feita por linguagem mais humana e suporta o BDD ▸ Virtualização dos Serviços: Utilização de mocks para testes End2End
  • 36. Automação dos Testes Não-Funcionais Locust e Python ▸ Load Testing: testes de carga contra os micro serviços ▹ Utilizamos o LOCUST open source em python ▹ Se o micro serviço se comunicava via mensageria, utilizamos API REST auxiliar para enviar e receber requisições ▸ Memory check: ▹ Captura do status da memória do container após várias rodadas de teste (Linux) e FastMM4 (Windows) ▹ Análise do vazamento de memória via script Python (Linux)
  • 44.
  • 45. THANKS! Perguntas? Vocês podem nos achar em: https://github.com/felipecaputo https://github.com/mayribeirofernandes https://www.linkedin.com/in/felipewcaputo/ https://www.linkedin.com/in/mayfernandes/ felipe.caputo@gmail.com ammmayara@hotmail.com