SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
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.
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

Mais procurados

Clean architecture em NodeJS
Clean architecture em NodeJSClean architecture em NodeJS
Clean architecture em NodeJSRodrigo Souza
 
Monitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsMonitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsRenato Groff
 
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net CoreTDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Coretdc-globalcode
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015Bruno Murawski
 
Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)WSO2
 
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
Padrões de deploy para DevOps e Entrega Contínua, por Danilo SatoPadrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
Padrões de deploy para DevOps e Entrega Contínua, por Danilo SatoThoughtworks
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1slides_teltools
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1WSO2
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...André Dias
 
Agile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao DeployAgile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao DeployEduardo Cini
 
Azure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoAzure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoArmando Junior
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasRaul Leite
 

Mais procurados (20)

Clean architecture em NodeJS
Clean architecture em NodeJSClean architecture em NodeJS
Clean architecture em NodeJS
 
Monitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsMonitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application Insights
 
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net CoreTDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Core
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
Padrões de deploy para DevOps e Entrega Contínua, por Danilo SatoPadrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
DevOps Days SP 2019
DevOps Days SP 2019DevOps Days SP 2019
DevOps Days SP 2019
 
Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1Introdução ao WSO2 API Microgateway 3.1
Introdução ao WSO2 API Microgateway 3.1
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
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
 
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
TheDevConf - Implantando Arquitetura de Microsserviços em Alta Disponibilidad...
 
Agile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao DeployAgile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao Deploy
 
Azure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoAzure DevOps - Um case de sucesso
Azure DevOps - Um case de sucesso
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
 

Semelhante a [TDC-Arquitetura Java] Pastoreando Gatos

[TDC - Testes] Estratégia de automação dos testes em microserviços
[TDC - Testes] Estratégia de automação dos testes em microserviços [TDC - Testes] Estratégia de automação dos testes em microserviços
[TDC - Testes] Estratégia de automação dos testes em microserviços Rodrigo Stefani Domingues
 
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 SoftwareNorberto Santos
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indianahellequin
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
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
 
DataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigDataDataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigDataEduardo Hahn
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsRicardo Martins ☁
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoCaio Candido
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataDataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataEduardo Hahn
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 

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

[TDC - Testes] Estratégia de automação dos testes em microserviços
[TDC - Testes] Estratégia de automação dos testes em microserviços [TDC - Testes] Estratégia de automação dos testes em microserviços
[TDC - Testes] Estratégia de automação dos testes em microserviços
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
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
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
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
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Projeto Indiana
Projeto IndianaProjeto Indiana
Projeto Indiana
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
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
 
DataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigDataDataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigData
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como Código
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataDataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 

Mais de Rodrigo Stefani Domingues

[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructureRodrigo Stefani Domingues
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Rodrigo Stefani Domingues
 
[Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora![Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora!Rodrigo Stefani Domingues
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida realRodrigo Stefani Domingues
 

Mais de Rodrigo Stefani Domingues (6)

[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure
 
Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017Quebrando o monolito com microserviços - TDC 2017
Quebrando o monolito com microserviços - TDC 2017
 
[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental[qCon Rio 2015] Arquitetura Incremental
[qCon Rio 2015] Arquitetura Incremental
 
[Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora![Devcamp] usando programação funcional agora!
[Devcamp] usando programação funcional agora!
 
[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real[Polis Hyperlink ] Apache Camel na vida real
[Polis Hyperlink ] Apache Camel na vida real
 
[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real[Q con] apache camel e eip 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 rodrigosd@ciandt.com 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.
  • 23.
  • 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