22 de jul. de 2011

Primeiro contato com Node.j e mais sobre non-blocking servers



Dae gurizada..

Na sequência do meus estudos sobre non-blocking web servers vou dar uma olhada no Node.js.


Vou utilizar como base esta apresentação do Ryan Dahl, que está disponível no site do node.js

Antes de olhar sobre Node.js é importante entender o C10K Problem e Non-blocking I/O

Node.js
Node.js nada mais é que uma biblioteca que roda em cima do virutal machine chamada v8. V8 é uma JavaScript Engine escrita pelos  engenheiros da Google e é utilizada no Google Chrome.

Node utiliza o v8 para fazer o trabalho de comunicação (networking) corretamente. 

Não existe "waiting time"
Óbvio, é isso que faze dele um non-blocking server: Não ter "waiting time".

Você não consegue mandar o node dormir (sleep). Não é que você seja encorajado a não fazer um "sleep", na verdade você não tem poder para isso. 

O que o Node faz é definir Timeouts e deixar processos em idle (ocioso), fazendo com que o consumo de CPU vá para zero.

De uma olhada nesse código:

19 de jul. de 2011

C10K Problem. O quê Deft, Node.js, Netty e outros estão solucionando

Dae gurizada,

A idéia de olhar para esse problema surgiu depois que o Diego Pacheco me deu a missão de falar sobre Deft e Loft em um lighting talk que fizemos há algumas semanas atrás.

O grande impecílio que tive para entender o conceito dos servidores Deft e Loft foi de entender o problema. Eis a motivação do post.

O que vou tentar explicar são as limitações existetes que fazem com alguns servidores não consigam processar mais que 10mil requisições simultâneas. E (se tudo der certo) você vai entender porque servidors como Deft, Loft, Tornado, Netty, Node.js e outros tem um desempenho diferente que os sservidores normais. 

C10k Problem

C10k significa 10.000 (dez mil) conexões simultâneas. Este é a limitação de conexões silmutaneas da maioria dos servidores de aplicação.

Isso acontece devido a forma que os servidores trabalham com cada conexão recebida.

Muitas destes problemas são ocasionaos pela forma que o servidor foi impelmentado e de como o Sistema Operaciona (OS) trabalha com sockets.

Eu vou descrever algumas destas limitações abaixo.

4 de jul. de 2010

Taskboard e Standup Meeting não é suficiente. Algumas dicas de como executar...



Trabalhei em diversos projetos que utilizavam TASK BOARD do Scrum. Ao longo do tempo conseguimos otimizar a utlização dos mesmos identificando algumas boas práticas.


21 de mai. de 2010

Engenharia de Requisitos: todo mundo fala, poucos fazem

Hoje terminei o treinamento sobre Requisitos de Software com o Luiz Parzianello, que ao meu ver é um dos "CARAS" de requisitos no brasil.

O objetivo do post é falar um pouco do porquê resolvi estudar requisitos e algumas dicas para quem está começando a estudar sobre isso.

Motivação
  • É um assunto abordado de forma muito pobre nas faculdades
  • Existe muita gente(inclusive eu) definindo requisitos baseado na experiência(empírico), sem fundamento teórico.
  • É nítido os problemas que requisitos errados e/ou inconsistentes geram nos projetos.


11 de mar. de 2010

Instalar OC4j no Ubuntu

Esses tempos tive que instalar o OC4J para trabalhar.

Então resolvi fazer esse post para não sofrer novamente com algumas configurações.


Instalação

Bom a instalação foi tranquila.
Segui os passos da documentação da Oracle e não tive problemas: http://download.oracle.com/docs/cd/B25221_04/web.1013/b14432/install.htm

Atenção com os paths das variáveis de ambiente!