18 outubro 2009

Brincando nas núvens com o SimpleDB da Amazon



Dias atrás apresentei o serviço S3 da Amazon e como ele serve como uma boa ferramenta de backup usando o S3Fox.

Agora vou apresentar como brincar com o SimpleDB da Amazon que nada mais é que um banco de dados distribuído rodando na Internet.

Como faz muito tempo que não brinco com php, vou usar o php com uma biblioteca de acesso aos serviços da Amazon chamado de Tarzan.

Feito o download, basta configurar no diretório de trabalho suas permissões de acesso ao serviço da Amazon (variáveis AWS_KEY e AWS_SECRET_KEY, as mesmas usadas para o S3Fox). Não esquecer que o serviço SimpleDB precisa ser assinado na Amazon antes de poder usá-lo.

Teste simples para ver os domínios (equivalentes a tabelas no caso de SQL):
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->list_domains()->body->ListDomainsResult);'
O resultado no caso de não existir nenhum domínio seria:
SimpleXMLElement Object

(

)
Seguindo as documentações do SimpleDB do Tarzan, toda a API do SimpleDB está disponível. Vamos criar um domínio novo:
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->create_domain("dominio1"));'
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB(); print_r($sdb->list_domains()->body->ListDomainsResult);'
O resultado do último comando mostra:
SimpleXMLElement Object
(
    [DomainName] => dominio1
)
Legal! O dominio1 apareceu. Colocando dados de Santa Catarina, São Paulo e Ceará:
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->put_attributes("dominio1", "Santa Catarina", Array("capital"=>"Florianopolis", "populacao"=>"0005866568")));'
$ php -r 'require_once "tarzan.class.php";$sdb = new AmazonSDB();print_r($sdb->put_attributes("dominio1", "Sao Paulo",Array("capital"=>"Sao Paulo","populacao"=>"0040442795")));'
$ php -r 'require_once "tarzan.class.php"; $sdb = new AmazonSDB(); print_r($sdb->put_attributes("dominio1","Ceara", Array("capital"=>"Fortaleza","populacao"=>"0008097276")));'
Aí, com uma pesquisa simples do tipo SQL dá para procurar estados com mais de 10 milhões de habitantes:
$ php -r 'require_once "tarzan.class.php"; $sdb = new AmazonSDB();print_r($sdb->select("select populacao from dominio1 where populacao>\"0010000000\"")->body->SelectResult);
O que reporta o estado esperado e sua população:
SimpleXMLElement Object
(
    [Item] => SimpleXMLElement Object
        (
            [Name] => Sao Paulo
            [Attribute] => SimpleXMLElement Object
                (
                    [Name] => populacao
                    [Value] => 0040442795
                )
        )

)

10 outubro 2009

Ágiles2009 em Florianópolis deu um banho

Uau! A Conferência Latino-Americana de Sobre Metodologias Ágeis Ágiles2009 foi muito melhor do que eu esperava. Várias apresentações muito interessantes e uma oportunidade de ouro de conhecer as pessoas da região que realmente se importam com desenvolvimento de software.

Brian Marick começou com um keynote interessante discutindo como a esposa dele, que é veterinária, ensina a prática para os estudantes. Ele explicou sobre a metodologia de documentação SOAP (Subjective Objective, Assessment and Plan) para acompanhamento dos animais e como é difícil transferir a noção subjetiva para estes estudantes. Brian argumentou que os desenvolvedores de software precisam se espelhar nas experiências de transferência da habilidade de outras profissões.

Alisson Vale matou a pau tentando passar uma quantidade absurda de informação em 45 minutos explicando Kanban desde o começo. É incrível que mesmo assim tenha conseguido deixar todos bem embasados nesta reinterpretação do Lean que é o Kanban.

Thomas Looy fez uma apresentação espetacular mostrando num exemplo prático o efeito de não respeitar o TOC (teoria das restrições) e trabalhar com acúmulo de WIPs por tentar maximizar um desempenho local. É basicamente o segredo do Lean: otimização local gera desperdício, e deixar pessoas ociosas as vezes é mais econômico que fabricar estoque de trabalho inacabado.

Thomas ainda disse umas 10 vezes: "é essencial a gestão visual". Todos tem que ter como ver o Kanban. O Kanban é que vai mostrar os WIPs e as ineficiências.

Alexandre Magno e Manoel Pimentel fizeram um bate-bola sobre as dificuldades das implantações de Scrum e XP. Comentaram bastante da dificuldade de mudar a cultura da empresa e do mercado para aceitar os preceitos e deu para ver que a dificuldade de mudar as organizações é um problema muito sério que está gerando frustrações aos consultores e desenvolvedores em geral.

O Keynote do final de quinta foi de Roy Singham transformando a causa dos agilistas numa cruzada moral que mudará o mundo e o transformará num mundo melhor, onde a lógica do capitalismo e do controle cartesiano das organizações estarão mais sobre controle. Meteu pau nas montadoras de carros americanas e disse para espelharmos na Toyota para prepararmos a nossa revolução.

A paixão de Ray é contagiante por causa da paixão que ele transpira... Tão contagiante que por pouco não saí marchando para enviar meu currículo para a ThoughtWorks no instante final que ele anunciou a montagem do escritório em Porto Alegre. :-) Adorei o cara...

Um caso interessante disso foi a apresentação do Tiago Garcez discutindo as diversas concessões para tentar viabilizar o desenvolvimento ágil da parte de TI da Belgian Post que, mesmo depois de um período de relativo sucesso, uma mudança de diretoria parece querer a volta do Waterfall e da ilusão de controle. A frustração é evidente...

Para contrabalançar, David Hussman deu uma palestra excepcional destruindo os dogmas que estão se enraizando na comunidade de desenvolvimento ágil e a preocupação de viabilizar o processo de mudança. Insistiu bastante que a ortodoxia não deveria ter espaço e que a mudança tem que ter foco nas pessoas, sejam os desenvolvedores ou seus gestores.

David falou bastante da construção do "groove" que pode caber na sua empresa: olhar de longe e perceber o que o grupo tá precisando para ser mais ágil e ajudar o grupo nesta mudança escolhendo um ou outro item por vez que provoque o maior retorno possível ao grupo em pouco tempo.

A metáfora do "groove" é poderosa e ele compara com a construção de um ambiente para que uma banda consiga compor e tocar num ambiente confortável e acolhedor para a banda. E como ele tocou numa banda por cerca de 10 anos, pode falar com propriedade sobre a semelhança destas situações.

O painel final fechou a conferência de forma muito legal. Marick, Larsen, Hussman, Singham, Kerievsky e Samuel Crescêncio discutiram sobre a experiência da conferência aqui na América do Sul e da oportunidade que temos para participar desta experiência mundial da briga pelo Lean e Ágil. Reclamaram que o Ricardo Semler é uma referência lá fora por causa do livro "Maverick" e que é considerado um agilista corporativo e que nós aqui no brasil quase não damos valor.

Discutiram um monte novamente sobre a dificuldade de mudança das organizações, levando o Brian Marick a mandar todo mundo se liberar da escravidão e montar empresas de 12 pessoas escrevendo aplicações hospedadas de RubyOnRails... Caí na gargalhada com todo mundo lá... :-)

Parece que o Ágiles2010 vai ser em Perú em Lima... Pô, é longe... Mas quem sabe... :-)

04 outubro 2009

Backups na núvem com S3 da Amazon

E agora? Como guardar aquelas 5.000 fotos que você guardou nestes últimos 10 anos de fotografia digital?

Existe uma quantidade enorme de serviços de backup na Internet hoje em dia, como Mozy, DropBox, Carbonite ou JungleDisk, mas eu já sou mais do gosto de mexer diretamente com os arquivos e não ficar tão refém dos serviços prestados por um software instalado no micro.

S3 é um serviço da Amazon de armazenamento robusto de arquivos sem limite de quantidade e com replicação pelo menos tripla. É muito mais segurança do que qualquer backup que você deve estar aprontando de dentro de sua casa hoje. E o preço é bem em conta, gasto algo como $1,50 dólares por mês para manter os meus 10GB de fotos lá.

E usando o S3Fox, que é uma extensão para Firefox, o serviço de download, upload e sincronização ficam bem simples, praticamente a um click do mouse.

O que você precisa para poder usar este serviço?
  • criar uma conta no Amazon Web Services;
  • contratar o serviço S3;
  • instalar o S3Fox;
  • cadastrar no S3Fox as credenciais do S3 (Your Account/Security Credentials no site da Amazon).
A partir daí, é como transferir arquivos para um servidor como se fazia com o FTP, e curtir a tranquilidade de ter suas valiosas memórias seguras na nuvem da Internet.