22 de July de 2008

Guaraná com Laranja

SOA é umas das palavras que mais aparecem na boca dos executivos das grandes empresas nos dias de hoje, uma palavra que sempre vem acompanhada de aumento de produtividade, melhoria na governança, redução de custos… o que, convenhamos, tem tudo a ver com a Arquitetura Orientada a Serviços quando essa é bem aplicada!

Porém, entretanto, todavia e contudo existe um assunto que não é muito explorado quando falamos sobre isso: uma vez definida que a Arquitetura a ser utilizada daqui em diante será Orientada a Serviços, como serão desenvolvidos os próximos projetos, os próximos produtos, e como serão criados esses serviços para que depois possamos reutilizá-los?

Arquitetura vs. Metodologia

Bom, definimos nossa Arquitetura: ela será Orientada a Serviços, certo? Ótimo, maravilha! Mas e agora? Que  metodologia iremos utilizar para implementar essa arquitetura, para implementar esses novos serviços?

Quando falamos de Metodologia me vem à cabeça as tradicionais e já muito bem conhecidas metodologias burocráticas, formais, cheias de papéis, documentos, artefatos… bom, não sei vocês, mas a imagem de sistemas demorando meses para serem concluídos, com aquela documentação gigantesca, diagramas e mais diagramas não me sai da cabeça. E, na grande maioria das vezes, no final temos apenas um sistema que não é mais o que o nosso cliente precisa, além é claro de uma linda e completa documentação.

Então, já que teremos uma grande mudança, porque não mudar também a forma como desenvolvemos nossos produtos e projetos, ou ao menos mudar a metodologia para o desenvolvimento desses novos serviços? Pois, se continuarmos trabalhando como sempre, possivelmente teremos os mesmos problemas, só que eles agora estarão distribuídos em serviços e gerenciados por ESBs.

Então, que tal experimentarmos os Métodos Ágeis (conhecidos, também como Agile)!?!

Guaraná com Laranja

Dentre os principais objetivos de SOA, temos a governança dos serviços para facilitar o reúso, evitar o retrabalho, aumentar a produtividade e reagir rapidamente às mudanças organizacionais e operacionais. E os principais objetivos das metodologias ágeis são a agilidade (jura?!?), a facilidade de responder às mudanças rapidamente, numa forma muito mais iterativa.

Ora, percebam que muitos dos objetivos de SOA e Agile são os mesmos: ambos reconhecem que mudanças são comuns, e que precisam responder a elas rapidamente. Se vocês perguntarem ao Google sobre SOA e Agile, verão algumas páginas que dizem que eles são como “Maçãs e Laranjas”, numa analogia de que não devem ser comparados entre si.

Mas, na minha opinião podemos utilizar uma analogia muito melhor, comparando-os como duas frutas conhecidas por todos como frutas que se completam: Guaraná e Laranja!

Na próxima semana vou tentar mostra um pouco das vantagens e desvantagens (sim, elas existem) de se utilizar Agile para implementar SOA.

Até lá!

Abraços,

- Jonas Galli

Responses

Bem interessante, minha primeira vez vendo o Blog, parabéns pela Iniciativa.

Na prática, não é fácil que uma equipe comprometida com os resultados imediatos do projeto ( Foco Ágil ) tenha tempo ou interesse em usar uma estratégia SOA ( Foco Corporativo ), uma vez que a mesma não traz muitos benefícios imediatos para o projeto (talvez reuso), salvo se pensarmos corporativamente e no efeito acumulativo da abordagem. Contudo, praticas ágeis são importantes, trazem resultados, podem conviver com uma abordagem SOA, basta incluirmos Governança SOA de forma equilibrada.

Faltou comentar: gostei do artigo.

Segue opinião de um “agilista” : http://www.ibm.com/developerworks/blogs/page/ambler?entry=strategies_for_agile_soa

Olá. Concordo com o Jonas no que diz sobre a necessidade de agilidade no desenvolvimento em detrimento da geração excessiva de artefatos de documentação. E concordo com o Gustavo, principalmente sob o ponto de vista que SOA é tático na empresa, e não emergencial ou centralizado apenas no desenvolvimento de projetos.

O que observamos na prática é que, para evitar impactos fortes na empresa, numa implantação de SOA é fundamental evoluir a metodologia existente (e talvez não impor uma externa), visando o que chamamos de “Design for SOA”, incluindo uma série de novas preocupações com SOA que não existem nas metodologias comuns (o que vai desde um subprocesso formal de identificação serviços até seu registro no repositório de ativos paga gestão), além de definir processos e práticas para Governança SOA.

Este assunto (”Design for SOA” ) é ponto obrigatório em qualquer plano de implantação corporativo. Pelo menos nos projetos que executamos, sempre está presente no Roadmap de implantação.

No meu próximo post vou falar sobre algumas necessidades essenciais de SOA frente à metodologias de desenvolvimento encontradas nas emprsas (seja RUP, seja qualquer outra).

O assunto é bom, e dá pano pra manga!

[]s
Marcílio

Muito bom o post. Gostaria de complementar com o seguinte: Ser ágil não é ser contra o “pensar antes de fazer”. Mas sim tentar eliminar praticas e/ou artefatos que não estejam contribuindo satisfatoriamente para o ROI do cliente. SOA aumenta o ROI a longo prazo, mas aumenta, a ideia é essa, não é? Então nao creio que ser ágil possa de alguma forma se contrário a adoção de SOA. Ambos objetivam um maior lucro sem perda de qualidade.

Muito boa a analogia com guaraná e laranja, embora eu prefira Coca com limão.
Fiz um trabalho acadêmico sobre SOA e Agile e realmente encontrei muitos modelos de utilização em que ambos se combinavam e potencializavam mutuamente. Como o Jonas Galli disse, existem algumas desvantagens, ou pelo menos casos em que a aplicação de ambas não seria recomendada. Lembro-me inclusive de ter lido que, como ambas dependem de uma mudança cultural grande, seria muita revolução para uma empresa adotar as duas ao mesmo tempo.
Se quisermos saber se as duas frutas combinam, temos que discutir modelos de implantação.

Leave a response

Your response: