SlideShare una empresa de Scribd logo
1 de 34
www.cdsinformatica.com.br
Você se preocupa com Performance
ou
é sempre Problema da Infra ?
• Mais de 25 anos de experiência no desenvolvimento de software
• Responsável por Pesquisa e Desenvolvimento na CDS Informática
• Microsoft MVP desde 2008
• Microsoft Regional Director
• Um dos criadores do projeto open source CodeCracker: www.github.com/code-cracker
• Mantenedor do projeto open source BoletoNet: www.github.com/boletonet
• Blog: www.carloscds.net
• GitHub: www.github.com/carloscds
Visit
• Qual sua primeira reação ?
• A máquina é ruim, tem que melhorar
• A rede está com problema
• A internet é muito lenta
• Usuário não sabe usar a aplicação
• 10 mil usuários ? Ele nunca tinha me falado isto…
• Na minha máquina funciona!!!
Visit
• Diagnóstico
• Telemetria
• Profiler
• Melhorar o código, ou seja, estudar mais!!!
Visit
• O quê você guarda na sessão ?
• E onde está armazenada a sessão ?
• Está na memória ou em um banco de dados ?
• Se não for um banco noSQL, mude agora! Por exemplo: Mongo, RedisCache, etc
• Um caso real: 16 servidores IIS com um banco de sessão!
Visit
• Já viu as queries que sua aplicação executa ?
• Já analizou as queries que o seu código no ORM estão produzindo ?
Você está usando índices corretamente ?
VisitVisit
• Melhora a performance, mas use com cuidado!
Demo – SQL
Visit
• Utilize AsNoTracking() para consultas
• O objeto não ficará sob o controle do Contexto (Change Tracking)
Visit
• Você coloca ToList() em tudo ?
• Está forçando a execução da query no Banco antes do necessário!
Visit
• Que comando será enviado para o banco neste código ?
Visit
• E neste ?
Visit
• Está em camadas ? Desligue o Lazy Loading e o Proxy
• Por exemplo: Uma API retornando dados!!!
• Isto porque o contexto deixa de existir entre as camadas!
Visit
• Conheça o Dapper
• Criado pelo StackExchange
• https://github.com/StackExchange/Dapper
• https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib
Visit
• O que é ?
• Exemplos: Visual Studio Profiler, Ants Profiler, JProfiler
Demo – Profiler
Visit
• Você tem isto na sua aplicação ?
Visit
• Monitore sua aplicação em tempo real
http://bit.ly/2gmS7TH
Visit
• Monitore seu JavaScript
Visit
• Monitore suas Apps
Visit
• Monitore suas Apps
Visit
• Monitore seus ambientes
Demo
Visit
• Você já viu o tráfego da sua aplicação ?
• Já viu o tamanho dos arquivos ?
• Você usa minificação ?
• Aperte o F12 do Chrome e veja…
Visit
• Não é porque seu projeto roda bem localmente que isto irá acontecer na nuvem!
• Otimize os recursos, minifique, cuide do tamanho dos arquivos!
• Cuide da qualidade do seu código, use ferramentas como SonarQube
• Utilize telemetria como um aliado, principalmente durante o desenvolvimento!
Visit
• https://docs.microsoft.com/pt-br/azure/redis-cache/cache-aspnet-session-state-provider
• https://blogs.msdn.microsoft.com/fcatae/2010/10/05/como-usar-select-with-nolock-para-melhorar-a-performance/
• http://carloscds.net/2014/09/dapperum-micro-orm-muito-interessante-2/
• https://docs.microsoft.com/en-us/azure/application-insights/app-insights-platforms
• http://rollbar.com
• http://fabric.io
• http://hockeyapp.net
• https://developers.google.com/web/fundamentals/performance/
www.cdsinformatica.com.br
www.carloscds.net

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Melhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magentoMelhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magento
 
Desenvolvendo aplicações de comunicação em tempo real com ASP.NET SignalR
Desenvolvendo aplicações de comunicação em tempo real com ASP.NET SignalRDesenvolvendo aplicações de comunicação em tempo real com ASP.NET SignalR
Desenvolvendo aplicações de comunicação em tempo real com ASP.NET SignalR
 
Onde posso ir como “dev”
Onde posso ir como “dev”Onde posso ir como “dev”
Onde posso ir como “dev”
 
Introdução ao kotlin
Introdução ao kotlinIntrodução ao kotlin
Introdução ao kotlin
 
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
 
Criando sua stack de deploy php com git, jenkins e ansible
Criando sua stack de deploy php com git, jenkins e ansibleCriando sua stack de deploy php com git, jenkins e ansible
Criando sua stack de deploy php com git, jenkins e ansible
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
Agilizando seus projetos em wordpress com underscores
Agilizando seus projetos em wordpress com underscoresAgilizando seus projetos em wordpress com underscores
Agilizando seus projetos em wordpress com underscores
 
Backend na nuvem com docker
Backend na nuvem com dockerBackend na nuvem com docker
Backend na nuvem com docker
 
Mercado Web
Mercado WebMercado Web
Mercado Web
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Arquiteturas Serverless + Azure Functions - Semana FCI - Mackenzie - Outubro-...
Arquiteturas Serverless + Azure Functions - Semana FCI - Mackenzie - Outubro-...Arquiteturas Serverless + Azure Functions - Semana FCI - Mackenzie - Outubro-...
Arquiteturas Serverless + Azure Functions - Semana FCI - Mackenzie - Outubro-...
 
ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 
The Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto AlegreThe Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto Alegre
 
Os Desafios no Cartola FC - React Conf 2020
Os Desafios no Cartola FC - React Conf 2020Os Desafios no Cartola FC - React Conf 2020
Os Desafios no Cartola FC - React Conf 2020
 
Novidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evoluçãoNovidades sobre o C# 7.0 e sua evolução
Novidades sobre o C# 7.0 e sua evolução
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Front-end Tooling - Dicas de ferramentas para melhorar a produtividade
Front-end Tooling - Dicas de ferramentas para melhorar a produtividadeFront-end Tooling - Dicas de ferramentas para melhorar a produtividade
Front-end Tooling - Dicas de ferramentas para melhorar a produtividade
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
 

Similar a Voce se preocupa com performance ou é sempre problema da infra

Similar a Voce se preocupa com performance ou é sempre problema da infra (20)

Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Como colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHubComo colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHub
 
Git e a importância de versionar um projeto
 Git e a importância de versionar um projeto Git e a importância de versionar um projeto
Git e a importância de versionar um projeto
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Web debugging proxies
Web debugging proxiesWeb debugging proxies
Web debugging proxies
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas Práticas
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Desenvolvimento Web
Desenvolvimento WebDesenvolvimento Web
Desenvolvimento Web
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Software
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
NoSQL e Python
NoSQL e PythonNoSQL e Python
NoSQL e Python
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 

Más de CDS

Más de CDS (20)

Web App Container
Web App ContainerWeb App Container
Web App Container
 
Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de Memória
 
Azure DevOps Pipeline
Azure DevOps PipelineAzure DevOps Pipeline
Azure DevOps Pipeline
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
C Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaC Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de Memória
 
Visual Studio Code
Visual Studio CodeVisual Studio Code
Visual Studio Code
 
MVPConf - Azure Functions
MVPConf - Azure FunctionsMVPConf - Azure Functions
MVPConf - Azure Functions
 
Microsoft Operations Management Suite - OMS
Microsoft Operations Management Suite - OMSMicrosoft Operations Management Suite - OMS
Microsoft Operations Management Suite - OMS
 
C# 7
C# 7C# 7
C# 7
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
 
.Net Core - Visão Geral
.Net Core - Visão Geral.Net Core - Visão Geral
.Net Core - Visão Geral
 
Raspberry PI
Raspberry PIRaspberry PI
Raspberry PI
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
 
Application Insights
Application InsightsApplication Insights
Application Insights
 
Palestra Roslyn - TechEd 2015
Palestra Roslyn - TechEd 2015Palestra Roslyn - TechEd 2015
Palestra Roslyn - TechEd 2015
 
Microsoft Azure Overview
Microsoft Azure OverviewMicrosoft Azure Overview
Microsoft Azure Overview
 
C# 6
C# 6C# 6
C# 6
 
Application Insights
Application Insights Application Insights
Application Insights
 

Voce se preocupa com performance ou é sempre problema da infra