SlideShare uma empresa Scribd logo
Globalcode – Open4education
Arquitetura Java – Pastoreando
gatos
Rodrigo Stefani Domingues
Principal Architect na CI&T
Globalcode – Open4education
$~: whoami
Desenvolvedor a 12 anos
Java a 9 anos
Na CI&T a 6 anos
Microserviços a 3 anos
Nerd
rodrigosd@ciandt.com https://github.com/rsdomingues
ciandt.com
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
Comunicação
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
Resolvendo alguns
problemas
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Conn Serv
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
CONFIG
SERVER
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
POST: {"items": [{...}],{...},{...},{...},{...}}
POST: {"item": {...}}
POST: {"item": {...}}
POST: {"item": {...}}
POST: {"item": {...}}
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
[TDC-Arquitetura Java] Pastoreando Gatos
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
Estratégia de testes
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
27
- A responsabilidade do teste unitário é de garantir a
unidade (menor elemento), em nosso caso os
métodos e funções, logo quaisquer dependências
deles devem ser mockados.
- Cobertura de 100% do código → The broken
window theory
- Cobrir 100% não significa cobrir todo código
- Testes sociavel
- Foco no código "util"
"O teste de unidade exercita a menor parte do software testável
na aplicação para determinar se ele se comporta conforme o
esperado."
Globalcode – Open4education
28
"O teste de integração verifica os caminhos de comunicação e as
interações entre os componentes para detectar defeitos na
interface."
- Os testes de integração são responsáveis por garantir o
comportamento das integrações, tanto no que se refere ao
comportado esperado quanto a tolerância a falhas nas integrações.
- Importante notar que devemos garantir o funcionamento das
partes do código desenvolvido e não do framework usado para as
conexões. Não devemos testar estes frameworks
- Este teste deve ser feito o mais próximo possível do código,
em muitos casos é usado o mesmo conjunto de ferramentas
de teste que o teste unitário.
- Os elementos de integração reais devem ser mockados via
ferramentas ou no caso de database por estratégia de
in-memory database.
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
30
- Os testes de componente deve ser realizado com o
componente em seu estado completo e "rodando" em
um ambiente controlado. Onde seja possível determinar
todas as condições de uso.
- O teste de componente deve conter as variações
funcionais tanto de recursos públicos e recursos
internos/administrativos.
- Muitos cenários envolvem chamadas
externas e persistência em elementos de
dados, neste caso deve ser feito uso de
mock e elementos de dados vazios
"O teste de componente limita o escopo do software a uma parte
do sistema testado."
Globalcode – Open4education
31
"O teste de end-to-end verifica se um sistema atende aos
requisitos externos e atinge seus objetivos, testando todo o
sistema, de ponta a ponta."
- O teste de end-to-end (e2e) visa garantir
que o comportamento do sistema de ponta
a ponta está como esperado/especificado
do ponto de vista da jornada do usuário.
- Devido a complexidade de se criar um
ambiente conectado com massa de dados
para testes, os casos de teste incluídos no
e2e precisam ser cuidadosamente
avaliados para garantir que a gestão da
massa de dados seja possível.
- Dado a complexidade dos testes, se faz
necessário também uma análise cuidadosa
de como realizar o teste e garantir o
cenário para que não seja data specific e
ao mesmo tempo garanta o resultado.
ciandt.com
Globalcode – Open4education
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, Fevereiro 2017.
Testes unitários, integração e componente estão conectados a elementos
da arquitetura e módulos
Testes end-to-end e exploratórios estão ligados a jornadas dos usuários e
não a módulos ou elementos específicos.
ciandt.com
Estratégia de Deploy
Globalcode – Open4education
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, Fevereiro 2017.
Desenvolvimento e teste
de features e bugs em
ambiente local;
Criação testes unitários,
Integração e componentes
automatizados;
Definições de feature
toggle e analytics para
acompanhamento da
feature em produção;
Versionamento em
repositório na cloud para
garantia de disponibilidade;
Uso de SCM que garanta o
processo desenvolvimento e
o que sobe para produção
através de Trunk Based
Development;
Toda geração de pacote é feita
de forma automatizada e a
cada commit;
Validação das features
utilizando a piramide de testes
automatizados;
Análise estática de código,
cobertura de testes
configurados para o fluxo;
Processos documentados
através de código, e tornam-se
parte da aplicação;
Validação das features/bugs
em ambiente similar ao
produtivo (Infra,
componentes de
arquitetura);
Testes exploratórios
realizados por membro do
time dedicado a QA;
Gestão da qualidade, com
acompanhamento de
retrabalho, impacto para o
negócio e causa raiz;
AWS CodeCommit AWS CodePipeline
Globalcode – Open4education
Todo código é versionado na
Amazon, sendo possível ser
replicado para outros repositórios
A cada atualização feita pelo time
o fluxo automatizado é executado,
gerando uma nova versão da
aplicação, testes unitários e
qualidade do código são
avaliadas automaticamente, em
caso de quebra, a build para e o
time é notificado.
Testes de componentes e
performance, são executados em
ambiente provisionado
exclusivamente para esta
execução de teste
Testes End 2 End executados em
ambiente dedicado, similar a
ambiente produtivo, garantindo
jornadas e fluxos principais como
especificado.
Deployment automatizado e
simultaneo para o ambiente de QA,
HOM
Release train diário para ambiente
produtivo, com features novas e
em desenvolvimento desabilitadas,
área de negócio é responsável por
habilitar as features (soft launch)
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, Fevereiro 2017.
Globalcode – Open4education
"The Need For Speed: Drive Velocity And Quality With DevOps"
Forrester, Fevereiro 2017.
ciandt.com
Operação
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
Globalcode – Open4education
1. Quais são as funcionalidades mais acessadas? Qual o tempo de resposta
dessas funcionalidades críticas?
2. Quantos usuários estão acessando o sistema simultaneamente e de qual
região (IP)?
3. Qual foi a quantidade de erros não tratados nos últimos dias
(instabilidade)? Onde estão os logs?
4. Qual é o tempo gasto para salvar um carregamento?
5. Quantos eventos são gerados por dia? Qual é o horário de pico de geração
de eventos?
6. Existe degradação no tempo de resposta nos períodos de pico?
Globalcode – Open4education
Globalcode – Open4education
"Microservices architecture is an approach for building
distributed applications that support agile and scalable
delivery."
Gartner, Março 2017.
ciandt.com
Globalcode – Open4education
$~: git clone awsome_code
Thank you!
http://vempra.ciandt.com

Mais conteúdo relacionado

PDF
DevSecOps - CI/CD com Pentest e Análise de Vulnerabilidades
PDF
Containers e DevOps
PDF
Continuous Delivery com ArgoCD
PPTX
Atualizando versões de API externas sem medo
PDF
Atualizando versões de API externas sem medo - TDC-SP 2018
PDF
DevSecOps - Workshop do Bem
PDF
Latinoware - Quarkus io cloud native apps
DevSecOps - CI/CD com Pentest e Análise de Vulnerabilidades
Containers e DevOps
Continuous Delivery com ArgoCD
Atualizando versões de API externas sem medo
Atualizando versões de API externas sem medo - TDC-SP 2018
DevSecOps - Workshop do Bem
Latinoware - Quarkus io cloud native apps

Mais procurados (20)

PPTX
Clean architecture em NodeJS
PPT
Monitorando serviços REST com o Application Insights
PPTX
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
PDF
TDC2016SP - Trilha Microservices
PPT
Apresentação TDC2015
PDF
Publicando WSO2 API Manager no Kubernetes (Portuguese)
PPT
Arquitetura Limpa em .NET Core
PDF
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
PPT
TDC2016SP - Trilha Microservices
PPSX
DevOps Days SP 2019
PPTX
Teltools - Fábrica de Software - Resumida - V1
PDF
Apresentacao dev ops
PDF
DevOps & Docker com a stack Microsoft
PDF
Introdução ao WSO2 API Microgateway 3.1
PDF
TDC2016SP - Trilha Microservices
PPTX
DevOps: Entregando software e serviços rapidamente
PPT
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
PDF
Agile Testing - Qualidade do Discovery ao Deploy
PPTX
Azure DevOps - Um case de sucesso
PDF
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Clean architecture em NodeJS
Monitorando serviços REST com o Application Insights
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
TDC2016SP - Trilha Microservices
Apresentação TDC2015
Publicando WSO2 API Manager no Kubernetes (Portuguese)
Arquitetura Limpa em .NET Core
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
TDC2016SP - Trilha Microservices
DevOps Days SP 2019
Teltools - Fábrica de Software - Resumida - V1
Apresentacao dev ops
DevOps & Docker com a stack Microsoft
Introdução ao WSO2 API Microgateway 3.1
TDC2016SP - Trilha Microservices
DevOps: Entregando software e serviços rapidamente
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
Agile Testing - Qualidade do Discovery ao Deploy
Azure DevOps - Um case de sucesso
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Anúncio

Semelhante a [TDC-Arquitetura Java] Pastoreando Gatos (20)

PDF
[TDC - Testes] Estratégia de automação dos testes em microserviços
PDF
Falando sobre DevOps no azure
PPTX
Tendências e Dicas para o Desenvolvimento de Software
PPTX
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
PDF
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
PDF
Escalando apps com React e Type Script e SOLID
PPT
Projeto Indiana
PPTX
Testes automatizados.pptx
PPT
Monitorando serviços REST com o Application Insights e Distributed Tracing
PDF
DataOps: Estendendo as práticas de DevOps para BigData
PPTX
Iac & DevOps no Azure: Automatizando deployments
PDF
MIT DevOps IaC - Infra como Código
PDF
Um método para o desenvolvimento de software baseado em microsserviços
PDF
Phprs meetup - deploys automatizados com gitlab
PDF
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
PDF
Arquitetura de Microserviços
PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PPTX
Keynote Visual Studio Summit 2016
[TDC - Testes] Estratégia de automação dos testes em microserviços
Falando sobre DevOps no azure
Tendências e Dicas para o Desenvolvimento de Software
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Escalando apps com React e Type Script e SOLID
Projeto Indiana
Testes automatizados.pptx
Monitorando serviços REST com o Application Insights e Distributed Tracing
DataOps: Estendendo as práticas de DevOps para BigData
Iac & DevOps no Azure: Automatizando deployments
MIT DevOps IaC - Infra como Código
Um método para o desenvolvimento de software baseado em microsserviços
Phprs meetup - deploys automatizados com gitlab
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
BDD (Behavior-Driven Development) - Setembro/2015
Arquitetura de Microserviços
Test-Driven Development (TDD) utilizando o framework xUnit.net
Keynote Visual Studio Summit 2016
Anúncio

Mais de Rodrigo Stefani Domingues (6)

PDF
[2020 git lab commit] continuous infrastructure
PDF
Quebrando o monolito com microserviços - TDC 2017
PDF
[qCon Rio 2015] Arquitetura Incremental
PDF
[Devcamp] usando programação funcional agora!
PDF
[Polis Hyperlink ] Apache Camel na vida real
PDF
[Q con] apache camel e eip na vida real
[2020 git lab commit] continuous infrastructure
Quebrando o monolito com microserviços - TDC 2017
[qCon Rio 2015] Arquitetura Incremental
[Devcamp] usando programação funcional agora!
[Polis Hyperlink ] Apache Camel na vida real
[Q con] apache camel e eip na vida real

[TDC-Arquitetura Java] Pastoreando Gatos

  • 1. Globalcode – Open4education Arquitetura Java – Pastoreando gatos Rodrigo Stefani Domingues Principal Architect na CI&T
  • 2. Globalcode – Open4education $~: whoami Desenvolvedor a 12 anos Java a 9 anos Na CI&T a 6 anos Microserviços a 3 anos Nerd [email protected] https://github.com/rsdomingues
  • 4. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 5. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 7. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 8. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 10. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 11. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 12. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 13. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 14. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 15. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 16. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 17. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 19. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017. Conn Serv
  • 20. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017. CONFIG SERVER
  • 21. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017. POST: {"items": [{...}],{...},{...},{...},{...}} POST: {"item": {...}} POST: {"item": {...}} POST: {"item": {...}} POST: {"item": {...}}
  • 22. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 24. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 26. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 27. Globalcode – Open4education 27 - A responsabilidade do teste unitário é de garantir a unidade (menor elemento), em nosso caso os métodos e funções, logo quaisquer dependências deles devem ser mockados. - Cobertura de 100% do código → The broken window theory - Cobrir 100% não significa cobrir todo código - Testes sociavel - Foco no código "util" "O teste de unidade exercita a menor parte do software testável na aplicação para determinar se ele se comporta conforme o esperado."
  • 28. Globalcode – Open4education 28 "O teste de integração verifica os caminhos de comunicação e as interações entre os componentes para detectar defeitos na interface." - Os testes de integração são responsáveis por garantir o comportamento das integrações, tanto no que se refere ao comportado esperado quanto a tolerância a falhas nas integrações. - Importante notar que devemos garantir o funcionamento das partes do código desenvolvido e não do framework usado para as conexões. Não devemos testar estes frameworks - Este teste deve ser feito o mais próximo possível do código, em muitos casos é usado o mesmo conjunto de ferramentas de teste que o teste unitário. - Os elementos de integração reais devem ser mockados via ferramentas ou no caso de database por estratégia de in-memory database.
  • 29. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 30. Globalcode – Open4education 30 - Os testes de componente deve ser realizado com o componente em seu estado completo e "rodando" em um ambiente controlado. Onde seja possível determinar todas as condições de uso. - O teste de componente deve conter as variações funcionais tanto de recursos públicos e recursos internos/administrativos. - Muitos cenários envolvem chamadas externas e persistência em elementos de dados, neste caso deve ser feito uso de mock e elementos de dados vazios "O teste de componente limita o escopo do software a uma parte do sistema testado."
  • 31. Globalcode – Open4education 31 "O teste de end-to-end verifica se um sistema atende aos requisitos externos e atinge seus objetivos, testando todo o sistema, de ponta a ponta." - O teste de end-to-end (e2e) visa garantir que o comportamento do sistema de ponta a ponta está como esperado/especificado do ponto de vista da jornada do usuário. - Devido a complexidade de se criar um ambiente conectado com massa de dados para testes, os casos de teste incluídos no e2e precisam ser cuidadosamente avaliados para garantir que a gestão da massa de dados seja possível. - Dado a complexidade dos testes, se faz necessário também uma análise cuidadosa de como realizar o teste e garantir o cenário para que não seja data specific e ao mesmo tempo garanta o resultado.
  • 33. Globalcode – Open4education "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, Fevereiro 2017. Testes unitários, integração e componente estão conectados a elementos da arquitetura e módulos Testes end-to-end e exploratórios estão ligados a jornadas dos usuários e não a módulos ou elementos específicos.
  • 35. Globalcode – Open4education "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, Fevereiro 2017. Desenvolvimento e teste de features e bugs em ambiente local; Criação testes unitários, Integração e componentes automatizados; Definições de feature toggle e analytics para acompanhamento da feature em produção; Versionamento em repositório na cloud para garantia de disponibilidade; Uso de SCM que garanta o processo desenvolvimento e o que sobe para produção através de Trunk Based Development; Toda geração de pacote é feita de forma automatizada e a cada commit; Validação das features utilizando a piramide de testes automatizados; Análise estática de código, cobertura de testes configurados para o fluxo; Processos documentados através de código, e tornam-se parte da aplicação; Validação das features/bugs em ambiente similar ao produtivo (Infra, componentes de arquitetura); Testes exploratórios realizados por membro do time dedicado a QA; Gestão da qualidade, com acompanhamento de retrabalho, impacto para o negócio e causa raiz; AWS CodeCommit AWS CodePipeline
  • 36. Globalcode – Open4education Todo código é versionado na Amazon, sendo possível ser replicado para outros repositórios A cada atualização feita pelo time o fluxo automatizado é executado, gerando uma nova versão da aplicação, testes unitários e qualidade do código são avaliadas automaticamente, em caso de quebra, a build para e o time é notificado. Testes de componentes e performance, são executados em ambiente provisionado exclusivamente para esta execução de teste Testes End 2 End executados em ambiente dedicado, similar a ambiente produtivo, garantindo jornadas e fluxos principais como especificado. Deployment automatizado e simultaneo para o ambiente de QA, HOM Release train diário para ambiente produtivo, com features novas e em desenvolvimento desabilitadas, área de negócio é responsável por habilitar as features (soft launch) "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, Fevereiro 2017.
  • 37. Globalcode – Open4education "The Need For Speed: Drive Velocity And Quality With DevOps" Forrester, Fevereiro 2017.
  • 39. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 40. Globalcode – Open4education 1. Quais são as funcionalidades mais acessadas? Qual o tempo de resposta dessas funcionalidades críticas? 2. Quantos usuários estão acessando o sistema simultaneamente e de qual região (IP)? 3. Qual foi a quantidade de erros não tratados nos últimos dias (instabilidade)? Onde estão os logs? 4. Qual é o tempo gasto para salvar um carregamento? 5. Quantos eventos são gerados por dia? Qual é o horário de pico de geração de eventos? 6. Existe degradação no tempo de resposta nos períodos de pico?
  • 42. Globalcode – Open4education "Microservices architecture is an approach for building distributed applications that support agile and scalable delivery." Gartner, Março 2017.
  • 44. Globalcode – Open4education $~: git clone awsome_code