Posts de ‘Cristiano Casado’

[Cristiano Casado] Múltiplos uploads para o Google Docs

Sunday, September 6th, 2009

Se você precisa fazer upload de múltiplos arquivos para o Google Docs, ficará limitado pelo upload tradicional que permite a operação de um arquivo por vez.  O Google Docs possui uma API para upload, download e edição de documentos.  Uma das aplicações que faz uso desta API foi escrita por Anton Belograzov e se chama Google Docs Batch Upload.  É uma aplicação java command-line para Linux, Mac e Windows com JRE 1.6.

Google Docs Batch Upload faz o upload de um ou mais arquivos suportados pelo Google Docs a partir de um determinado diretório local.  A sintaxe do comando é a seguinte:

java -jar google-docs-upload-1.0.jar <path> –recursive

( substituindo <path> com o caminho para o diretório com o conteúdo para upload).

[Cristiano Casado] Nagios aditivado .. run run

Thursday, July 30th, 2009

Faltam detalhes para colocar uma instalação distribuída de Nagios em ambiente de produção para monitorar a rede e infra-estrutura na Globo.com.  Um destes detalhes está sendo atacado neste momento com bastante critério e paciência: performance.  Uma instalação básica com configurações de “fábrica” do Nagios podem servir bem para ambientes de pequeno e médio porte com 100-200 servidores.  Só que o cenário aqui é bem diferente.  Em ambiente de produção espero ter 1200 servidores sob os “olhares” do Nagios, e desta forma é preciso seguir algumas recomendações que explico em tópicos abaixo:

  • configurar os diretórios dos arquivos de check result (check_result_path) e de status (status_file) como filesystem tmpfs.  No primeiro ocorre intensa operação de escrita/leitura e o arquivo de status é lido pela camada CGI do Nagios.  Armazenar estas informações em ramdisk evita interrupções e I/O de disco.
  • optar por plugins compilados ( C/C++) para executar os checks reduz significativamente o load nos seus servidores Nagios.
  • ao utilizar plugins em perl (muitos deles disponíveis nesta linguagem) compilar o Nagios para utilizar o seu interpretador perl embedded.  A opção para o script de configure é –enable-embedded-perl.
  • otimizar os checks nos hosts utilizando o plugin check_fping ao invés do plugin padrão check_ping.
  • utilizar precache dos objetos de configuração para acelerar a inicialização do sistema com a opção -u do binário nagios.
  • programar checks regulares para hosts é desnecessário, uma vez que o mesmo possuirá serviços relacionados e a falha do check de um dos serviços força um host check sob demanda.  Para isso atribuir o valor 0 na diretiva check_interval no arquivo de definição de hosts.
  • em instalações distribuidas, incrementar o check de external commands na instalação do Nagios central.  Isso faz com que o Nagios verifique comandos externos assim que possível.  A diretiva command_check_interval deve ter o valor -1.
  • verificar sempre a latência nos checks de hosts e services para estabelecer o melhor valor para a concorrência de checks.  Desta forma você poderá controlar o load que o Nagios impõe aos seus hosts monitorados com a diretiva max_concurrent_checks.
  • cuidado ao utilizar módulos (broker module) para exportar dados do Nagios para softwares de terceiros, pois a dependência de operações externas pode ser blocante para a execução de checks no Nagios.
  • o setup de seu hardware influenciará diretamente na performance do sistema de monitoração.  CPU e memória com tecnologia atuais favorecem o sistema, porém o Nagios por natureza de sua arquitetura é I/O intensive.  Evitar sistemas de arquivos lentos ( discos IDE antigos e NFS), optando por discos UltraSCSI ou FastIDE para armazenar plugins, arquivo de status log, etc.

Antes mesmo de aplicar novas configurações é muito importante não abrir mão de backup dos seus arquivos de configuração e também utilizar as métricas que o Nagios oferece para plotar gráficos onde você poderá comparar como o sistema se comporta ao alterar estas configurações.

Para criar os gráficos o Nagios oferece o utilitário nagiostats que oferece um output compatível com o mrtg para contadores importantes do sistema como número de service checks executados em determinada janela de tempo, latência, tempo de execução de service checks, entre outros.

# /usr/bin/nagiostats –mrtg –data=AVGPSVHSTLAT,AVGPSVSVCLAT,PROGRUNTIME,NAGIOSVERPID
950
554
0d 3h 33m 21s
Nagios 3.0.6 (pid=1861)

[Cristiano Casado] Globo.com no FISL 10

Tuesday, July 7th, 2009

A Globo.com esteve presente como um dos patrocinadores da edição especial do FISL (Fórum Internacional de Software Livre) em Porto Alegre entre os dias 24 e 27 de Junho de 2009.

Com um dos estandes mais movimentados do evento, onde o público pode assistir mini-palestras sobre cases de projetos, receber brindes e ter contato direto com os profissionais para troca de informações, a Globo.com consolidou sua participação no evento anual com a maturidade em mostrar os avanços conseguidos ao utilizar ativamente software livre no seu negócio e também em ouvir e aprender com a experiência de outros usuários de software livre.

Globo.com Fisl 10

Globo.com Fisl 10

No estande apresentei detalhes do projeto que visa reestruturar a forma de realizar monitoração de nossa rede e infra-estrutura utilizando o Nagios como ferramenta.  Em um bate papo de aproximadamente 1 hora mostrei quais os objetivos a serem alcançados, a estrutura do sistema, integração com o sistema de correlação de eventos (monitoração inteligente), representação gráfica dos elementos da rede, administração via web, a arquitetura proposta e também das barreiras encontradas ao longo do projeto.

Abaixo os slides de algumas das várias palestras apresentadas pela Globo.com no FISL 10.

Monitoração com Nagios
View more presentations from ccasado.
Monitoracao Inteligente na Globo.com

View more documents from denao.
Globo.com & Varnish

View more presentations from lokama.
Fisl10 MySql na Globo.com por Camila Dias

View more presentations from camilapdias.

[Cristiano Casado] Desbloqueio de iphone 3G com yellowsn0w

Sunday, December 21st, 2008

Comprou um iphone 3G bloqueado fora do Brasil e não sabe o que fazer ?
A solução está postada no blog do dev-team.  MuscleNerd mostrou ao vivo por broadcast no Qik o desbloqueio de um iphone 3G bloqueado para uso na rede AT&T utilizando o software yellowsn0w.  Terminada a operação o aparelho está pronto para uso na rede da T-Mobile.  Muito rápido e prático.  O software estará liberado no dia 31de dezembro e o desbloqueio funciona para baseband menor que 02.11.07.

[Cristiano Casado] YouTube HD e Google CDN

Monday, December 15th, 2008

No início do ano, para ser mais específico em março de 2008, fiz um post sobre os primeiros testes no YouTube com vídeos no formato HD. Na semana passada, 9 meses depois, um número bem maior de vídeos começaram a ser disponibilizados para o usuário.  O delivery de milhões de vídeos com tamanho bem maiores que o original só foi possível graças ao projeto de CDN do Google, e o desafio para os fornecedores Akamai e Limelight Network em manter a capacidade da rede com um tráfego bem maior entre os CDNs.

[Cristiano Casado] Desafios na adoção do Scrum

Saturday, December 13th, 2008

Em artigos no Agile Journal, Cesário Ramos e Eelco Gravendeel falam dos desafios que eles enfrentaram durante o trabalho de introduzir Scrum nas empresas. Os autores sugerem que o conhecimento destes desafios e uma estratégia para supera-los, tornaria o processo de adoção mais fácil para as organizações.

Eles mencionam os principais desafios com suas possíveis soluções:

  1. Não aprendizagem organizacional - acontece quando o feedback obtido com as reuniões de retrospectiva são perdidos e não são incorporados para o melhoramento do processo. Idealmente, todo feedback deve resultar em itens de ações.
  2. Falta de confiança no ambiente - muitas vezes as pessoas tendem a esconder os seus erros, não compartilham suas opiniões, atrasando o processo de decisão.  A solução é construir o ambiente com transparência e feedback positivo.  Estimular a comunicação.
  3. Usar o scrum como uma correção, sem conhecer o problema - uma nova metodologia não pode ser adotada somente pelo ‘barulho’ que faz no mercado.  A organização deve definir suas espectativas e critérios de aferição.  Responder a questões como “Onde é que o processo atual faz doer?”, “Quais as causas para a dor?’” e “O que vamos ser capazes de fazer quando parar de doer?”. Isso ajuda a definir objetivos e critérios de aferição.
  4. Product Owners despreparados - esses POs não possuem o conhecimento necessário ou não tem um mandato para desempenhar seu papel com eficiência, ou podem não ter os dois.  POs com “asas cortadas” podem ter falta de habilidade para tomar decisões que eventualmente prejudicam a velocidade do time.
  5. Fazer ágil e rigorosamente de acordo com as regras - Scrum é um processo simples com um comportamento complexo.  O que funciona para uma organização pode não funcionar para a outra.  Ir apenas pelas regras não iria ajudar em todos os cenários.  Scrum pode ser personalizado de acordo com as regras da empresa.
  6. Não preparar a organização em torno de um projeto Scrum - uma equipe adotando Scrum não pode trabalhar isoladamente.  Ela precisa interagir com outras equipes para ser bem sucedida.
  7. Falta de um meta-scrum master - nem todos os impedimentos podem ser resolvidos pelo scrum master a nível de projeto.  Existirão impedimentos que o scrum master terá que encaminhar fora do projeto a nível de organização.  Neste ponto uma gerência de nível sênior deve desempenhar uma função de meta-scrum master com visibilidade dos impactos de um impedimento no tempo de entrega e no ROI.
  8. Pensando Agile é fácil - a filosofia por trás do Agile é simples porém pratica-lo é difícil.  A melhor maneira é ter um treinador Agile por perto para ajudar a equipe.  Aproveitar as pessoas formadas em diversos níveis, evangelizar, fazer workshops e treinar os scrum maters é um fator chave para a adoção do Scrum.

[Cristiano Casado] Google adiciona tarefas ao Gmail

Wednesday, December 10th, 2008

O Google incluiu como feature experimental (labs) ao Gmail  ou Calendar um gerênciador de tarefas, funcionalidade esta bastante conhecidas entre os usuários do Outlook por exemplo.  A expectativa do pessoal do Google Labs é que seja a mais popular feature em fase beta.

A opção para habilitar esta feature está na tela de Settings do Gmail (parte superior da tela), opção Labs. Após habilitar a feature pode ser acessada por dois caminhos: clicando no link tasks abaixo do menu Calendar abre a janela de task list, onde é possível criar novas tarefas com descrição e data para conclusão, visualizar ou ocultar tarefas concluídas, identar tarefas e criar outras task list.  Também é possível criar uma tarefa a partir de uma mensagem na opção “More Actions - Add to Tasks”.  Nesta task o subject da mensagem será prevervado com a presença de um link para a mensagem original.

Como nada na vida é perfeito, faltam opções como compartilhar tarefas entre outros usuários, atribuir prioridade e utilizar algum método de notificação.

[Cristiano Casado] Buttons para scrum master que falha

Tuesday, December 9th, 2008

Buttons com a inscrição “Eu sou o impedimento” foram apresentados durante o Scrum Gathering.
Em um primeiro momento parece divertido, porém o Boris em seu blogger descreve o real significado deste adereço.  Também estão a venda camisetas no site cybermanufaktur.de.

[Cristiano Casado] Phusion Passenger 2.0.5 + global queuing

Friday, December 5th, 2008

Saiu do forno a release 2.0.5 do Phusion Passenger com um fix importante para a feature global queuing, que foi introduzida na versão 2.0.4, porém era a causa de deadlocks quando usada em combinação com o MPM worker do apache.

Mas qual a utilidade desta feature ? O Passenger trabalha com múltiplos processos Ruby on Rails, cada um com a responsabilidade em processar os requests HTTP. O processo leva determinado tempo para processar um request HTTP específico. Se a aplicação estiver sob alto tráfego, estes processos de backend podem não responder em tempo hábil, podendo haver um enfileramento de novos requests a serem processados.

Quando não temos o global queuing, cada processo possui sua própria fila para requests pendentes (private queue), com possibilidades de um processo estar mais carregado, ou seja com mais requests pendentes, do que outros.

Com o global queuing, temos a implementação de uma fila compartilhada entre todos os processos de backend. Se todos os processos estiverem ocupados o Passenger mantém o novo request nesta fila global, até que o primeiro processo tenha disponibilidade de processamento. A distribuição destes requests é mais eficiente, com o processo mais desocupado recebendo o novo request.

O download do Passenger versão 2.0.5 está disponível aqui no RubyForge.

[Cristiano Casado] Erros HTTP em imagens

Thursday, November 27th, 2008

O Adam Koford encontrou uma maneira criativa de ilustrar os “request errors 4xx” do http no Flickr.
Está fazendo maior sucesso no Flickr.  Vale a pena conferir e esperar pelas imagens dos “server errors 5xx”.