<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bruno Pereira &#187; soa</title>
	<atom:link href="http://brunopereira.org/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://brunopereira.org</link>
	<description>Open source, Java, web, python, client-side e outros hobbies :)</description>
	<lastBuildDate>Thu, 20 Oct 2011 00:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Projeto de Integração na América do Sul</title>
		<link>http://brunopereira.org/2010/01/03/projeto-de-integracao-na-america-do-sul/</link>
		<comments>http://brunopereira.org/2010/01/03/projeto-de-integracao-na-america-do-sul/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 13:06:15 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[posts em português]]></category>
		<category><![CDATA[concrete solutions]]></category>
		<category><![CDATA[integração]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[vagas]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=345</guid>
		<description><![CDATA[Pessoal, a Concrete está contratando analistas para um projeto de integração na América do Sul. Os requisitos das vagas são os seguintes:
ANALISTA DE SISTEMAS
Projeto de 3 meses (prorrogável) em país da América do Sul
Fundamental: Inglês fluente
Desejável: Espanhol
Arquitetura SOA
Web Services + WSSE
XPath
XQuery
UML
Orientação a objetos
Modelagem de processos e indicadores (SLA)
Enviar currículos somente EM INGLÊS para:
fernanda.godoy@concretesolutions.com.br
Atenção: Enviar currículos [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal, a Concrete está contratando analistas para um projeto de integração na América do Sul. Os requisitos das vagas são os seguintes:</p>
<p><strong>ANALISTA DE SISTEMAS</strong><br />
Projeto de 3 meses (prorrogável) em país da América do Sul<br />
Fundamental: Inglês fluente<br />
Desejável: Espanhol<br />
Arquitetura SOA<br />
Web Services + WSSE<br />
XPath<br />
XQuery<br />
UML<br />
Orientação a objetos<br />
Modelagem de processos e indicadores (SLA)</p>
<p><strong>Enviar currículos somente EM INGLÊS para:<br />
</strong><a href="mailto:fernanda.godoy@concretesolutions.com.br" target="_blank">fernanda.godoy@concretesolutions.com.br</a><strong></p>
<p>Atenção: Enviar currículos preferencialmente até o dia 07/01/2010, pois as vagas precisam ser preenchidas rapidamente.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2010/01/03/projeto-de-integracao-na-america-do-sul/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pesquisa SOA</title>
		<link>http://brunopereira.org/2009/04/15/pesquisa-soa/</link>
		<comments>http://brunopereira.org/2009/04/15/pesquisa-soa/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 00:35:51 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[posts em português]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=309</guid>
		<description><![CDATA[Pessoal, um amigo está conduzindo uma pesquisa para a sua dissertação de mestrado sobre SOA e Flexibilização Organizacional. Em função do restrito número de profissionais que possuem experiência na área, ele me pediu para ajudá-lo a distribuir o questionário (web) para amigos que também conhecessem do assunto.
O questionário é bem pequeno e não toma nem [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal, um amigo está conduzindo uma pesquisa para a sua dissertação de mestrado sobre SOA e Flexibilização Organizacional. Em função do restrito número de profissionais que possuem experiência na área, ele me pediu para ajudá-lo a distribuir o questionário (web) para amigos que também conhecessem do assunto.<br />
O questionário é bem pequeno e não toma nem 5 minutos(mesmo) do seu tempo. Segue o link abaixo, basta clicar e seguir as instruções:</p>
<p><a href="http://www.surveymonkey.com/s.aspx?sm=wKc7Ys_2frf39cs7hJ_2bewPYw_3d_3d" target="_blank">http://www.surveymonkey.com/s.aspx?sm=wKc7Ys_2frf39cs7hJ_2bewPYw_3d_3d</a></p>
<p>Fiquem à vontade para passá-lo adiante, quanto mais respostas forem coletadas melhor. O perfil do respondente não precisa necessariamente ser o de um desenvolvedor. Quaisquer profissionais que possuam experiência e saibam opinar sobre os benefícios de uma Arquitetura Orientada a Serviços para uma corporação serão bem vindos.</p>
<p>Agradeço aos que puderem participar. Como tenho bastante interesse na área, quem quiser discutir mais sobre o assunto é só entrar em contato.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2009/04/15/pesquisa-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O mito da caverna e o brain lock-in</title>
		<link>http://brunopereira.org/2009/04/13/o-mito-da-caverna-e-o-brain-lock-in/</link>
		<comments>http://brunopereira.org/2009/04/13/o-mito-da-caverna-e-o-brain-lock-in/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 04:11:57 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[carreira]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[arquitetura de referência]]></category>
		<category><![CDATA[blueplint]]></category>
		<category><![CDATA[EAI patterns]]></category>
		<category><![CDATA[enterprise integration patterns]]></category>
		<category><![CDATA[mito da caverna]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[platão]]></category>
		<category><![CDATA[portais]]></category>
		<category><![CDATA[portais corporativos]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[wikipedia]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=307</guid>
		<description><![CDATA[Tirado da Wikipedia: &#8220;O mito da caverna, também chamada de Alegoria da caverna, é uma parábola escrita pelo filósofo Platão, e encontra-se na obra intitulada A República (livro VII). Trata-se da exemplificação de como podemos nos libertar da condição de escuridão que nos aprisiona através da luz da verdade.&#8220;. Referência completa aqui.
Não vou comentar sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Tirado da <a title="Wikipedia" href="http://pt.wikipedia.org" target="_blank">Wikipedia</a>: &#8220;<span style="color: #0000ff;"><em>O mito da caverna, também chamada de Alegoria da caverna, é uma parábola escrita pelo filósofo <a title="Platão" href="http://pt.wikipedia.org/wiki/Plat%C3%A3o" target="_blank">Platão</a>, e encontra-se na obra intitulada A República (livro VII). Trata-se da exemplificação de como podemos nos libertar da condição de escuridão que nos aprisiona através da luz da verdade.</em></span>&#8220;. <a title="Mito da caverna" href="http://pt.wikipedia.org/wiki/Mito_da_caverna" target="_blank">Referência completa aqui</a>.</p>
<p>Não vou comentar sobre a essência das idéias de Platão, para este fim eu recomendo demais a leitura do texto na Wikipedia. Mas vou traçar um paralelo para situações corriqueiras atuais que nos mostram que a natureza humana não mudou muito nesses mais de 2300 anos que nos separam de Platão <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Desenvolvimento com Produtos x Desenvolvimento Customizado</h3>
<p>Ao longo da minha carreira, já estive focado no desenvolvimento com produtos e no desenvolvimento customizado de software. Tive contato com uma variedade razoável de produtos e tecnologias, com diferentes visões para o mesmo problema, e abordagens diversas de construção de software. Hoje em dia fico muito feliz por ter traçado esse caminho, pois nunca ficarei aprisionado na caverna.</p>
<p>O desenvolvimento com produtos às vezes tem um efeito colateral sobre a maneira das pessoas lidarem com problemas de software. Os produtos são concebidos de acordo com a visão de algumas pessoas sobre uma determinada classe de problemas. A concepção envolve a análise e o raciocínio de alguns profissionais sobre o problema, e o ferramental para prover soluções ao mesmo.</p>
<p>Isto quer dizer que ao utilizar um produto você está &#8220;ganhando&#8221; o tempo de raciocinar sobre o problema, e também na construção da solução. É como diz o mantra: &#8220;Não reinventar a roda&#8221;. Eu concordo plenamente! Porém, quem lê meus textos ou me conhece sabe que eu tenho mais algumas coisas a dizer <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Arquiteturas de Referência, Blueprints, Catálogos de Padrões</h3>
<p>Em muitas ocasiões eu vi profissionais experientes que viviam do seu expertise em algum produto. Às vezes o cara já fazia aquilo há anos, e com muita competência. Entretanto, na maioria dos casos em que lidei com profissionais assim, eles tinham a forma de raciocinar &#8220;engaiolada&#8221; pelos produtos. A &#8220;<em>arquitetura de referência</em>&#8220;, o &#8220;<em>blueprint do produto</em>&#8221; ou o &#8220;<em>catálogo de padrões</em>&#8221; do mesmo. A abordagem do produto é o que geralmente orienta o raciocínio do indivíduo, e ele reluta bastante em fugir dessa zona de conforto.</p>
<p>Acontece, meus amigos, que o amadurecimento das pessoas tem tudo a ver com sair da zona de conforto. Para dar mais significado às minhas ponderações, eu vou destacar 2 domínios que eu conheço bem e tenho boa experiência: Portais corporativos e SOA (eu sei que o termo está meio condenado, mas permitam-me a liberdade de usá-lo de forma ilustrativa)</p>
<h3>&#8220;O que você QUER&#8221; x &#8220;O que você PRECISA&#8221;</h3>
<p>Sobre SOA, o principal objetivo de negócio é facilitar a integração de várias aplicações/serviços heterogêneos. Este objetivo pode ser atendido de várias formas, e há muitos produtos focados em prover o &#8220;ferramental necessário&#8221;. A questão começa a ficar sinuosa quando se discute &#8220;<strong>O que você QUER</strong>&#8221; x &#8220;<strong>O que você PRECISA</strong>&#8220;. Se você fica &#8220;engaiolado&#8221; em um produto, vai tender a achar que <strong>PRECISA</strong> dos recursos oferecidos pelo mesmo, e que a abordagem dele é necessariamente correta.</p>
<p>Normalmente os problemas técnicos de SOA caem em uma combinação de topologias dos <a href="http://www.eaipatterns.com/" target="_blank">Enterprise Integration Patterns</a>. Um profissional maduro neste ramo precisa ter familiaridade com estas topologias de integração propostas. As idéias se aplicam em praticamente qualquer problema de SOA, e te dão uma visão de arquitetura desvinculada de uma implementação específica. Não se prenda à visão do produto, conheça a natureza do problema.</p>
<h3>Polyglot Programming</h3>
<p><a title="Neal Ford" href="http://memeagora.blogspot.com/" target="_blank">Neal Ford</a> <a title="Polyglot Programming" href="http://memeagora.blogspot.com/2006/12/polyglot-programming.html" target="_blank">escreveu sobre esta questão um tempo atrás</a>, e essa idéia também está presente no <a href="http://www.pragprog.com/the-pragmatic-programmer" target="_blank">Pragmatic Programmer</a>. Conhecer diferentes linguagens de programação, outros paradigmas de desenvolvimento e outros produtos é sempre importante.</p>
<p>Além de raciocinar sob diferentes pontos de vista, você consegue absorver muitas idéias legais fazendo isso. Inúmeras vezes eu adquiri novas idéias ao conhecer diferentes produtos. Isso se soma às suas <a title="Ferramentas de raciocínio" href="http://brunopereira.org/2007/12/25/educacao-aprendizado-e-ferramentas-de-raciocinio/" target="_blank">ferramentas de raciocínio</a> e amadurece sua visão sobre o problema.</p>
<p>Um programador poliglota consegue aprender novas linguagens, produtos e formas de pensar com muito mais facilidade. Pensar fora da caixa é importantíssimo. Para evoluir essa habilidade é fundamental experimentar diferentes pontos de vista, e ganhar massa crítica.</p>
<h3>Bons produtos ajudam a te dar massa crítica</h3>
<p>Eu converso bastante com alguns amigos sobre software em geral, e um tema recorrente é a análise de projetos que deram certo e projetos que fracassaram.</p>
<p>Para ter sucesso em um projeto de software, é fundamental que pelo menos um dos membros do time tenha massa crítica avançada sobre o domínio do problema em questão. Se nenhum dos membros tiver, a melhor coisa a se fazer é avaliar um produto bom para o problema que se quer resolver.</p>
<p>Isso não quer dizer que o produto será a solução final adotada, ele pode servir apenas para te dar massa crítica antes de escolher o caminho.</p>
<h3>Tendo massa crítica, utilize as facilidades dos produtos a seu favor</h3>
<p>Quando você já conhece o domínio e consegue pensar fora da caixa, dá para ter ótimos ganhos de produtividade usando bons produtos. Por exemplo, eu tenho trabalhado muito com portais corporativos, com variadas implementações. Quando analiso um produto de portal, eu verifico, entre outras coisas:</p>
<ul>
<li>Plataformas/tecnologias que ele exige/permite usar</li>
<li>Disponibilidade de wiki, fórum, blog, calendário, etc</li>
<li>Personalização de estilos/layouts (o cliente quer um portal com a cara dele, não com cara de produto)</li>
<li>Facilidade de extensão</li>
<li>Repositório de conteúdo</li>
<li>Integração de aplicações</li>
</ul>
<p>Já conhecendo bem os requisitos na construção de um portal, eu consigo em alguns dias analisar um produto ou implementação customizada de portal e avaliar estes critérios acima. O mundo ideal é trabalhar com um portal que te dê resultados rápidos, mas sem dificultar muito que você o ajuste da forma que o cliente deseja.</p>
<h3>Não caia no mito da caverna, explore sua criatividade</h3>
<p>Fuja dos dogmas, questione os hypes. Não limite a sua visão aos recursos de um produto. Enxergue o que é a complexidade natural do problema e o que é a complexidade introduzida por humanos ou produtos. Não permita que os produtos engessem a sua criatividade. Esteja sempre no controle, e saia da caverna!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2009/04/13/o-mito-da-caverna-e-o-brain-lock-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site da Concrete migrado para o Wordpress</title>
		<link>http://brunopereira.org/2009/03/17/site-da-concrete-migrado-para-o-wordpress/</link>
		<comments>http://brunopereira.org/2009/03/17/site-da-concrete-migrado-para-o-wordpress/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 01:42:21 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[posts em português]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[concrete solutions]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=294</guid>
		<description><![CDATA[Foi para o ar na última sexta-feira o site da Concrete migrado para o Wordpress. Eu tinha feito a migração já em Dezembro, mas só contratamos a nova hospedagem recentemente e então na sexta-feira o domínio foi apontado para o novo endereço.
Sobre a migração, foi muito fácil. O Wordpress é uma ótima ferramenta de blogs/sites [...]]]></description>
			<content:encoded><![CDATA[<p>Foi para o ar na última sexta-feira o site da <a title="Concrete Solutions" href="http://www.concretesolutions.com.br" target="_blank">Concrete</a> migrado para o <a href="http://www.wordpress.org" target="_blank">Wordpress</a>. Eu tinha feito a migração já em Dezembro, mas só contratamos a nova hospedagem recentemente e então na sexta-feira o domínio foi apontado para o novo endereço.</p>
<p>Sobre a migração, foi muito fácil. O Wordpress é uma ótima ferramenta de blogs/sites e é muito fácil adaptar um site existente para o Wordpress. Contando as páginas do site em português e em inglês são cerca de 50 páginas, e foram cerca de 20 horas de trabalho no total. Agora todo o conteúdo do site é facilmente publicável e ficará mais mais fácil dar à Concrete uma presença adequada na web.</p>
<p>Já havia um tempo que eu não estava satisfeito com o site da Concrete, e depois que <a href="http://brunopereira.org/2008/11/28/adeus-globocom-foi-um-grande-prazer/" target="_blank">saí da Globo.com</a> e fui para a sede, ficou mais fácil resolver isso. Já conversamos sobre várias coisas que podem e devem melhorar, e em breve creio que estarei contente com o site.</p>
<p>Duas coisas que não me agradam visualmente são a legibilidade do site e aquele menu em Flash, que é um limitador ao acesso. Vamos ajustar o visual do site para deixá-lo mais agradável para a leitura e retirar a navegação com Flash.</p>
<p>Além da questão visual, o conteúdo técnico está muito defasado. A empresa tem feito muitos projetos interessantes e há vários novos cases de sucesso que precisam ser incluídos no site. Além disso, eu gostaria bastante de colocar algumas demonstrações do que temos feito. A inclusão deste tipo de conteúdo trará uma visão muito mais objetiva do que os clientes podem esperar de retorno ao contratar os serviços da empresa.</p>
<p>Uma última adição importante será uma seção com conteúdo editorial de qualidade. Desde que saí da Globo.com estou atuando como consultor em projetos de pré-venda, e a maioria das coisas que eu poderia publicar fazem mais sentido que a Concrete publique. Assim, em breve eu recomendarei aos que se interessam pelos textos deste humilde autor que acompanhem também o site da Concrete <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A Concrete tem profissionais excepcionais e estou certo de que publicaremos conteúdo de alta qualidade na nossa área de atuação. As principais coisas com as quais estou envolvido atualmente são portais corporativos, aplicações colaborativas, BPM e integração de aplicações.</p>
<p>À medida que as coisas forem progredindo no site e no meu trabalho, publicarei mais por aqui e no site da empresa.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2009/03/17/site-da-concrete-migrado-para-o-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSR-311: Java API for RESTful Web Services</title>
		<link>http://brunopereira.org/2008/01/31/jsr-311-java-api-for-restful-web-services/</link>
		<comments>http://brunopereira.org/2008/01/31/jsr-311-java-api-for-restful-web-services/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 01:00:44 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[jax-rs]]></category>
		<category><![CDATA[jersey]]></category>
		<category><![CDATA[jsr]]></category>
		<category><![CDATA[jsr-311]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=76</guid>
		<description><![CDATA[Eu estou atualmente implementando alguns web services Restful, e estou avaliando opções para alguns pedaços do desenvolvimento. Eu já sabia que existia uma JSR para web services REST, mas ainda não tinha lido a mesma.Agora há pouco li a JSR-311, que definirá padrões de implementação Java para uma API Rest, do lado do servidor. A [...]]]></description>
			<content:encoded><![CDATA[<p>Eu estou atualmente implementando alguns web services Restful, e estou avaliando opções para alguns pedaços do desenvolvimento. Eu já sabia que existia uma JSR para web services REST, mas ainda não tinha lido a mesma.Agora há pouco li a <a href="http://jcp.org/en/jsr/detail?id=311" target="_blank">JSR-311</a>, que definirá padrões de implementação Java para uma API Rest, do lado do servidor. A parte de implementação de clientes será tratada em outra(s) JSR(s) .</p>
<p>Esta JSR é bastante interessante, e já pude ver nela o tratamento de coisas muito úteis. De principal destaque para mim está a abordagem de mapeamento de URIs em recursos e métodos e a questão do mapeamento de classes Java para dados com diversos content-types.</p>
<p>Em relação às URIs, há a definição de regras para mapear URIs em classes e métodos, instanciando as classes necessárias e invocando os métodos adequados. Suponha por exemplo uma requisicao HTTP PUT na URI /usuario/16728/produto/228/configuracao/. Em um protocolo definido por mim, isto representaria uma atualização nas configurações do Produto 228 para o Usuário 16728. Um ser humano consegue entender isso sem tantos problemas, mas uma implementação manual destes mapeamentos e o parsing dos parâmetros podem ser coisas bem trabalhosas. A JSR 311 utiliza várias annotations para conseguir definir o encadeamento de classes e métodos a partir da URI utilizada, e isto faz com que você consiga desenvolver em Java normalmente e ter as suas classes instanciadas e invocadas com URIs tão flexíveis quanto você queira. Muito bom ter isso como recurso, pois implementar na mão é bem trabalhoso.</p>
<p>Outra coisa muito interessante é a maneira de mapear classes Java para diversos content-types. Isso é algo fundamental para uma implementação Restful com bastante flexibilidade E possivelmente alta performance. A idéia por trás disso é que o servidor recebe uma requisição de um cliente e verifica quais são os content-types que o cliente aceita. Com base nestas informações, o servidor escolhe a forma que irá utilizar para transmitir os dados.</p>
<p>Suponha por exemplo que uma aplicação PHP está se comunicando com seu servidor, e ele lhe informa que aceita os content-types text/plain, text/xml e application/json. O servidor pode escolher qual formato utilizar para o envio e possivelmente o envio com formato json facilita bastante a aplicação PHP. Este mesmo servidor pode receber requisições de uma outra aplicação Java, que preferencialmente receberá do seu servidor um stream binário, que terá a melhor performance de todas as opções.</p>
<p>O uso desta abordagem dos mapeamentos em content-types permite que sua aplicação tenha ao mesmo tempo alta interoperabilidade e alta performance. Você conseguirá se comunicar com várias plataformas e aplicações diferentes, e continuará tendo a opção de alta performance, caso seja uma aplicação da mesma plataforma. Você não consegue isso com web services WS-*. Eles não têm tamanha flexibilidade.</p>
<p>O meu próximo passo agora será analisar com detalhes o <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a>, a implementação de referência desta JSR. A especificação em si ainda está um tanto crua, pois ainda é um early draft. Já pude ver vários pontos interessantes, mas a definição ainda está sujeita a muitas modificações. Vou avaliar agora o que o Jersey já oferece e torcer para que ele já tenha componentes fáceis de usar e flexíveis. A proposta dele é excelente, vamos ver se a implementação consegue oferecer estes recursos sem amarrar muito as decisões de projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/01/31/jsr-311-java-api-for-restful-web-services/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Atom feeds for enterprise application messaging</title>
		<link>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/</link>
		<comments>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 16:12:59 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atom publishing protocol]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[enterprise messaging]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[restful]]></category>
		<category><![CDATA[restful web services]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=75</guid>
		<description><![CDATA[In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in [...]]]></description>
			<content:encoded><![CDATA[<p>In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in this field is the Atom Publishing Protocol. This is the blueprint solution for RESTful web services, and its adoption is growing fast, reaching much broader scope than just blog applications using the <a href="http://en.wikipedia.org/wiki/Atom_(standard)" target="_blank">Atom Format</a>.The Atom format and AtomPub protocol can both be used for many interesting purposes. This year I&#8217;m working on a big refactoring (actually a new implementation) of a widely used <a href="http://www.globo.com" target="_blank">Globo.com</a> application. This application (let&#8217;s call it Register) is responsible for the creation of new users and provisioning new services to them, among other features.</p>
<p>A nice concept present in the original development is the use of Application Connectors. Through these connectors, other applications get notified of events that happened in the Register application. An example is: when a new subscriber (a paying user) is created, a connector sends the notification to another application in order to create the subscriber&#8217;s mailbox in the company&#8217;s external mail provider. Another example is: when a user gets provisioned in the blogging service, another connector sends a notification to the blogger application, that does what it needs in order to create the user&#8217;s directory and quota on the file server.</p>
<p>Although i like this concept, it currently has some problems. This connector&#8217;s invocation is done explicitly by the Register application. The Register application knows that a new subscriber must receive a new mailbox, and it needs to call a given connector to do this. This is my biggest concern with the current implementation. I strongly believe that an application that creates users must not know anything about mailboxes. In the current structure, when a new application ABC must be notified of events in application XYZ, application XYZ must be modified to invoke a new connector. This doesn&#8217;t please me at all. Let me explain a solution that pleases me more <img src='http://brunopereira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To explain my idea, I&#8217;ll propose some examples involving Google and its services. As we all know, Google offers several different services, all of which can be accessed using the same Google account. When you register at Google, you receive a mail account. Let&#8217;s suppose that Google Register application sends a new entry to an Atom feed every time a new user is created. This way, every user creation is present on the Atom Feed. If an application (for example Google Mail) needs to be notified of the creation of new users, it just needs to subscribe to the Register&#8217;s Atom feed.</p>
<p>Let me propose a richer example now. Let&#8217;s say Google starts to offer some super cool software development services. If you&#8217;re a developer, you can ask them to give you a &#8220;development account&#8221;. This development account would give you access to a Subversion repository, a Bugzilla project and a MySql database. Each of these would be an independent service offered by them, subject to change at any given time. The activation of &#8220;development accounts&#8221; could also populate an Atom feed.</p>
<p>This way the Subversion, Bugzilla and MySql services could be subscribers of the feed, doing everything they need when a new development account is activated, in asynchronous manner. The application that activates the development account has no knowledge of any other services. If Google wants to offer new services such as a Maven repository or a Continuous Integration environment, no problem. The new services would just subscribe to the Atom feed and do whatever they need when a new account is activated.</p>
<p>If Google wants to offer a free development account and a non-free account with better features, there could be another Atom feed for the activation of the paying accounts or maybe updates to the same existing feed. The Register application would know only about registrations, and other components could be easily plugged and unplugged from this process, without modifications on the Register application. Ah, and worth mentioning&#8230; totally decoupled from any specific platform. I don&#8217;t know how to implement any kind of messaging more decoupled than that.</p>
<p>This is much much better than the way our Register application sends notifications currently. And I&#8217;ll be pretty happy once we manage to do this, it&#8217;ll be so cool!</p>
<p>By the way, these Google&#8217;s software development services would be awesome. My friend <a href="http://neobject.wordpress.com" target="_blank">Bairos</a> kindly provides me Subversion and Trac services, but he doesn&#8217;t have Google&#8217;s bandwidth <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Let&#8217;s hope Google gets to know about this and starts offering these services. It&#8217;d be amazing!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

