Este ano tive a oportunidade de participar do evento TDC 2013 (The Developer’s Conference) na cidade de Florianópolis/SC, considerado um dos eventos mais populares sobre tecnologia na região. Logo, decidi elaborar este artigo para compartilhar um pouco do que foi apresentado nas palestras, bem como a minha percepção e opinião geral do evento. Este review trata especialmente das trilhas que participei: Banco de Dados, Java e Arquitetura.
Trilha de banco de dados
Você já se perguntou como o Facebook funciona? Qual o banco de dados que eles utilizam? Pois bem, a maior parte das palestras na trilha de Banco de Dados envolveu um conceito já bastante discutido, mas que até então eu não tinha conhecimento: o NoSQL. Acredito que vocês talvez já conheçam ou até tenham trabalhado com bancos de dados NoSQL, mas eu, sinceramente, não conhecia a capacidade desse mecanismo.
O NoSQL traz um conceito bem diferente do que conhecemos sobre banco de dados relacional, e tem com objetivo gerenciar grandes quantidades de dados focando especialmente na escalabilidade e disponibilidade. Não há tabelas, colunas e linhas, mas há chaves, valores e grafos.
Um dos palestrantes usou como exemplo um sistema para gerenciar as ações de uma bolsa de valores. De inÃcio, os desenvolvedores tentaram modelar um banco de dados relacional utilizando o PostgreSQL, devido ao controle de integridade transacional e pela capacidade do SGDB em executar consultas complexas. Porém, como a carga de dados é consideravelmente alta, o banco de dados não foi capaz de gerenciar as operações excessivas, resultando em perda de dados e problemas visÃveis de desempenho. A solução para estes problemas foi encontrada na definição não-relacional do NoSQL para estruturar o banco de dados. Através deste conceito, foi possÃvel trabalhar com escalabilidade, agilidade e desempenho nas operações de escrita e busca de dados, o que é dificilmente alcançado com bancos de dados relacionais.
Vale ressaltar que isso não significa, em nenhum momento, que bancos de dados relacionais não são apropriados para armazenar informações. Pelo contrário, eles são plenamente adequados para o desenvolvimento de grande parte dos softwares comerciais e integrados, inclusive ERPs. Entretanto, é importante mencionar que há situações em que o NoSQL oferece melhor desempenho, como softwares complexos, redes sociais e serviços online que exigem flexibilidade para expandir a escalabilidade (tanto na forma horizontal quanto na vertical).
Se você utiliza o Facebook, provavelmente deve imaginar que a cada minuto inúmeras requisições são enviadas ao banco de dados para inclusões e atualizações (comentários, publicações, curtidas, compartilhamentos) e consultas (feed de notÃcias, mensagens e informações de perfis). Seguindo este raciocÃnio, imagine todos esses dados sendo manipulados em tabelas e relacionamentos. Parece impossÃvel? Para o NoSQL, não. Por meio de indexadores, coleções de chaves e sistema de grafos, os bancos de dados NoSQL trabalham com esquemas distribuÃdos ao invés de definições de tabelas.
Neste artigo não pretendo entrar em maiores detalhes sobre o NoSQL. Como é um tema extenso e bastante conceitual, o correto seria elaborar um artigo exclusivamente sobre ele. Enquanto isso, se você se interessou pelo assunto, há uma gama de artigos na internet sobre os conceitos e o funcionamento do NoSQL. Logo após assistir palestra, decidi pesquisar um pouco mais e encontrei um ótimo artigo no site da IBM sobre o Apache Cassandra. Vale a pena conferir:
http://www.ibm.com/developerworks/br/library/os-apache-cassandra/
Trilha de Java
Na trilha de Java, infelizmente algumas palestras deixaram um pouco a desejar. Alguns palestrantes não souberam administrar o tempo disponÃvel e foram obrigados a interromper a palestra ou “apressar” o tempo para que fosse possÃvel apresentar tudo o que havia nos slides. Mesmo assim, houve uma ótima palestra ministrada por Bruno Souza, popularmente conhecido como “JavaMan”, que destacou as vantagens da utilização da computação em nuvem em conjunto com outras ferramentas para desenvolvimento em Java, como o Maven. Além disso, o JavaMan trouxe um assunto muito importante no ambiente de desenvolvimento de software nas empresas: o repositório de componentes e a integração contÃnua do código-fonte.
Concordei com ele sobre o fato de que muitos desenvolvedores duplicam código por causa da falta de conhecimento dos componentes que muitas vezes já existem no repositório. Neste contexto, quando digo “repositório”, me refiro à qualquer forma de armazenamento de componentes, módulos e funções em comum utilizados no desenvolvimento de uma ou mais soluções de software.
Por exemplo, suponha que o desenvolvedor de uma empresa criou um componente para entrada de texto que aceite somente números, exiba o conteúdo no formato monetário e pinte o conteúdo de vermelho caso o valor seja negativo. Dois anos depois, este desenvolvedor se desliga da empresa e um novo desenvolvedor é contratado para dar continuidade no projeto. Este desenvolvedor, após conhecer melhor o sistema, observa a necessidade de criar um componente do mesmo tipo.
Como não há um repositório de código-fonte e não houve repasse de conhecimento, o desenvolvedor acaba por criar um novo componente com a mesma funcionalidade. Resultado: além da duplicação de código, os componentes apresentarão comportamentos diferentes, ferindo a padronização do sistema. Portanto, considere a importância de criar e manter repositórios atualizados, utilizar controle de versões e, se possÃvel, utilizar um framework bem definido com componentes personalizados.
Ainda na trilha de Java, Edson Yanaga ministrou uma palestra a respeito de boas práticas de programação orientada a objetos. Uma das práticas que me chamou a atenção foi o encapsulamento das regras de negócio dentro da modelagem de classes, de modo que estas classes possam ser utilizadas para declarar atributos ao invés de tipos primitivos. Como exemplo, ele criou uma classe com o nome de “CPF” e incluiu uma validação para verificar se o número de CPF de um cliente é válido. Já que a regra de negócio está encapsulada na própria classe, poderÃamos considerar em utilizá-la dessa forma:
1 2 3 4 5 |
// ao invés de: private string cpf; // declarar como: private CPF cpf; |
A vantagem é manter as regras de negócio desacopladas das funções de validação, bem como a possibilidade de utilizá-las em pontos distintos do código (ou em soluções distintas) sem se preocupar com a duplicação do código-fonte ou com a necessidade de chamar a função de validação em cada evento. Essa prática é ainda mais interessante quando a regra de negócio é constante, ou seja, raramente sofre alterações (como validações de CPF, CNPJ, datas, valores, etc).
Trilha de Arquitetura
A trilha de arquitetura, assim como a de Java, também deu foco na computação em nuvem e no desenvolvimento Web. Essas tecnologias, sem dúvidas, são as tendências para o futuro das aplicações em virtude da facilidade de acesso à internet que temos atualmente, inclusive por dispositivos móveis. Nesse cenário, aplicações desktop que rodam apenas em redes locais infelizmente começam a perder espaço. A necessidade de adaptar o software para ser utilizado em tablets, celulares e em computadores fora da empresa mobilizou empresas de software a ampliar o campo de desenvolvimento para abranger tecnologias web e tecnologias móveis. Prova disso é a trilha de Android que também foi incluÃda na pauta de palestras do TDC.
Apesar da correria, consegui tirar fotos com alguns palestrantes, como o José Papo e o JavaMan.
Foto com José Papo | Foto com Bruno Souza (JavaMan) |
A respeito do evento em geral, há prós e contras. No primeiro dia houve um pequeno tumulto no credenciamento de todos os participantes, que resultou no atraso de 50 minutos para o inÃcio da primeira palestra. Consequentemente, também afetou o horário do almoço e das palestras posteriores, mas nada que comprometesse o conteúdo.
Com exceção a isso, o evento foi bem organizado. Os recursos visuais utilizados nas palestras eram de boa qualidade e o ambiente bem agradável. Devo assumir também que a base de experiência e conhecimento dos palestrantes em relação aos assuntos abordados foi perceptÃvel. Embora alguns deles não conseguiram apresentar o conteúdo de forma clara e dinâmica, eu pude compreender a ideia central sem dificuldade alguma.
Pessoal, mais uma vez, obrigado pela atenção.
Abraço!
Legal que você curtiu o TDC. Você citou noSql e grafos, quera saber se chegou a ver minha apresentação sobre bancos de grafos. Foi aúltima da trilha.
Até
Olá, Priscila! Sim, fiquei até o final da trilha e vi a sua apresentação. Foi muito interessante! É uma honra ter um comentário seu aqui no blog. Obrigado por ter compartilhado o conhecimento conosco!