QCon SP 2012: um panorama técnico
Início Notícias QCon SP 2012: um panorama técnico
17 ago 2012 13 min(s) de Leitura
A seguir veja resumos técnicos de uma pequena seleção de palestras do evento, por seis editores do InfoQ Brasil.
Rafael Sakurai destaca dois keynotes: o de Martin Fowler e o de Ben Chirstensen da Netflix. Outro ponto alto para o editor foi a palestra "Sete dicas para ser destaque no Google Play" de Alexandre Macedo.
Software Design no século 21, por Martin Fowler
Martin Fowler subdividiu sua palestra para falar de três tópicos importantes no design de software: aplicações para dispositivos móveis, NoSQL e o valor do design do software.
1. Desenvolvimento de software para muitos dispositivos móveis
Fowler destacou que, com o crescente número de dispositivos móveis, torna-se cada vez mais importante manter a experiência do usuário, que já está acostumado com os aspectos visuais do Android e do iOS. Mas manter um ambiente que funcione em vários dispositivos e SOs móveis é complexo, uma vez que cada modelo possui controles distintos e há um leque de linguagens de programação diferentes para cada sistema operacional utilizados nos dispositivos.
Para resolver esse problema, atualmente há a possibilidade de se criar aplicativos em HTML5 que funcionem em qualquer modelo de dispositivo, mas esta tecnologia ainda sofre devido a alguns problemas como a perda de funcionalidades, menor experiência com usuário, JavaScript e a ausência de lojas de aplicativos com aceitação ampla.
A sugestão de Fowler é construir aplicações híbridas que podem ser portáveis, com a interface visual utilizando código nativo em conjunto com o JavaScript, enquanto que o corpo da aplicação é feito apenas utilizando-se o JavaScript. Um artigo explica o conteúdo abordado nessa pequena palestra.
2. NoSQL e Consistência
Na segunda parte do keynote, Fowler destacou dois dos três componentes do teorema CAP: a consistência das informações e a disponibilidade de acesso aos dados.
Levando em consideração a consistência das informações, sempre há a necessidade de manter uma conexão ativa com o servidor, para garantir que a informação está salva. E quando a disponibilidade é levada em consideração, para que se mantenha a interação com a aplicação contínua, o máximo possível, é necessário permitir que a aplicação continue funcionando mesmo que fique sem acesso ao servidor, até que a conexão com o servidor se restabeleça e as atualizações dos dados sejam finalmente persistidas. No site de Fowler há várias referências e textos sobre o tema NoSQL.
3. O valor do design do software
A terceira minipalestra de Fowler focou o design dos softwares. O usuário final, defende Fowler, enxerga apenas a qualidade externa das aplicações, enquanto que durante o desenvolvimento, dedica-se cuidado especial para que se obtenha um bom design do código.
Uma questão muito debatida é se o desenvolvimento do software deve entregar muito mais funcionalidades ou entregar um software com um bom design interno. O questionamento surge da seguinte observação de que, ao se entregar software com pouca qualidade, pode-se entregar muito mais funcionalidades, mas no longo prazo a manutenção será maior e mais trabalhosa.
Porém deve-se levar em consideração que ao se prezar por um código com mais qualidade, pode-se entregar menos funcionalidades - mas a manutenção futura será menor e muito mais fácil de se fazer.
O objetivo é encontrar um denominador comum, pelo qual o software possa ser entregue com uma quantidade significativa de funcionalidades, tendo ao mesmo tempo um bom design de código.
No site de Fowler há várias referências e comparações sobre o tema design de código.
Performance e tolerância a falhas na Netflix, por Ben Christensen
Ben Christensen abordou os problemas com a latência de rede que o Netflix enfrentava, logo quando entrou na empresa e soluções investigadas. Ao mesmo tempo, apresentou detalhes sobre vários aspectos da arquitetura de software adotada pela Netflix.
Para melhorar a estrutura das aplicações e reduzir a latência, foram realizadas alterações, como enviar apenas os bytes essenciais, criar APIs Java assíncronas (para não bloquear as requisições dos usuários), agrupar requisições para reduzir o acesso aos servidores e adicionar cache para as requisições. Outra técnica adotada foi utilizar JRuby com JavaScript para criar uma camada funcional, que age como um ponto de acesso dinâmico para o repasse das chamadas às APIs assíncronas.
Para realizar testes na estrutura, a Netflix conta com um Chaos Monkey que simula falha nas instâncias de servidores, realizando testes de contingência, replicação dos dados e disponibilidade dos serviços.
A apresentação de Ben Christensen foi disponibilizada no SpeakerDeck.
Sete dicas para ser destaque no Google Play
Na palestra de Alexandre Macedo, foram apresentadas vários aspectos da aplicação Kekanto, que a tornaram um dos destaques do Google Play.
Quanto à aparência da aplicação, é necessário levar em consideração os ícones, componentes, métricas e tipografia. Já em relação à usabilidade, deve-se levar em conta uma interface fácil de ser usada, responsiva, organizada e com um bom fluxo de navegação. Pensando nisso, o Google disponibiliza várias documentações que auxiliam no momento da criação das interfaces das aplicações.
Para facilitar o trabalho de criação dos ícones, a ferramenta Android Asset Studio, que gera ícones em diversas resoluções, foi recomendada por Alexandre.
Sobre a navegação, o palestrante recomenda que as práticas sugeridas pelo Google, ou ações que melhorem a visualização e a navegação entre as telas, sejam seguidas. Algumas das dicas foram usar o suporte às bibliotecas de fragments; usar o View Pager para trocar telas ao se deslizar os dedos para a esquerda ou direita, situando o usuário quanto a sua navegação (uma solução imediata seria utilizar o ViewPager Indicator); usar a Actionbar (barra de menu superior com ações), para que se mantenha compatibilidade com as versões anteriores ao 4.0 do Android (pode-se usar o ActionBar Sherlock para ajudar no desenvolvimento).
Os slides da apresentação do Alexandre Macedo já estão disponíveis.
Fernando Ultremare selecionou a palestra de Maurício Aniche, da track Agile depois do mainstream.
Métodos Ágeis: O que é folclore e o que é real?, por Maurício Aniche
Mauricio Aniche, em sua apresentação, buscou realizar uma análise crítica das práticas de desenvolvimento ágeis, muitas vezes utilizadas pelas equipes de desenvolvimento sem um real entendimento de sua efetividade em cada contexto.
Aniche questionou práticas que geralmente são defendidas quase que "religiosamente" pela comunidade ágil, como se fossem axiomas. Entre as práticas mencionadas, foram abordadas o desenvolvimento orientado a testes, o desenvolvimento em pares e a não necessidade de documentação.
Para dar embasamento à sua argumentação, Aniche apresentou situações reais onde estas práticas podem não ser eficazes, desfazendo assim grande parte dos mitos difundidos pelo mercado. Os slides da apresentação já estão disponíveis.
A palestra sobre Machine Learning, apresentada por Guilherme Silveira, e outra sobre truques de web mobile, de Sérgio Lopes, foram evidenciadas por Adalberto Zanata.
Uma introdução a Machine Learning, por Guilherme Silveira
Guilherme Silveira, líder técnico da Caelum, conseguiu em poucos minutos e de uma forma divertida, cativar um auditório lotado falando sobre um assunto para o qual muita gente torce o nariz. Despejou uma sequência de ações e cenários do nosso cotidiano, como compra de imóveis, fraudes em cartões de crédito, análise de melhor rota, etc., embutindo todos eles em exemplos de possíveis aplicações reais do Machine Learning. O palestrante usou a técnica em casos reais na sua empresa de cursos, para identificar e prever o comportamento de alunos. O sucesso da palestra foi tão grande que ganhou uma apresentação adicional. Os slides utilizados já foram disponibilizados na web.
Truques na web mobile, por Sérgio Lopes
Sérgio Lopes, falou sobre o design responsivo e dicas de desenvolvimento para dispositivos móveis. Um dos destaques na palestra foi a surpresa logo de início, quando o palestrante demonstrou que todos que tivessem um equipamento compatível (tablet, smartphone etc.), poderiam acompanhar a apresentação diretamente de seus dispositivos móveis. Ao longo da apresentação, os dispositivos eram sincronizados através de WebSockets, e os participantes podiam interagir com os exemplos que surgiam em suas telas.
Inserir redirects de forma correta, habilitar sempre a funcionalidade do zoom, eliminar a barra de endereços, levar em conta diferenças de operação do dispositivo com os dedos em relação ao mouse, e ter cautela com a entrada de dados, foram algumas das várias recomendações dadas na apresentação.
Adalberto Zanata também destacou as palestras de Rodrigo Zaccara (UOL) e de Rodrigo Schimidt (Facebook):
Entregando conteúdo em ambientes extremos na JVM, por Rodrigo Zaccara
Rodrigo Zaccara apresentou, de forma clara e sucinta, alguns cenários e períodos de criticidade que vivenciou no período de pouco mais de cinco anos em que trabalha no UOL, um dos maiores portais de conteúdo da América Latina.
Relatos de situações reais ocorridas em um momento de transição do ambiente do UOL Notícias, guiaram a palestra para que as dicas e estratégias adotadas na resolução de vários problemas fossem apresentadas: Simplificação e aumento da disponibilidade da infraestrutura de entrega de conteúdo, utilização de cache distribuído, tunning da JVM utilizada, ocorrência de exceções que desafiam o senso comum, entre outros.
O material utilizado por Rodrigo na sua apresentação já está disponível na web.
Pesquisa e desenvolvimento no Facebook, por Rodrigo Schmidt
Como o Facebook apresenta os dados do seu mural de forma quase instantânea? Como são geradas as informações na linha do tempo, que dependem de ramificações e interligações que aumentam diariamente, quase que exponencialmente? Foi com questionamentos semelhantes a estes que Rodrigo Schmidt, engenheiro de software do Facebook, iniciou a sua palestra, e aos poucos foi mostrando como o site foi sendo moldado para atender tais requisições.
No desenrolar da apresentação, foi exemplificada a montagem de uma linha do tempo, passo a passo, desde a obtenção das fotos dos usuários participantes, até a extração de detalhes referentes aos assuntos mostrados, além do controle de acesso/visibilidade imposto por cada um dos usuários envolvidos.
A cada passo do exemplo, foram apresentadas estratégias de organização dos dados, modificações feitas no ambiente PHP e relatos de problemas enfrentados ao longo dos últimos anos. Os conceitos foram expostos na forma de uma linha do tempo "de baixo-nível", ilustrando como funciona o Facebook.
Duas palestras do track voltado à tecnologia Java receberam destaques de André Campanini.
Hibernate Efetivo: erros comuns e soluções, por Rafael Ponte
Rafael Ponte, da TriadWorks, apresentou dicas para o uso adequado do framework Hibernate, citando casos comuns de utilização ineficiente que podem até inviabilizar uma aplicação. Foram comentados seis problemas comuns e propostas de solução.
O primeiro dos casos citados foi a recomendação de que se deve adotar pool de conexões em produção, o que melhora a performance e evita erros por falha na abertura das conexões. Outro caso foi o problema conhecido como queries excessivas (n+1 queries), o qual Rafael considera ser o principal responsável por prejudicar a performance; e novamente foram apresentadas propostas de fácil solução: join fetch em queries, batch-size e @SubSelect.
Rafael demonstrou exemplos práticos de operações com processamentos em lote (batch), lentas demais pelo uso indevido do cache level 1, o que leva aplicações a apresentarem o erro OutOfMemoryError. O código do exemplo inicial sofreu uma melhoria com uso de batch-size e comandos flush() e clear(), o que já eliminou erros; e o código ao final ficou ainda mais performático com o uso de StatelessSession, opção de sessão que não utiliza cache e é mais baixo nível.
No site Slideshare é possível revisitar os slides da apresentação de Rafael Ponte.
Novas Fronteiras do Cache para Aplicações Java, por Julio Faerman
Julio Faerman, arquiteto de soluções na Red Hat e também editor do InfoQ Brasil, palestrou sobre o uso de cache na plataforma Java. Comentou a existência de cache em diversos meios, como disco, memória, processador (lado cliente), na aplicação, no banco (lado servidor); e que apesar de todas essas opções ainda falta algo: controle. Julio destacou a importância desse aspecto e adicionou que o uso de cache vai além de instâncias de HashMap em memória, podendo ser usado tanto dentro de uma JVM como fora, ou envolver notificações, expirar, entre outros fatores.
Comentou também sobre a sua crença de que não exista no mercado uma solução 100% completa que incorpore todas as opções de controle de cache, e que cabe ao especialista estudar tais opções e adotar a mais adequada para o seu cenário. Outro tema foi o cache distribuído e a especificação JSR 347 de Data Grids, que promete finalmente concluir a JSR 107 de JCache, paralisada há mais de 10 anos.
No site slideshare estão disponíveis os slides da apresentação.
A listagem abaixo inclui links para várias outras apresentações no QCon São Paulo, com links para o material de apoio utilizado pelos palestrantes.
Lean Innovation, usando Lean Startup em projetos reais: visão das trincheiras, Fernando de la Riva
REST In Java 2.0, Eder Ignatowicz
Spring vs Java EE, Nico Steppat e Guilherme Moreira
Programação assíncrona usando C# 5, Elemar Jr
Cinco (ou mais) coisas que você gostaria de saber sobre o iOS e o Objective-C, Ricardo Valeriano
Modular CSS: projetando CSS para aplicativos, Bernard de Luna
Responsive Web Design: conteúdo em todos devices, Eduardo Shiota
O dia-a-dia de uma startup, Daniel Cukier
Bootstraped startups: os 99% dos casos, Joca Torres
Construindo um avião em pleno voo na nuvem, Matheus Rossato
Kanban: Aplicando TDD à melhoria contínua do seu processo, Rodrigo Yoshima
Rumo ao DevOps: 80 iterações depois e aquilo que não está nos livros, Fernando Ultremare
Html 5 offline storage, Gabriel Oliveira
iOS internals, Fernando Ribeiro
ExtJS 4 + Sencha Touch 2: desenvolvendo aplicações mobile multiplataforma com reuso do seu código web, Loiane Groner
Desvendando as ferramentas e serviços para o desenvolvedor Android, João Bosco Monteiro
Dicas e truques para ser um bom inquilino no Cloud, Fabio Kung
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril, Luis Cipriani
O Tipo e o Tempo, Andrei Formiga
Empreendendo com caos e ordem, João Bosco
Jmine Batch, Julien Renaut e Renato Lundberg
REST in PaaS: PHP no Azure, Alexandre Gaigalas
Criando Arquiteturas de Cloud: Padrões e Boas Práticas, José Papo e Alex Tabor
Se você participou do evento, deixe também seu feedback nos comentários! Caso contrário, fica o convite, em nome dos editores do InfoQ Brasil, para a edição de 2013 do principal evento para desenvolvedores e arquitetos da comunidade brasileira.
by Luiz Junior /
Esse é o maior evento do segmento no Brasil, sem dúvidas, uma pena que não consegui vaga para participar, mas dá para aproveitar agora com os resumos e algumas apresentações disponibilizadas! 2013 estarei lá!