Precisamos de um descritor de serviços REST?

maio 14, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Me perguntaram sobre isso na minha apresentação de REST na Globo.com e isso foi assunto de uma discussão interessante hoje no CEJUG. Como é um assunto que pode interessar a bastante gente e eu me interesso muito por web services, resolvi falar mais sobre isso aqui no blog.

Os web services WS-* possuem o WSDL (Web Services Description Language), um artefato amplamente aceito que descreve de forma padrão os serviços da aplicação. Ao especificar no WSDL quais são os schemas XML dos documentos que serão trocados e a cardinalidade precisa de cada elemento, conseguimos garantir que qualquer cliente que entenda o padrão estabelecido será capaz de interpretar os documentos e comunicar-se corretamente com os serviços. Além disto, a maturidade deste padrão traz a vantagem de que já existem geradores de clientes em várias linguagens a partir de um documento WSDL.

Entretanto, WSDL (bem como muita coisa em WS-*) é complexo. Um ser humano que tenha que analisar um WSDL grande perderá um bom tempo para entender o que está descrito no documento. Já REST não tem uma forma padrão de especificar os contratos dos serviços.

Embora a versão 2.0 da especificação WSDL permita descrever web services REST, os principais projetos open source da área como o Apache Abdera, Google Data API, Jersey e o Mule não utilizam esta forma de publicação. Não tenho conhecimento de nenhum projeto publicamente divulgado que faça uso do WSDL 2.0 para descrever serviços REST, e a adoção desta capacidade é baixíssima (se é que existe).

O projeto Jersey oferece opcionalmente o WADL, que é uma forma de descrever serviços REST. Confesso que ainda não olhei o WADL para ver se seria interessante usá-lo. Pelo que sei, entretanto, a adoção dele também é muito baixa.

Existe também o documento de serviços do AtomPub, que é bem interessante. Ele é um documento simples que lista quais são as coleções disponíveis e a localização das mesmas. O documento informa também quais são os MIME types aceitos em cada coleção.

Eu considero interessante que a aplicação ofereça uma interface simples de consulta dos serviços disponíveis. Não é obrigatório, mas quando a aplicação tem uma certa quantidade de clientes é bem legal ter isso para facilitar.

Em dois projetos que eu trabalhei, eu implementei um Servlet simples que listava todas as URIs disponíveis na aplicação, quais métodos HTTP são aceitos em cada uma das URIs e além disso um exemplo de XML manipulado em cada uma das URIs. Isso foi algo que eu achei bom o suficiente, e não tão custoso. Normalmente a documentação de verdade dos serviços fica em algum lugar como uma Wiki, ou uma página qualquer com a descrição detalhada de como interagir com os serviços.

A questão principal é que quando você segue as boas práticas de desenvolvimento REST, os seus serviços ficam muito mais claros para quem precisa se integrar. Por exemplo, eu trabalhei em um projeto crítico de integração com o Google esse ano. Tive que usar várias funcionalidades da Google Data API. A API deles é REST, e encapsula os dados com o formato Atom. Eles não oferecem nenhuma interface semelhante ao WSDL, eles simplesmente têm uma página com a documentação dos serviços.

Como eles seguiram as boas práticas de implementação REST, eu rapidamente aprendi a utilizar a API deles. Os protocolos de comunicação REST são bem semelhantes, e mais simples de entender do que qualquer coisa com WS-*. Pouco mais de 1 hora depois de olhar a documentação deles, eu já estava conseguindo me integrar com eles, com os primeiros exemplos.

O Guilherme fez uma observação interessante durante a discussão disso na minha apresentação no Tech Talk. Quando você segue as boas práticas e implementa um protocolo conciso e claro, de certa forma podemos dizer que a implementação se “auto-documenta”. É algo que podemos traçar um paralelo ao que acontece ao utilizarmos Domain Driven Design. Aproximando a linguagem do código do domínio de negócio, facilitamos a compreensão da aplicação por pessoas que nunca a tinham visto antes. Uma boa arquitetura de web services declarativos (REST) fica muito mais clara do que uma arquitetura de web services imperativos (WS-*). Isto acontece porque com REST o que fica em destaque são os Recursos (que representam conceitos claros do domínio), em vez de Operações.

É claro que as pessoas ainda terão que ler um pouco da documentação, mas como os conceitos em sua maioria já estarão “no sangue”, as dificuldades iniciais são menores do que com WS-*.

O Felipe Gaúcho comentou no CEJUG sobre a capacidade de gerar clientes automatizados com WSDL. Embora isso seja verdade, no meu ponto de vista isso é meio que um mito. Não conheço ninguém que faça integrações automatizadas sem depender de seres humanos. A motivação disso é clara. Integrações envolvem regras de negócio, e ninguém que eu conheço faz negócios automáticos, sem definir as regras 🙂

Existia o mito de que as aplicações “descobririam” serviços automaticamente com UDDI e se virariam para fazer as integrações, gerando os clientes automaticamente. Embora isso seja tecnicamente possível, na prática isso pra mim é uma viagem que serviria mais para desenvolvimento de inteligência artificial do que para web services propriamente 🙂

Embora esta precisão do WSDL seja um ponto positivo, eu tenho a convicção de que a clareza que temos ao usar REST supera e muito as vantagens de termos geradores de clientes automatizados. Quanto a WS-* x REST de uma maneira mais geral, tem uma frase que eu gosto de utilizar. WS-* é apenas overhead a não ser que você tenha informações relevantes nos seus cabeçalhos SOAP. Se você nunca se preocupou MUITO (veja bem, MUITO) com o que está indo nos seu cabeçalhos SOAP, provavelmente um protocolo REST seria mais interessante.

Tem uma opinião a respeito disso? Estou ansioso para conhecê-la! 🙂


HP compra EDS. Mas isso faz algum sentido?

maio 14, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Hoje foi anunciado que a HP está comprando a EDS. O valor divulgado da compra é de US$ 13.9 bi.

Li algumas notícias dizendo que este movimento da HP tem como objetivo fortalecer a empresa para competir com a IBM. Entretanto, tenho sérias dúvidas se isso terá sucesso. A HP tem muita força na venda de equipamentos, e também presta serviços de manutenção de infra-estrutura. Já a EDS é uma gigante na prestação de serviços de software, tanto na área de manutenção de infra-estrutura como no outsourcing de aplicações, e consultoria de uma maneira geral. Como algumas áreas das empresas claramente se sobrepõem, imagino que muitos empregos serão cortados.

A HP passará a ter uma estrutura gigantesca, mas ainda ficará atrás da IBM em termos de faturamento. Além disso, embora fortaleça a empresa na disputa com a IBM, não fortalece tanto. A IBM tem uma área enorme de produtos de software que a HP continuará não tendo. Será muito difícil para a HP ganhar espaço contra a IBM sem um braço de software forte. Principalmente na área de middleware, onde a IBM está muito forte. E além da IBM, a HP teria que brigar também contra a Oracle neste nicho, depois que ela comprou a BEA.

É bom lembrarmos que a HP não tem lá um bom histórico em compras. A aquisição da Compaq foi bem traumática e não teve custo-beneficio muito bom para a HP. O mercado americano também não reagiu bem a essa compra da EDS. As ações de ambas as empresas caíram razoavelmente, mostrando que a maioria das pessoas do mercado não achou este negócio uma boa idéia para as empresas.

Na minha opinião, a HP após esta compra ainda é uma empresa incompleta para competir com a IBM, Oracle e Sun. Antes dessa compra a HP não era tida como concorrente direta dessas empresas, mas agora ela é. Penso que para a HP ter realmente relevância nessa disputa, ela precisará de um braço forte de middleware, e uma boa pilha de software em geral.

Com o histórico que a empresa tem, duvido que ela se transforme nisso por conta própria. Na minha visão o que faz sentido é a HP comprar mais alguma(s) empresa(s), para conseguir complementar suas ofertas de serviços. Considerando a consolidação atual do mercado, acho que faria sentido que a HP comprasse a Red Hat, levando o JBoss de lambuja. Além disso seria interessante que eles contassem com algum servidor de BD na pilha, já que os concorrentes possuem isso (DB2, Oracle e MySql). Uma ótima opção seria comprar a EnterpriseDB, que oferece uma versão comercial do Postgres, o excepcional BD open source.

De todas as grandes aquisições que rolaram recentemente, esta da HP é a que menos faz sentido, pelo menos atualmente. Dependendo das ações que eles tomarem em seguida, esta compra pode ser uma boa jogada ou um episódio lamentável como a compra da Compaq. Torço para que a HP aumente seus já fortes vínculos com Linux e Open Source e compre a Red Hat para se apresentar firmemente como competidora de peso. E claro, continuo torcendo pelo sucesso do meu estimado Postgres 🙂


Netbeans growing stronger

maio 12, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

During several years I’ve been a pretty happy Eclipse user, rarely feeling the need to use anything else. We know there are plugins for many many things, and a lot of development tools are Eclipse-based right now. The editor is awesome, and so are the refactoring tools. The support for web app development is also very nice. Eclipse supports a wide set of frameworks and technologies, and it’s not only aimed at Java development.

Why would someone even look at anything else, having such a great tool? Well, it turns out that our field is evolving really fast, and it’s very hard to follow this current pace, even for the most dedicated and passionate ones. Currently there are several technologies evolving very fast, and they are meaningful to a lot of enterprise developers. The rise of the JVM’s dynamic languages is crystal clear. Strong is also the growth of RESTFul web services. I’m personally very interested in both fields.

I’m currently using REST (lately with Jersey) for a lot of integrations between applications. The power it gives me is really nice, and I’m improving my developments each new month. I have also studied Groovy/Grails recently and really liked it. I wanna try JRuby on Rails sometime in the next weeks, to see what it offers and check how it compares to Grails. If you’re a Java enterprise developer, I’m sure you’re following the growth of these nitty things.

But where does Netbeans enter this talk? Well, Netbeans is doing a great job supporting these new technologies, and it’s way ahead of Eclipse in this field right now. Have you seen how easily you can develop RESTFul web services with Netbeans 6.1? Jersey support is great, very productive. The support for JRuby on Rails and Grails is also present, in a much more advanced state than Eclipse’s. Netbeans is doing a much better job than Eclipse regarding Web Services and JVM languages right now.

Swing development in Netbeans is very nice since version 5.0 (with the release of Matisse), and developing for mobile devices is also easier in Netbeans. Currently I don’t develop swing nor mobile applications, so this doesn’t really affect me.

However, I develop many RESTFul web services. And I wanna use more and more the JVM’s dynamic languages. Ignoring Netbeans is not a clever idea right now.

I still find Eclipse’s interface and editor much better than Netbeans’s. I also know a lot of Eclipse’s shortcuts and know very few in Netbeans. SWT is also faster than Swing, so Eclipse is faster than Netbeans. But considering what I said, I’m leaning towards the use of both IDEs at the same time. Since our machines are now much better equipped with RAM, I can have them open at the same time and also a couple of servers, with no memory shortage.

My Eclipse days are definitely not over, but now he’s gonna divide my attention with Netbeans 🙂 I hope I can become as productive with Netbeans as I am with Eclipse, even if it takes a few weeks. My first wish would be the Eclipse’s Quick Fix (Ctrl + 1) avaiable in Netbeans. Even without it, I’m sure my usage of Netbeans will certainly grow, and think this competition between the IDEs is very good for us. Let Eclipse Ganymede come!


Cidade não é problema. Cidade é solução

maio 11, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Este fim de semana vi mais um vídeo muito interessante no TED. O vídeo em questão foi uma apresentação do Jaime Lerner, sobre como transformar e melhorar cidades. A frase título do post é de autoria dele.

Eu já conhecia o trabalho que o Jaime Lerner fez em Curitiba, mas sem tantos detalhes. Assistir à sua apresentação falando das idéias por trás dessa reestruturação da cidade foi muito interessante. Eu já falei anteriormente que estou muito desanimado com o Rio de Janeiro, e desejo morar em Curitiba no futuro de médio prazo.

Lerner falou de algumas coisas muito importantes na organização das cidades atualmente. A necessidade de um transporte público de qualidade é gritante. Curitiba conta com uma rede de transportes muito eficiente, com ônibus do tipo “sanfona”, que comportam mais de 200 passageiros. Além disso os pontos de ônibus foram projetados para se encaixar com os ônibus, fazendo com que os pontos sejam semelhantes a paradas de metrô. Isto certamente contribuiu para um trânsito muito mais eficiente do que temos no Rio de Janeiro e em São Paulo, e facilita muito a vida das pessoas. Além disso, reduz bastante a poluição, pela diminuição de carros em circulação.

Outra coisa interessante que ele mencionou foi o sacrifício que muitas pessoas têm que fazer nas grandes cidades por morar muito longe do local onde trabalham ou estudam. Isto toma muito tempo diariamente das pessoas e somando-se isso ao cansaço, não sobra tempo para muita coisa. Aqui no Rio conheço algumas pessoas que fazem verdadeiras maratonas diárias. O Aspira (estagiário da minha equipe) passa cerca de 6 horas por dia se deslocando, pois todos os dias vai para a faculdade, estágio e então para casa, e todos os trechos são longos. Isto é o tipo da aberração que ocorre bastante em cidades grandes com trânsito complicado, e certamente prejudica bastante as pessoas.

Para finalizar, ele comentou que Curitiba é a cidade onde mais se faz coleta seletiva de lixo no mundo, com mais de 70% do lixo sendo corretamente separado. Como ele conseguiu isso? Focando bastante atenção da campanha nas crianças, que logo aprendiam este novo processo e então educavam os seus pais. Muito inteligente e muito educativo.

Pouco depois de assistir à apresentação, fui descobrir que a idéia do “Metrô na superfície” no Rio surgiu em uma consultoria que ele prestou à cidade/estado em 2006. Sem dúvida é uma boa idéia e tem ajudado no controle do tráfego intenso que temos.

Os paranaenses tiveram a felicidade de contar com o Jaime Lerner como prefeito de Curitiba por 3 vezes e como governador do Paraná por 2 vezes. Sua contribuição para a evolução do estado foi enorme, e certamente a prosperidade oriunda do seu governo é responsável por fazer de Curitiba a cidade onde pretendo morar.

Infelizmente isso me traz também à cabeça uma lembrança triste. A incrível sucessão de administrações corruptas e incompetentes que temos no Rio nas últimas 2 décadas transformou nossa cidade querida em um lugar caótico. Um palco de batalhas sangrentas do crime contra a polícia. Um lugar onde a educação está em uma situação péssima (enquanto Curitiba é a melhor cidade do Brasil em educação). Um lugar onde a dengue está atacando com cada vez mais força. Onde já foi alertado que o mesmo mosquito trará também a febre amarela. Onde o trânsito está caótico e o custo imobiliário está absurdo.

Vamos torcer para que no futuro um milagre nos envie alguém como o Jaime Lerner para salvar o Rio de Janeiro. Enquanto isso eu continuo meus planos para me mudar para Curitiba, por onde ele já passou.


Microsoft entrando em colapso

maio 8, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

O Antônio Carlos publicou um post muito interessante. Eu já venho há algum tempo acompanhando as dificuldades da Microsoft nos últimos anos, e é impressionante como eles estão com um caminho espinhoso pela frente.

Já há fortes sinais de que a Microsoft lançará o Windows 7 ano que vem, após sérias dificuldades com o Vista. É verdade que o Vista está conseguindo vender alguma coisa, mas é bem menos do que a Microsoft esperava. Além disso, recentemente li que o market share do Windows XP se manteve praticamente constante, e quem caiu na verdade foi o Windows 2000.

Depois que o Antônio e o Azamba me falaram no Tech Talk da situação sofrível do Silverlight, fiquei com a impressão de que a Microsoft está mesmo em apuros sérios. O IE aos poucos está cedendo mais espaço pro FF, Windows Media já está numa situação crítica perante o Flash Video e em praticamente todas as frentes da Microsoft eles estão com dificuldades.

A Gartner durante muito tempo era conhecida por previsões sempre favoráveis à Microsoft (até mais do que deveria), mas isso já está mudando. Recentemente eles disseram que o Windows está entrando em colapso, e que a situação está insustentável. Até o Office que sempre foi a estrela do sucesso da empresa está tendo algumas complicações. A Microsoft investiu nesse formato XML “aberto” em vez de apoiar as iniciativas do Open Document. Pois recentemente foram feitos testes dos arquivos do Office 2007 contra o formato “XML aberto” da MS e milhares de incompatibilidades foram detectadas.

A nova febre do momento na internet é o crescimento das redes sociais, e a Microsoft está tendo um papel pífio nisso. Diversos serviços enormes de redes sociais estão surgindo, e a saída pra Microsoft provavelmente será comprar algumas dessas iniciativas.

Antônio, seu questionamento foi muito feliz. Acredito que a resposta para a real descida da Microsoft como um todo está na pergunta que você fez. Por quanto tempo o desktop ainda será tão relevante como é hoje? A Microsoft certamente reza para que seja para sempre 🙂


Obina, o iluminado

maio 5, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Obina, o iluminado

Gostando ou não do simpático baiano de Vera Cruz, é inegável que ele tem estrela. Nos 2 jogos da decisão do Campeonato Carioca de 2008, Obina entrou somente no 2º tempo, mas marcou 3 dos 4 gols do Flamengo na decisão.

É incrível que por mais que em alguns jogos ele brigue com a bola, na hora da decisão a estrela dele brilha e ele sempre marca gols importantíssimos. Hoje não foi diferente e ele teve papel fundamental na conquista do 30º título estadual do Flamengo.

Podemos ver o Obina como uma versão moderna do Fio Maravilha. Futebol pode não ter muito, mas estrela e carisma não faltam 🙂

O Obina já me irritou profundamente, e já o xinguei muito. Mas depois de tantos gols decisivos, esse baiano movido a acarajé e vatapá conquistou espaço definitivo na história do Flamengo. Depois de hoje você pode chutar de canela à vontade Obina, você tem crédito 🙂

Abaixo o vídeo com os gols da final:


Enquanto isso, a Microsoft desiste de comprar o Yahoo

maio 4, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Em uma nota divulgada publicamente ontem, a Microsoft anunciou que desistiu da idéia de comprar o Yahoo.

As duas empresas não chegaram a um consenso financeiro, mesmo após a Microsoft aumentar sua oferta inicial em cerca de US$ 5 bi. Aparentemente a diferença de cultura entre as empresas é tão grande que o Yahoo exigiu um valor muito alto pela compra, para recompensar seus acionistas.

O Yahoo chegou até mesmo a flertar com uma possível parceria com o Google para serviços de busca, na qual o Yahoo retornaria links patrocinados pelo Google em uma parcela pequena de resultados. Isto valeria apenas nos Estados Unidos e seria um teste para ver o quão interessante isso poderia ser para as duas empresas.

Fazendo parceria ou não com o Google, o fato é que o Yahoo recusou as propostas da Microsoft. Os acionistas certamente temiam pela perda da identidade da companhia, e preferiram arriscar e continuar tendo competir de forma individual.

Depois dessa decisão, ficará muito difícil para a gigante de Redmond a disputa com o Google, considerando a enorme penetração que este está conquistando. A briga por receitas de propaganda ficará muito difícil para a gigante de Redmond, e acredito que a única forma de lutar contra isso seja a oferta de serviços web mais interessantes, para conquistar audiência. O ponto positivo para nós é que certamente esta competição trará mais e mais novidades interessantes para usarmos na internet.