Imagem

Se a liberdade significa alguma coisa…

Anúncios

Compartilhar é bom, compartilhar NoSQL é melhor

A vida nos prega peças interessantes

Ontem, 05/11/2012 tive o prazer de compartilhar um pouco da minha experiência em NoSQL na UCS, graça ao convite do professor Daniel Notari. Pude apresentar como foi desenvolver um sistema utilizando o banco de dados Amazon DynamoDB para a turma de Estrutura de Dados.

Com o objetivo de ser único, não comentei uma apresentação, criei um mapa mental e fui escrevendo no quadro branco.

Comecei falando sobre o que era Big Data, em segui porquê surgiram os bancos de dados NoSQL e suas categorias. Depois  entrei no assunto que mais domino no momento o Amazon DynamoDB.

Falei sobre estrutura de tabelas, como é feito o particionamento e replicação dos dados, concorrência.

Após 1 hora falando, fiquei muito feliz ao ouvir perguntas. Entre elas se foi muito difícil desenvolver, o que para mim não foi pois como utilizei as metodologias ágeis, consegui me policiar bastante no tempo e esforço para desenvolver.

Ao final de tudo deu tempo para apresentar o Telescreen (http://kwitter.no-ip.info) rodando.

Um dos grandes materiais de recomendo a leitura para quem ficou interessado sobre o DynamoDB é o blog de Werner Vogels, CTO da Amazon. o nome do seu blog é All Things Distributed, lá duas excelentes postagens são:

http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

http://www.allthingsdistributed.com/2012/01/amazon-dynamodb.html

Continuar lendo

Ágil é diferente de Rápido

Ágil = Que tem grande facilidade de se mover; ligeiro, leve.

Para o andamento do TCC estou utilizando um modelo bem simples baseado em princípios ágeis. Criei e vou atualizando um backlog de todas as funcionalidades que quero fazer no Marvin e no Telescreen. Todo o domingo eu faço o planejamento de quais atividades eu vou fazer até sábado, ou seja, sprints de 7 dias corridos.

Isso foi um aprendizado com relação ao inicio do TCC 1 onde eu estava fazendo sprints de 14 dias e o processo não estava fluindo. Para dar vazão, alterei para sprints de 4 dias, o que fez com que as atividades realmente fossem concluídas. Com os atuais 7 dias, as atividades estão fluindo bem, o planejamento do que pode ser feito tem sido bom, sobrando algumas horinhas que utilizo para fazer “perfumarias” no sistema.

Para o controle desse backlog e sprints, estou utilizando o site Acunote que é muito prático e vem com vários recursos, entre eles o gráfico de Burndown e detalhamento de tarefas.

Para estimar as tarefas estou utilizando a metodologia de story points (baseada na sequencia de Fibonacci) onde as atividades recebem pontos na sequencia de 1, 2, 3, 5, 8, 13, 21. Estou falhando em descrever as tarefas, pois somente estou descrevendo o título e não justificando o valor agregado. Como todo esse processo (PO, analista, designer, programador, testador, etc) está sendo realizado pela minha pessoa, não estou perdendo nenhuma informação. Mas seria interessante detalhar um pouco mais.

Uma das coisas mais importantes que eu fiz foi com relação ao design do sistema. Fui criando uma arquitetura emergente, onde os pacotes e classes foram surgindo e evoluindo naturalmente, sem a necessidade de ficar pensando muito como fazê-los. Da primeira versão da aplicação até a versão atual (01.00.004)  foram criados 4 pacotes e diversas classes e interfaces, transformando a aplicação em um formato bem modular e escalável.

A melhor definição que ouvi de rapidez e agilidade é a do Coyote e Papa Léguas: o Coyote só é rápido, mas não consegue fazer bem as coisas, já o Papa Léguas é ágil, pois além de também ser rápido utiliza isso em seu benefício.