domingo, 16 de outubro de 2016

Acesso a Dados e Desempenho

A Microsoft continua investindo no desempenho do asp.net core e fazendo várias modificações nos fontes para garantir bons número na rodada 13 do techempower. O primeiro post que escrevi sobre isto foi o "Como está a preocupação do ASPNET 5(Core) em relação a desempenho?"

Em busca de comparar desempenhos, no acesso a dados, eles fizeram diferentes cenários tanto para consultas simples como consultas múltiplas:
DbConnection/DbCommand
EntityFramework
Dapper

Para fazer comparações dos números alcançados é possível baixar os fontes, executar e avaliar você mesmo, de toda forma vou esperar eles atualizarem os resultados e quando isso acontecer, atualizo o post.

O interessante de avaliar estes fontes é conhecer práticas que podem melhorar o desempenho de aplicações.

Entity Framework

Esta framework de ORM mantida pela Microsoft cria uma abstração que facilita muito o acesso a dados, mas como qualquer tipo de abstração pode gerar  problema de desempenho. Nos link Performance Considerations for Entity Framework 4, 5, and 6 e Entity Framework Performance and What You Can Do About It estão listadas boas práticas que podem melhorar o desempenho de acesso a dados.

Nos fontes do benchmark do asp.net core é possível ver o uso do NoTraking para os cenários de somente leitura de registros.

Dapper.Net

Este pacote, mantido pelo Stackoverflow, é um mapeamento de objeto simples para .net, com foco em desempenho. A ideia é escrever a query e chamar um dos 3 métodos estendidos do IDbConnection. Mais informações veja o Dapper no Github.

Nesta frame a query que vai ao banco é escrita numa string com o SQL, o que otimiza a execução o da query pelo Entity Framework, mas perde facilidades como a simples renomeações de colunas que o Linq e Entity Framework auxilia com um simples Refactor.

O post "Dapper vs Entity Framework vs ADO.NET Performance Benchmarking" fez um comparativo do Entity Framework, Dapper e ADO.net e, para o projeto e contexto específico da necessidade avaliada, a conclusão foi utilizar as duas frameworks:
The plan is to develop this project using Entity Framework, and later optimize to use Dapper.NET in certain scenarios where the system needs a performance boost. Yes, we are going with the slowest option to start.
"O plano é desenvolver este projeto usando Entity Framework, e depois otimizar para usar Dapper.NET em certos cenários onde o sistema precisa uma melhora de desempenho. Sim, nós vamos com a solução mais lenta para iniciar"  (Tradução Livre)

quarta-feira, 12 de outubro de 2016

Monitoramento de Aplicações e Serviços Web

O podcast do Hipsters ponto tech - Monitoramento: não receba mais telefonemas de madrugada! – Hipsters #12 convidou dois profissionais de experiência cloud para falar sobre monitoramento da saúde de aplicações Web.

O programa teve discussão muito rica e merece ser ouvido na íntegra. No fim do podcast eles elencaram três principais ferramentas, para quem não faz não faz nenhum monitoramento, que deveriam ser utilizadas e compartilho abaixo junto com outras alternativas:

  1. Monitoramento se o site está no ar
    1. Monitoramento de disponibilidade e desempenho:
      1. Pingdom
      2. Status Cake 
    2. Monitoramento interno da aplicação e insights
      1. New Relic
      2. Datadog
    3.  Coleta e análise de Logs
      1. Papertrail
      2. Loggly
      3. Logmatic.io

sábado, 1 de outubro de 2016

Executando o bash no Windows

A atualização de aniversário do Windows 10 oferece uma nova funcionalidade para desenvolvedores: o Bash shell baseado no Ubuntu, que permite executar programas linux direto no Windows.

Para instalar o Bash no Windows, além de atualizar o Windows 10, é necessário seguir este passo a passo.


Alguns comandos para ambientar no Bash se você é está acostumado a utilizar o prompt de comando DOS do windows :
  • Alterar diretório: cd no Bash e no DOS
  • Listar conteúdo de diretório:: ls no Bash, dir no DOS
  • Mover ou renomear arquivos: mv no Bash, move e rename no DOS
  • Copiar um arquivo: cp no Bash, copy no DOS
  • Excluir um arquivo: rm no Bash, del ou erase no DOS
  • Criar um diretório: mkdir no Bash, mkdir no DOS
  • Usar um editor de texto: vi ou nano no Bash, edit no DOS
    • Comandos básicos do vi 
      • dd para excluir uma linha
      • ESC e depois ZZ para salvar e sair
Outros comandos e atalhos interessantes:
  • host [url] (Exemplo host google.com.br): Informações do DNS para a Url passada
  • atalho ctrl + r: permite buscar no historico de comando algum utilizado e o utilizar
  • diff [file1] [file2]: mostra a diferença de conteúdo entre dois arquivos
  • man comando (exemplo man diff): mostra o manual do comando solicitado, que ajuda a entender como funciona, os argumentos.
  • less [file] : visualizar um arquivo, com opção de navegação, pesquisa (incluindo regex)
  • Há várias opções de edição de texto como o nano [file] ou vim [file] 
  • pwd : imprime o diretório corrente (print working directory)
Se quiser saber mais, veja este tutorial em inglês para ajudar na ambientação na linha de comando Linux em inglês. E na Udacity um curso gratuito que chama linha de comandos basicos do Linux, muito interativo, com legenda em português.