Medindo a performance do seu cluster Hadoop

O Hadoop não é uma aplicação web, um banco de dados e tampouco um webservice, você não conseguiria estressar um cluster Hadoop com teste de carga tradicional (afinal ele é feito pra suportar grandes volumes de dados).

Realizar um teste de estresse no cluster é um passo geralmente esquecido, porém muito importante quando você monta o seu ambiente hadoop, afinal, é importante ter um benchmark do cluster, ou seja, avaliar seu desempenho, executando uma variedade de tipos de jobs cada uma focado em um campo específico (indexação, consulta estatísticas preditivas, aprendizado de máquina, …).

Bons testes de stresse nos ajudam a:

  • Assegurar que o software atende suas exigências de performances.
  • Garantir que o serviço vai entregar um tempo de resposta rápido, mesmo sob uma alta demanda de serviço.
  • Alcançar os limites de escalabilidade, que por sua vez é útil para planejar os próximos passos do desenvolvimento.

A Intel lançou o HiBench, uma ferramenta dedicada para executar esse tipo de teste. Neste artigo, vamos falar sobre essa ferramenta.

Leia mais

Docker – Perguntas Frequentes

Após uma conversa dentro da OCTO sobre Docker versus LXC e Virtual Machines (VMs), este post contem algumas perguntas e respostas sobre os conceitos e as principais diferenças entre essas tecnologias.

Pergunta: Qual é a diferença entre VMs e containers LXC?

Uma Virtual Machine (VM) consiste em rodar diversos Sistemas Operacionais (SOs) clientes completos (Linux, Windows, BSD, …) em recursos de hardware compartilhados. Tais SOs podem ser diferentes em cada VM e também pode ser diferente do sistema operacional base, onde rodam as VMs. Cada kernel do Sistema Operacional virtualizado considera sua execução em um hardware comum, sendo ele genérico ou um driver hypervisor específico.
Leia mais

Ferramentas de análise estática para C# e .NET, NDepend em Profundidade

Como um arquiteto de software, muitas vezes eu tenho que analisar muitos código de aplicações, a fim de executar uma verificação de qualidade.

É um código de boa aparência? Qual a sua complexidade e cobertura de teste? Posso considerar o código como sustentável e com uma boa escalabilidade?

É claro que eu não vou gastar todo o meu tempo lendo cada arquivo-fonte, seria muito demorado e com certeza nada produtivo. Para isso, existem as ferramentas de análise estática de código fonte.

Leia mais

Prevendo o futuro com filtros colaborativos

É possível prever o futuro? Muitos acreditam que um homem chamado Michel de Nostradamus foi capaz. Suas previsões têm intrigado estudiosos por mais de quatrocentos anos.

Collaborative Filtering

Prever o futuro sempre foi um dos maiores desejos do ser humano, isso pode ser visto em quadrinhos, filmes de Hollywood, e até mesmo na cigana que te aborda na rua para ler a sua mão. A ciência afirma que prever o futuro pode ser uma capacidade humana: uma pesquisa empírica sugere que o cérebro possui uma certa capacidade de perceber o que está por vir…

Mas, falando em tecnologia, como os aplicativos atuais conseguem oferecer produtos e serviços como se tivessem “adivinhando” a necessidade do usuário? O Neo diria que eles usam os poderes do Oráculo, mas acredite, não é bem assim…

Leia mais

Até onde podemos ir com um desktop comum e uma aplicação Java reativa para web?

Programação reativaA tendência atual é que cada vez mais usuários fiquem conectados em todos os lugares e o tempo todo, muitas vezes em várias máquinas simultaneamente (desktop, tablet, celular). A promessa da programação reativa é prover recursos para suportar na mesma máquina muito mais conexões paralelas, e lidar com mais requisições por segundo, com menos threads e com muito menos memória e CPU do que os modos convencionais de programação. Para esse estudo nós criamos três versões de uma aplicação de teste:

  • versão servlet tradicional: uma servlet e chamada para um web service com Apache HttpClient
  • versão servlet assíncrona 3.0: uma servlet assíncrona e chamada para um web service com Apache HttpAsyncClient
  • versão 100% reativa: servidor HttpCore NIO e chamada de um web service com ApacheAsyncClient

Em seguida colocamos essas três versões sob testes de carga bastante agressivos para ver o que elas poderiam suportar. Leia mais

Os Padrões dos Gigantes da Web – DevOps

O movimento DevOps põe em cheque a fronteira entre as equipes de desenvolvimento e de operações. Não que essa discussão seja nova, mas a reestruturação proposta pelo DevOps é mais profunda, e bastante coerente com as metodologias ágeis, já presentes em boa parte das equipes de desenvolvimento, mas ainda distantes das equipes de operações.

O DevOps inclui muitas lições aprendidas dos Gigantes da Web (Amazon, Facebook, LinkedIn, etc.), que perceberam que não adianta fazer o desenvolvimento ágil, e parar nos processos lentos das equipes tradicionais de operações. O Time to Market (TTM) é um conceito chave para o sucesso dessas empresas, e para melhorá-lo é preciso rapidez não só no desenvolvimento, mas em toda a cadeia do produto.

Há outras vantagens no DevOps, mas o ponto central é realmente o TTM.

 

Leia mais

A prática do “Enquadramento 360”: Como começar um projeto da maneira certa!

É muito comum em projetos de software investirmos muito tempo em análise de requisitos e inúmeras páginas de documentação, que requer muito tempo (as vezes até 6 meses!) e ao final quase sempre são apenas “engavetadas”.

Me deparei muitas vezes com essa situação e comecei a me questionar a respeito de até onde vale a pena focar tanto tempo e esforço construindo inúmeros diagramas e especificações.

Leia mais

Medindo o desempenho de aplicações Web – Parte 3

Nos artigos anteriores (artigo 1 e artigo 2), vimos quais são os tipos de teste de performance que podem ser realizados para garantir o bom desempenho da aplicação, e também como um teste de carga pode nos ajudar a descobrir o quão performática é nossa aplicação.

Nesse artigo veremos o que é, e como pode ser realizado um novo conceito de testes: o PWPO.

Leia mais

Medindo o desempenho de aplicações Web – Parte 2

No artigo anteriorvimos o que é um teste de carga, teste de stress e teste de não regressão de performance. Além disso vimos qual a importância de realizar testes de desempenho para garantir o bom funcionamento da aplicação web, e o quanto se perde em tempo (e dinheiro) tendo um site lento.

Nesse artigo veremos como um teste de carga poderá nos ajudar a descobrir o quão performática nossa aplicação e quais são os passos para planejar e executar um teste de carga.

Leia mais