<?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>marcuscavalcanti.net &#187; SOA</title>
	<atom:link href="http://www.marcuscavalcanti.net/blog/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcuscavalcanti.net/blog</link>
	<description>Software, tecnologia e etc.</description>
	<lastBuildDate>Wed, 21 Jul 2010 03:52:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Algumas frases sobre SOA e BPM</title>
		<link>http://www.marcuscavalcanti.net/blog/2009/12/16/algumas-frases-sobre-soa-e-bpm/</link>
		<comments>http://www.marcuscavalcanti.net/blog/2009/12/16/algumas-frases-sobre-soa-e-bpm/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 21:59:07 +0000</pubDate>
		<dc:creator>Marcus Cavalcanti</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.marcuscavalcanti.net/blog/?p=1255</guid>
		<description><![CDATA[Tenho andado sem tempo para postar coisas novas (apesar de ter mais de 20 posts engatilhados) e para não ficar tão ausente, resolvi colocar em prática algo que eu já vinha tendo vontade de fazer há algum tempo, que no caso seria publicar frases de autores que costumo ler.
As frases são tiradas de um contexto [...]]]></description>
			<content:encoded><![CDATA[<p>Tenho andado sem tempo para postar coisas novas (apesar de ter mais de 20 <em>posts</em> engatilhados) e para não ficar tão ausente, resolvi colocar em prática algo que eu já vinha tendo vontade de fazer há algum tempo, que no caso seria publicar frases de autores que costumo ler.</p>
<p>As frases são tiradas de um contexto específico, mas podem tranquilamente ser usadas de maneira isolada para reflexão, aprendizado e até para fixar uma idéia.</p>
<p>Nessa &#8220;primeira edição&#8221;, vou me ater a frases que envolvam SOA e BPM.</p>
<p>Eis as frases:</p>
<p><em>&#8220;The first of those milestones has come to pass: process is not simply the way business operates itself, but manages itself.&#8221;</em><br />
<strong>Phil Gilbert</strong></p>
<p><em>&#8220;It’s been said, “If you can’t measure it, you can’t manage it.”  It’s also been said, “Opinions are like a*******, everybody’s got one.”   The ability to manage by fact (measurement), rather than opinion, is what sets the rare professional manager from the masses of loudmouth, intimidating, egotists who’ve been given the title Manager.   Leaders, on the other hand, earn that title.  And one of the most effective ways of earning that title is to learn to mange objectively, not subjectively.  Objective management starts with identifying objective performance measurements.&#8221;</em><br />
<strong>Jim Reardan</strong></p>
<p><em>&#8220;Service Decomposition splits service, not function.&#8221;</em><br />
<strong>Thomas Erl</strong></p>
<p><em>&#8220;IT realizes the burden is not on them anymore. The business has to be the responsible party.&#8221;</em><br />
<strong>Peter Woodhull</strong></p>
<p><em>&#8220;Often when we look at business processes and SOA we ignore the information aspect and focus on the technology aspect. What&#8217;s important is that you have some vision of sets of services that you need now and then over time to meet your business requirements.&#8221;</em><br />
<strong>Mike Rosen</strong></p>
<p><em>&#8220;Unless you use SOA in the context of what you&#8217;re trying to do with the business, you can end up with just the new spaghetti to replace the old spaghetti.&#8221;</em><br />
<strong>Marc Smith</strong></p>
<p><em>&#8220;&#8230;often sees a team of business experts thinking in purely business terms and a team of developers thinking only in terms of what code they&#8217;ll need to write. But SOA is not the sort of architecture that one builds by throwing code at it. It is, at its core, very conceptual.&#8221;</em><br />
<strong>Sandy Kemsley</strong></p>
<p><em>&#8220;Using SOA as we do &#8211; as an architecture and business modeling approach &#8211; helps bridge the gap between traditional business process modeling and technology delivery.&#8221;</em><br />
<strong>Steve Jones</strong></p>
<p><em>&#8220;SOA is simply the technology architecture that defines how any technology is designed and deployed. BPM, on the other hand, represents how you link business strategy to business implementation… with [SOA-based] technology being a part of that implementation.&#8221;</em><br />
<strong>Phil Gilbert</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcuscavalcanti.net/blog/2009/12/16/algumas-frases-sobre-soa-e-bpm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Existe SOA sem BPM?</title>
		<link>http://www.marcuscavalcanti.net/blog/2009/10/14/existe-soa-sem-bpm/</link>
		<comments>http://www.marcuscavalcanti.net/blog/2009/10/14/existe-soa-sem-bpm/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 15:35:11 +0000</pubDate>
		<dc:creator>Marcus Cavalcanti</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[BAM]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[Business Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[TI]]></category>

		<guid isPermaLink="false">http://www.marcuscavalcanti.net/blog/?p=1199</guid>
		<description><![CDATA[Recentemente fiz uma apresentação sobre BPM na empresa onde eu trabalho e o meu foco foi explicar o que são processos de negócio, o que é BPM e para que serve, quais são seus benefícios, além de mostrar todo o suporte que BPM dá para uma organização migrar e utilizar SOA, que é exatamente sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente fiz uma apresentação sobre BPM na empresa onde eu trabalho e o meu foco foi explicar o que são processos de negócio, o que é BPM e para que serve, quais são seus benefícios, além de mostrar todo o suporte que BPM dá para uma organização migrar e utilizar SOA, que é exatamente sobre o que eu vou falar neste tópico.</p>
<p>BPM pode muito bem existir sem SOA, já que BPM é uma modalidade que foca na aplicação de práticas e conceitos para melhoria e absorção de processos de negócios por parte de uma organização, mas e SOA, pode existir sem BPM?</p>
<p>SOA é um modelo arquitetural de construção de <em>software</em> que possui alguns pilares, dentre eles:<br />
<br/></p>
<ul>
<li>Interoperabilidade</li>
<li>Flexibilidade e agilidade a mudanças</li>
<li>Alinhamento entre TI e negócio</li>
<li>Redução de custos</li>
<li>Exposição no formato de serviços das principais atividades/operações da empresa</li>
<li>Reutilização e re-aproveitamento</li>
<li>Baixo acoplamento</li>
</ul>
<p>Dentre os pilares citados acima, é fácil perceber que SOA gera valores semelhantes ao que aplicação adequada de uma solução BPM geraria, entretanto BPM não é uma maneira de se construir <em>software</em>, BPM está muito além disso, está no topo, mas deve atuar lado-a-lado a SOA para produzir resultados mais duráveis, que gerem mais valor ao negócio, que sejam mais fáceis de manterem e de darem manutenção. E o somatório disso tudo proporciona resultados mais efetivos.</p>
<p>Certa vez li uma analogia sobre uso de SOA sem BPM e que de certa forma ajuda a esclarecer a importância da aplicação de BPM junto a SOA. Era mais ou menos assim: &#8220;Usar SOA sem BPM seria como um malabarista com uma mão atada atrás das costas. Ele poderia ainda fazer alguns malabarismos, mas não seria tão eficaz e nem tão rápido como poderia ser&#8221;.</p>
<h3>E na prática como BPM complementa SOA?</h3>
<p>Um dos pilares citados em uma arquitetura SOA é a possibilidade do alinhamento entre TI e negócio, e BPM ajudaria isso de forma efetiva através de uma notação para mapeamento de processos, no caso BPMN. Existe forma mais efetiva do que representar ações no formato de desenhos e diagramas? Dessa forma analistas de negócio e analistas de processos conseguem trabalhar juntos com times de TI na implantação e implementação de uma arquitetura SOA, onde através do mapeamento dos processos de negócio, conseguiriam identificar serviços que agreguem e tenham importância para o negócio de uma organização, identificando assim a necessidade de implementá-los.</p>
<p>Em relação a possibilidade de mudanças, BPM oferece todo suporte e facilidade para mudanças através da visão holística que o mapeamento de um processo de negócio proporciona, dando a possibilidade de visualização de papéis, atividades, setores, departamentos e parceiros de uma organização, ou seja, todos os <em>stakeholders</em>, além do conhecimento de todo fluxo da informação.</p>
<p>Do ponto de vista da automatização de processos de negócio, através dos <em>softwares</em> BPMS, BPM oferece adaptadores e conectores para realizar a integração entre sistemas legados através da exposição de serviços e atuando na composição e orquestração desses serviços, BPM proporciona uma &#8220;API visual&#8221; de toda as integrações e uma facilidade maior de manutenção e mudança.</p>
<h3>BPM no topo de uma arquitetura SOA</h3>
<p>BPM deve atuar no topo de uma arquitetura orientada a serviços, pois uma arquitetura SOA deve focar de ponta-a-ponta no negócio, e dessa forma BPM atuaria do ínicio ao fim em uma arquitetura SOA.</p>
<p>BPM proporciona o melhor uso de serviços de negócio oferecidos por SOA gerenciando a relação entre eles sob o ponto de vista de processos de negócio.</p>
<h3>BPM ajuda na Governança de SOA</h3>
<p>Numa arquitetura SOA, consumidores e fornecedores de serviço são executados em diferentes processos de negócio, são desenvolvidos e gerenciados por diferentes departamentos e exigem um grande número de coordenação para trabalhar juntos com sucesso.</p>
<p>Para SOA ter êxito, múltiplas aplicações precisam compartilhar serviços comuns, o que significa que eles precisam ser coordenados para tornarem estes serviços comuns e reutilizáveis (olha o BPM aí!). Estes são os problemas de governança e eles são muito mais complexos do que problemas de aplicações monolíticas ou mesmo problemas de componentes e códigos reutilizáveis.</p>
<h3>Exemplo real</h3>
<p>Fiz um rascunho simples de uma arquitetura em camadas que utiliza BPM, SOA e BPEL e que estará exemplificada logo abaixo. O processo é para um banco e o intuito é fornecer o empréstimo de uma quantia em dinheiro para um cliente, que no caso é quem faz essa solicitação. Tudo começa e termina no BPM, que atua como um orquestrador de serviços.</p>
<p>Nesse exemplo temos serviços em um nível mais baixo, que no caso são serviços expostos por sistemas de terceiros, módulos de ERP, CRM, etc. Temos nível intermediário com um processo de negócio BPEL que faz a composição de alguns serviços presentes no nível mais baixo e no topo de tudo temos o BPM orquestrando todos os serviços e controlando todo o processo.</p>
<p><div class="wp-caption aligncenter" style="width: 330px"><a href="http://img70.imageshack.us/img70/586/bpmsoabpela.png" target="_blank" border="0"><img alt="Diagrama de uma arquitetura SOA com BPM" src="http://img70.imageshack.us/img70/2392/bpmsoabpel.png" title="Diagrama de uma arquitetura SOA com BPM" width="320" height="222" /></a><p class="wp-caption-text">clique para ampliar</p></div><br />
Para finalizar, é importante ressaltar que através do uso de BPM e de BPMS, é possível definir métricas e indicadores, comos os <a href="http://pt.wikipedia.org/wiki/KPI" target="_blank" style="text-decoration: underline">KPI&#8217;s</a> (<em>Key Performance Indicators</em>) e utilizar ferramentas que dão todo suporte para acompanhamento de nossos processos de negócio, como as ferramentas de <a href="http://en.wikipedia.org/wiki/Business_activity_monitoring" target="_blank" style="text-decoration: underline">BAM</a>, onde o intuito seria fornecer relatórios em tempo real que podem servir como caráter estratégico e  para tomadas de decisão, além também da possibilidade de usar as informações geradas para alimentar ferramentas de <a href="http://pt.wikipedia.org/wiki/Business_intelligence" target="_blank" style="text-decoration: underline">BI</a> (<em>Business Inteligence</em>) e consequentemente obter resultados mais completos para a organização.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcuscavalcanti.net/blog/2009/10/14/existe-soa-sem-bpm/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Web Services: REST versus WS-*, WS-* versus REST</title>
		<link>http://www.marcuscavalcanti.net/blog/2009/04/13/webservices-rest-versus-ws-soap/</link>
		<comments>http://www.marcuscavalcanti.net/blog/2009/04/13/webservices-rest-versus-ws-soap/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:15:10 +0000</pubDate>
		<dc:creator>Marcus Cavalcanti</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[WS-*]]></category>
		<category><![CDATA[WSDL]]></category>

		<guid isPermaLink="false">http://www.marcuscavalcanti.net/blog/?p=904</guid>
		<description><![CDATA[Um dos maiores problemas no desenvolvimento de software é a integração entre aplicações que foram construídas sobre plataformas/linguagens distintas, onde essas aplicações deveriam conversar entre si com o intuito de trocar informações. Para resolver, ou melhor, tentar resolver esse problema, foi proposto um padrão que atende pelo nome de Web Services, que hoje é um [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos maiores problemas no desenvolvimento de software é a integração entre aplicações que foram construídas sobre plataformas/linguagens distintas, onde essas aplicações deveriam conversar entre si com o intuito de trocar informações. Para resolver, ou melhor, tentar resolver esse problema, foi proposto um padrão que atende pelo nome de <em>Web Services</em>, que hoje é um padrão mantido pela <a href="http://www.w3c.org" target="_blank" style="text-decoration: underline">W3C</a> e <a href="http://www.oasis-open.org/specs/" target="_blank" style="text-decoration: underline">OASIS</a>.</p>
<p><em>Web Services</em> são componentes que permitem que duas aplicações troquem informações entre si utilizando um canal de comunicação (<a href="http://en.wikipedia.org/wiki/Computer_network" target="_blank" style="text-decoration: underline"><em>network</em></a>), na maioria das vezes o protocolo <a href="http://en.wikipedia.org/wiki/HTTP" target="_blank" style="text-decoration: underline">HTTP</a>. Existem alguns tipos de <em>Web Services</em>, mas os mais conhecidos e usados hoje em dia são: RPC, WS-* (WSDL/SOAP) e REST.</p>
<p>Dos padrões citados, provavelmente o formato mais conhecido e usado hoje em dia é o WS-*, que define que um serviço deve receber/responder mensagens no formato XML (<a href="http://en.wikipedia.org/wiki/SOAP_(protocol)" target="_blank" style="text-decoration: underline">SOAP</a>) e deve possuir um contrato que defina os seus serviços (<a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language" target="_blank" style="text-decoration: underline">WSDL</a>). Só que esse formato, principalmente depois da popularização do REST, vem sofrendo pesadas críticas de toda comunidade de desenvolvimento, que alega que esse formato é burocrático e complicado, enquanto o REST é um formato mais simples e objetivo.</p>
<p>Minha opinião é que tanto o padrão WS-* como o padrão REST não se substituem, pelo menos não por enquanto, e que tentar fazer essa comparação ainda não agrega, pois existem casos específicos onde REST é muito bem-vindo, assim como existem casos onde o padrão WS-* é muito bem-vindo.</p>
<h3>WS-* &#8211; Vantagens e desvantagens</h3>
<p>Uma das principais reclamações em relação a esse formato é que o mesmo <a href="http://en.wikipedia.org/wiki/WS-*" target="_blank" style="text-decoration: underline">possui N especificações</a> e que isso o torna complexo e burocrático, e de certa forma eu concordo. Só para se ter uma idéia existem mais de 15 especificações para esse formato e conhecer todas é humanamente impossível e inviável.</p>
<p>Outra reclamação é em relação ao <em><a href="http://pt.wikipedia.org/wiki/Overhead" target="_blank" style="text-decoration: underline">overhead</a></em> que a troca de mensagens de um serviço no padrão WS-* pode causar, pois todas as mensagens precisam ser envelopadas dentro de um pacote SOAP, que nada mais é que um XML padronizado. Esse <em>overhead</em> é causado, pois dentro de um envelope SOAP, o que é usado é a menor parte do conteúdo que está ali contido, dessa forma há muito &#8220;lixo&#8221;.</p>
<p>Essas duas reclamações citadas acima, são as maiores reclamações dos desenvolvedores em relação a serviços WS-*, contudo no meu modo de ver existem também muitas vantagens no uso do formato WS-*, principalmente no que diz respeito a integração entre aplicações corporativas e também em relação a <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" target="_blank" style="text-decoration: underline">SOA</a>.</p>
<p>Por exemplo, eu trabalho em um ambiente onde existem muitos serviços, muitos mesmos, e esses serviços são desenvolvidos por N fornecedores, em N plataformas distintas e são usados por N por aplicações. É um cenário bem complexo e eu não imaginaria esse cenário sem o uso do formato WS-*. E por quê? Em primeiro lugar porque ter um contrato formal desses serviços é totalmente necessário, afinal eu preciso saber o nome desses serviços, preciso saber o que eles estão esperando receber, o que eles irão me responder e como serão esses dados. Imagine se um serviço desses mudar o caos que seria?</p>
<p>Outro fator muito importante são as ferramentas de apoio, afinal elas além de facilitar o trabalho, trazem também produtividade. Existem N ferramentas que ajudam na simulação, testes, geração de <a href="http://en.wikipedia.org/wiki/Mock_object" target="_blank" style="text-decoration: underline"><em>Mock</em>&#8217;s</a>, teste de carga, <em>debug</em> e tantas outras atividades necessárias no desenvolvimento/acesso a esses serviços. A principal ferramenta <em>free</em> usada hoje em dia é o <a href="http://www.soapui.org/" target="_blank" style="text-decoration: underline">soapUI</a>.</p>
<p>Em relação a SOA, o formato WS-* também se mostra a melhor opção. SOA é uma maneira de se construir softwares baseado no conceito de serviços, onde esses serviços devem possuir um contrato formal, devem ser independentes (possuir baixo acoplamento) e devem ser reutilizáveis. Outro princípio de SOA diz que esses serviços devem ter a capacidade de serem descobertos e nesse ponto o WS-* mais uma vez sai na frente, pois o mesmo possui o protocolo <a href="http://pt.wikipedia.org/wiki/UDDI" target="_blank" style="text-decoration: underline">UDDI</a>, que é um método utilizado para publicar e descobrir diretórios de serviço em uma arquitetura SOA.</p>
<h3>REST &#8211; O que é, vantagens e desvantagens</h3>
<p>REST é o acrônimo de <em>Representational State Transfer</em>, que é um modelo de arquitetura baseado no protocolo HTTP e que utiliza <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier" target="_blank" style="text-decoration: underline">URI</a> para identificação dos seus serviços. REST é uma maneira de construir serviços usando o protocolo HTTP como ele foi concebido, ou seja, usando: POST, GET, DELETE e PUT.</p>
<p>Serviços RESTful (serviços REST) partem do princípio que o protocolo HTTP é rico o suficiente para que seja criada uma abstração  &#8211; no caso WS-* seria uma abstração &#8211; para construção de serviços.</p>
<p>Uma das vantagens em utilizar serviços REST sem dúvida nenhuma é a simplicidade, afinal criar serviços REST é usar de maneira parecida o protocolo HTTP como usamos atualmente no desenvolvimento de aplicações Web, ou seja, se você usa o método POST em um formulário, você consequentemente está usando REST, a única diferença é que o submit desse formulário devolveria um conteúdo HTML, quando que em um serviço RESTful o indicado seria devolver uma estrutura mais padronizada, no caso um XML ou um <a href="http://www.json.org/" target="_blank" style="text-decoration: underline">JSON</a>, por exemplo.</p>
<p>Outra vantagem no uso de serviços REST é a performance, pois os seus <em>request/response</em> são infinitamente menores se comparados com os do formato WS-*, e são menores, porque não precisam ser envelopados dentro de um pacote SOAP, serviços REST apenas recebem o que precisam e consequentemente respondem o que é necessário.</p>
<p>Serviços construídos no formato REST também são mais humanos, ou seja, são mais compreensíveis que serviços WS-*. Isso se deve ao fato de que para construir um serviço REST não é necessário conhecer N especificações, não é necessário saber o que é WSDL, assim como também não é necessário conhecer um pacote SOAP. São mais humanos também, pois são identificados através de URI&#8217;s.</p>
<p>Dentre outras vantagens de serviços RESTful destaco a possibilidade de fazer <em>cache</em> das operações, possibilidade de criar camadas intermediárias (<em>proxy</em>, <em>gateway</em>, <em>cache servers</em>) com o intuito de aumentar a performance ou segurança e possibilidade de usar HTTPS nativamente.</p>
<p>Pensando em um ambiente corporativo, em aplicações <em>enterprise</em> e em arquitetura SOA, começam a surgir alguns problemas em relação a adoção de serviços REST, a começar pelo fato de que REST não possui um padrão oficial para descrição dos seus serviços, até existe uma frente interessada em criar esse padrão utilizando <a href="https://wadl.dev.java.net/" target="_blank" style="text-decoration: underline">WADL</a>, mas ainda não existe nada oficial, portanto essa é uma grande desvantagem.</p>
<p>Serviços REST também não possuem estado, são <em><a href="http://en.wikipedia.org/wiki/Stateless_server" target="_blank" style="text-decoration: underline">stateless</a></em>, ao contrário de serviços WS-*, pois os mesmos podem possuir estado entre uma chamada e outra. Serviços REST também não permitem requisições assíncronas e utilizando o formato WS-* é possível fazer requisições sem que seja necessário esperar uma resposta.</p>
<p>Pensando em SOA, REST não é a melhor opção, afinal, conforme citado anteriormente, REST não possui um contrato formal para definir a interface dos seus serviços, assim como também não possui uma maneira para que esses serviços possam ser publicados e descobertos.</p>
<p>Outra desvantagem no meu modo de ver, é que para construção de um processo BPEL, se faz por necessário que os serviços possuam uma interface que os descreva (WSDL), nesse caso serviços REST não seriam os mais indicados para serem usados dentro de um processo BPEL, contudo existem algumas maneiras de realizar esse <em><a href="http://whatis.techtarget.com/definition/0,,sid9_gci868091,00.html" style="text-decoration: underline" target="_blank">workaround</a></em> para usar serviços REST dentro de um processo BPEL. Dependendo da ferramenta escolhida, algumas fornecem soluções como a criação de <em>Partner Links</em> HTTP, ou seja, são <em>Partner Links</em> próprios para serviços REST, ou então, algumas outras ferramentas fornecem maneiras um pouco mais trabalhosas como a criação de um WSDL que descreva o serviço HTTP (REST).</p>
<h3>Afinal, qual devo usar?</h3>
<p>Sinto lhe frustrar, mas a resposta para essa pergunta é: depende, cada caso é um caso.</p>
<p>Não é inteligente ignorar uma ou outra opção, ou ser cego a ponto de desconsiderar os benefícios e vantagens de cada uma. Na minha opinião, fomentar essa discussão é cair no mesmo de discutir <a href="http://www.marcuscavalcanti.net/blog/2009/03/17/ponto-para-o-rails/" target="_blank" style="text-decoration: underline">&#8220;qual linguagem é melhor&#8221;</a>, afinal cada uma tem seu propósito.</p>
<p>Os fanáticos por REST costumam dizer que o formato WS-* só existe, pois os grandes <em>players</em> do mercado (Oracle, IBM, Microsoft, etc) estão envolvidos, já que esses grandes <em>players</em> desenvolvem ferramentas específicas para facilitar a criação e a manutenção a serviços construídos dessa maneira. Quem faz essa afirmação está completamente equivocado, pois por mais burocrático que serviços WS-* possam ser, eles ainda possuem uma enorme utilidade que serviços REST ainda não satisfazem.</p>
<p>Agora, no caso de serviços para celulares, PDA&#8217;s, e outros dispositivos móveis, onde cada dado enviado/recebido tem um custo alto, utilizar serviços REST é sem dúvida a melhor opção. Da mesma maneira que para prover serviços de aplicativos web, como <em><a href="http://pt.wikipedia.org/wiki/Mashup" target="_blank" style="text-decoration: underline">mashups</a></em>, REST também é a melhor opção, a maior prova disso é que em serviços como Twitter, Facebook, Amazon e até mesmo o Google, estão usando REST em larga escala. </p>
<p>Mas também existe o outro lado da moeda, pois pensando em um ambiente complexo, com muitos serviços, repositórios, ainda não dá para pensar em outro formato que não seja WS-*.</p>
<p>Enfim, mais uma vez volto ao ponto de que devemos conhecer as opções para tomar a decisão de escolher o que é mais adequado, REST não substitui WS-* e vice-versa, <a href="http://www.infoq.com/news/2007/07/wsrest" target="_blank" style="text-decoration: underline">insistir nessa rixa não agrega</a> e quem não enxerga dessa maneira, precisa rever seus conceitos, ou então estudar mais.</p>
<p>Aproveito para deixar o link para download de uma apresentação sobre REST, que fiz no meio do ano passado, na empresa que eu trabalho: <a href="http://www.marcuscavalcanti.net/blog/wp-content/uploads/apresentacao-rest.ppt" target="_blank" style="text-decoration: underline">clique para fazer download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcuscavalcanti.net/blog/2009/04/13/webservices-rest-versus-ws-soap/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Introdução ao BPM e BPMS</title>
		<link>http://www.marcuscavalcanti.net/blog/2009/01/18/introducao-bpm-e-bpms/</link>
		<comments>http://www.marcuscavalcanti.net/blog/2009/01/18/introducao-bpm-e-bpms/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 17:00:10 +0000</pubDate>
		<dc:creator>Marcus Cavalcanti</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Aqualogic]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[BPMS]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OracleBPM]]></category>
		<category><![CDATA[Processos]]></category>

		<guid isPermaLink="false">http://www.marcuscavalcanti.net/blog/?p=121</guid>
		<description><![CDATA[O objetivo desse post era sair um pouco dos assuntos teóricos e partir para um assunto mais específico, onde iria dar algumas dicas sobre como fazer upload de arquivos e gravar o conteúdo em um banco de dados usando a ferramenta Oracle BPM Studio, mas como BPM é um assunto &#8211; apesar de muito falado [...]]]></description>
			<content:encoded><![CDATA[<p>O objetivo desse post era sair um pouco dos assuntos teóricos e partir para um assunto mais específico, onde iria dar algumas dicas sobre como fazer upload de arquivos e gravar o conteúdo em um banco de dados usando a ferramenta <a href="http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/index.html" style="text-decoration: underline" target="_blank">Oracle BPM Studio</a>, mas como BPM é um assunto &#8211; apesar de muito falado no mundo de TI &#8211; ainda obscuro, achei que valeria a pena fazer uma breve introdução sobre BPM e BPMS antes de falar especificamente sobre uma ferramenta BPMS.</p>
<h3>
BPM</h3>
<p>BPM é o acrônimo de Business Process Management, que traduzindo para o português seria Gerenciamento de Processos de Negócio.</p>
<p>Definir o termo <a href="http://bpmsbrasil.blogspot.com/2007/05/bpm-o-inexplicvel.html" style="text-decoration: underline" target="_blank">BPM não é uma tarefa trivial</a>, pois como se trata de um assunto amplo e recente, cabem mil definições, algumas não tão boas, de cunho mais comercial e outras mais simples.  Porém acredito que as explicações mais simples, não conseguem dar um <em>overview</em> sobre BPM para uma pessoa leiga no assunto, portanto tentarei usar exemplos e conceitos para tentar passar melhor esse significado.</p>
<p>BPM tem a ver com processos, e BPMS com processos e software. Sendo prático, eu diria que BPM é uma metodologia, um conjunto de boas práticas, com o o intuito de mapear e gerenciar processos de negócio, onde são (ou não) envolvidos clientes, usuários, fornecedores e atividades automáticas (informatizadas), onde o principal objetivo do BPM seria obter uma melhoria desse processo.</p>
<p>Se ainda não ficou muito claro, para facilitar as coisas, darei um exemplo real. Imagine o seguinte cenário:</p>
<ul>
<li>Departamento comercial da empresa X identifica que o produto Y é um produto com forte potencial de venda;</li>
<li>Departamento comercial solicita ao departamento de compra/venda o produto Y;</li>
<li>Departamento de compra/venda vai em busca de fornecedores fazendo cotação de preços em busca do melhor custo x benefício;</li>
<li>Departamento de compra/venda define o fornecedor Z como escolhido e esse fica de fazer a entrega dos produtos em 15 dias;</li>
<li>Na data estipulada, o setor de logística da empresa X, recebe o produto do fornecedor Z e assim comunica ao departamento comercial que este está disponível para venda;</li>
<li>Departamento comercial da empresa X, então comunica ao departamento de marketing, que nesse caso irá bolar um campanha de divulgação desse novo produto;</li>
<li>Campanha criada, produto finalmente é lançado.</li>
</ul>
<p>Repare no fluxo acima e perceba que isso é um processo de negócio, pois ele possui um começo, envolve pessoas, pode envolver outros recursos, tem um objetivo bem definido e provavelmente ocorre com certa frequência. Esse processo pode ser melhorado, se tornar mais eficiente? É provável que sim e é nesse ponto que entram o BPM e o BPMS. O BPM seria uma forma de mapear esse processo, identificar gargalos, pontos falhos afim de melhorá-lo e para isso a ajuda de um (bom) software BPMS é muito importante.</p>
<h3>BPMS</h3>
<p>BPMS (Bussiness Process Management Software) seria o braço direito do BPM na melhoria do processo exemplificado acima, através do BPMS seria possível <a href="http://en.wikipedia.org/wiki/BPMN" style="text-decoration: underline" target="_blank">modelar esse processo visualmente</a> e com recursos específicos de uma ferramenta BPMS é possível ter métricas e controles de todo fluxo do processo, dessa forma seria possível, por exemplo, simular esse processo de diversas maneiras, criar mecanismos de automação e fornecer relatórios específicos para tomadas de decisão. Tudo isso com o objetivo único e exclusivo da melhoria desse processo.</p>
<p>É difícil falar sobre BPM sem ser um pouco repetitivo, sem deixar a leitura cansativa, pois trata-se de um assunto muito teórico e abstrato, mas a melhor forma de falar sobre BPM é com exemplos, portanto, com o assunto introduzido, no próximo post mostrarei um cenário de um processo real em que estou trabalhando atualmente e a necessidade do uso de uma ferramenta BPMS.</p>
<p>Só para finalizar, BPM hoje em dia é um dos &#8220;<a href="http://thebpmexperience.wordpress.com/2006/03/17/bpm-e-soa/" style="text-decoration: underline" target="_blank">componentes&#8221; que fazem parte de uma arquitetura SOA</a> completa, o que não significa que para ter uma solução SOA eu tenha que fazer o uso do BPM, porém se usados juntos da forma correta, tornam-se uma poderosa dupla na gestão, automatização e melhoria de processos de negócios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcuscavalcanti.net/blog/2009/01/18/introducao-bpm-e-bpms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
