Monthly Archives: January 2009

SOA Patterns: livro e lista de patterns on-line

 

SOA Patterns

SOA Patterns

O livro “SOA Design Patterns“, do Thomas Erl já estava no forno mais de 1 ano. Finalmente disponível, a publicação é um daqueles “must read” para quem não quer “reinventar a roda” e seguir boas práticas e padrões nas implementações e integrações baseadas em SOA.

O livro foi feito de forma colaborativa. Além do próprio autor, outros 35 especialistas ajudaram na extensa e excelente lista de patterns que o livro apresenta. Nomes como David Chappell (Oracle),  Mark Little (Red Hat/JBOSS), Pablo Cibraro (Lagash Systems SA), Nelly Delgado (Microsoft Corporation) etc.

Você pode consultar a lista dos patterns neste link. Adicionalmente, Erl disponibilizou um MS Visio Stencil  (template) que você pode baixar aqui e utilizar livremente na representação gráfica dos seus padrões e diagramas (testei no MS Visio, MS Word, MS PowerPoint).

Abaixo o comentário de uma das mais conhecidas analistas, Anne Thomas (Burton Group):

The technical differences between service orientation and object orientation are subtle enough to confuse even the most advanced developers. Thomas Erl’s book provides a great service by clearly articulating SOA design patterns and differentiating them from similar OO design patterns.
- Anne Thomas Manes, VP & Research Director, Burton Group 

A Mente por trás da Cloud Computing da Amazon

Werner Vogels trabalhou por 10 anos em pesquisas de sistemas distribuidos em larga escala. Ele entrou na Amazon em 2004 para ajudar a gigante on-line na tarefa de lidar com as grandes demandas (“picos”) de acesso, para ajudar a planejar quão escalável iriam ser as suas soluções de software, a arquitetura e como disponibilizar a sua infraestrutura de TI da Amazon como um produto.

Justiça seja feita, Vogel é parte de um trio que comanda o desenvolvimento da “cloud computing” da Amazon. Os outros dois são: Andy Jassy (VP Senior que concebeu o modelo de negócios) e Charles Bell (VP e líder técnico do Amazon Web Services, AWS).

A Amazon quer mesmo se tornar uma extensão para o data center corporativo de qualquer empresa, um opção segura e robusta que dê vazão aos “picos” de processamento de sua empresa.

Alguns números interessantes:

- Existem, cadastrados, 440.000 desenvolvedores do AWS
- 29 bilhões de objetos armazenados no “grande disco virtual” S3 (Amazon Simples Storage Server)
- Os acessos à sua “nuvem” (em banda utilizada) ultrapassou o volume trafegado no site da Amazon.com (ou seja, em banda utilizada, maior que o próprio core business)

A InformationWeek/USA tem um artigo excelente sobre ele e os comandantes da AWS. Em português, um resumo da entrevista publicado pela ITWeb.com.br.

Agora um pequeno histórico do Amazon AWS:


(fonte: http://www.informationweek.com/news/management/interviews/showArticle.jhtml?articleID=212501217&pgno=1&queryText=&isPrev=)

Oracle Fusion? 2010? 2011?…

 

Oracle

Oracle

Ainda em Novembro de 2007 tinha escrito um post sobre o Fusion/Oracle que finalizava assim: “De fato o Fusion ainda não existe, mas virá em breve (breve?).”

Outras discussões se seguiram depois disto, a Oracle adquiriu a BEA e vem, reconhecidamente, empreendendo um grande esforço para construir a sua plataforma de arquitetura orientada a serviços (SOA), que é o Fusion (veja esta minha nota de 2005!).

A informationWeek dos E.U.A. entrevistou o VP da Oracle, Thomas Kurian, que é o “cabeça” do desenvolvimento deste middleware. Destaco alguns pontos importantes:

  • Sim, o Fusion ainda está sendo desenvolvido. Cerca de 450 clientes fazem parte desta etapa de desenvolvimento e outros 130 estão participando mais ativamente no processo
  • Ele evita falar de prazo de liberação. Bem provável um beta para 2009 e até 2011 o produto esteja liberado em GA (General Avaibility), de acordo com a entrevista.
  • Depois da fase de teste a versão final poderá ser disponibilizada tanto como uma suite como pode ser adotada com o objetivo de utilização dos aplicativos individuais que fazem parte da solução Fusion
  • Ele cita um caso de sucesso de uma das maiores (se não for a maior) loja de brinquedos dos Estados Unidos (“Toys ‘R’ Us”).

Agora meu comentário. Como já afirmei, é inegável o esforço da turma que trabalha para o Mr.Ellison vem fazendo no processo de integração. Com a BEA eles tiveram acesso a um portfólio de excelentes produtos de integração, maduros e um boa carteira de clientes. Isto, de certa forma, deveria apressar o Fusion, prometido desde 2005, mas parece que a realidade não é bem esta.

Eu particularmente não tenho dúvida que o desenvolvimento desta suite será completado. A pergunta é, quando?

(vejam esta notícia da InformationWeek Brasil: “Clientes questionam início dos testes com Oracle Fusion“).

Category: middleware, Oracle

Hierarquia de Serviços em SOA

A palavra correta para hierarquia, no contexto do texto, é “Taxonomia”. A idéia foi apresentada em um artigo da revista SOA World Magazine, edição de Outubro/08. O autor é Mark Richards, ex-IBM, ex-lider de vários Java User Groups nos E.U.A e atualmente na empresa Collaborative Consulting, LCC.

A idéia é simples. Taxonomia nada mais é do que uma forma de classificar as coisas de uma forma hierárquica. Assim o fazemos para os animais (famílias, classes, ordens…), para as plantas etc. E quanto as serviços?

Bom, uma Taxonomia de Serviços é a proposta do  autor original do artigo que propõe uma forma simples de organizar, de forma hierárquica os serviços dentro da arquitetura SOA.

 

SOA: Taxonomia

SOA: Taxonomia

(fontes de todas as images: “Creating an Effective SOA Service Taxonomy”, M.Richards, SOA World Magazine, October/2008) 

 

Inicialmente os serviços foram classificado em 4 tipos básicos:

 

  • Business Service (serviço de negócio): serviço abstrato utilizado para representar um processo de negócio ou função independente
  • Enterprise Service (serviço corporativos): serviço “concreto”  utilizado para implementar um serviços de negócio utilizando um relacionamento “one-to-one” ou “many-to-one”  
  • Application Service (serviço de aplicação): serviço “concreto” utilizado em funções específicas de aplicação tais como coleta e manipulação de dados, validação etc
  • Infrastrucuture Service (serviço de infraestrutura): serviço “concreto” utilizado para suportar funções não relacionadas ao “negócio”, para solucionar questões específicas de uma plataforma, subsistemas etc.

1. Business Service

 

Business Service

Business Service

São os “core services” de SOA. Eles podem vir de use cases, user stories, user scenarios ou através de processos de ivestigação, identificação e especificação inerente aos passos iniciais de várias metodologias de implatação de uma Arquitetura Orientada a Serviços. Veja uma sugestão neste link (pdf, 32 pags/OASIS-Open.org)  e neste link (IBM DeveloperWorks).

Business Services são definições abstratas contendo um nome do serviço, especificação dos dados de entrada e dos dados de saída, independente da tecnologia a ser utilizada para o desenvolvimento.

Exemplo: gerar uma cotação de um seguro para um carro qualquer. Grosso modo, o serviço irá coletar dados do cliente, do automóvel, irá armazenar estes dados e devolver o valor do seguro. Mais ou menos o que o corretor nos pede no telefone quando queremos fazer uma cotação de seguro. Perceba que, na definição, não devemos nos preocupar com a liguagem que será implementado, se utilizaremos Web Services, qual a plataforma… …precisamos definir os dados de entrada e os dados de saída do serviço “CreateQuote“.

 

2. Enterprise Services

 

Enterprise Service

Enterprise Service

São também considerados “core”, porém são “concrete services“, ou seja, implementam Business Services. 

Uma vez que estes são serviços corporativos, que geralmente “atravessam” vários sistemas da empresa, devem ser definidos pelo Enterprise IT Architect ou pelo time de arquitetura da organização.

Lembrando que tais serviços tem um relacionamento “um-para-um” ou, mais comumente, “muito-para-um”, com os Business Services. Assim , voltando ao mesmo exemplo, vários Enterprise Services seriam necessários para implementar o Business Service “CreateQuote” do exemplo acima.

Exemplo: “createCustomer“, “checkMotorVehicleReport”, “calculateQuote”, “saveQuote” etc.

Importante: não necessariamente este serviços precisam ser compartilhados em todos os sistemas da organização. Não existe uma fórmula para definirmos a “granularidade” adequada para um serviço; tudo é uma questão de “trade-offs” e um bom arquiteto e muita prática é que definem a correta amplitude do serviço.

3. Application Services

 

Application Services

Application Services

São serviços “básicos” (not core), são serviços de suporte. Geralmente são de baixa granularidade e associados a uma aplicação específica. Um exemplo típico são os serviços que interagem com os “silos” existentes em qualquer empresa.

Assim sendo, devem ser construídos considerando esta especificidade, baixa ou nenhuma reutilização e portanto, o desenvolvedor pode ter mais liberdade de otimizar para extrair a máxima performance possível de tais serviços.

Exemplo: voltando ao “CreateQuote”, serviços como “addDriver”, “addAddress”, “addVehicle” etc são necessários para persisitir os dados necessários (input) para gerarmos o valor da cotação.

Pensar nos inputs e outputs dos Business Services é uma boa dia para definir os Application Services.

4. Infrastructure Services

 

Infrastructure Services

Infrastructure Services

Tipicamente serviços que eu chamo de “satélites”.  São necessários para acessar os dados e, entre outras coisas, garantir a segurança, rastreabilidade, atendimento de normas e políticas da empresa (compliance).

Exemplos: logging, auditoria, acesso a dados, segurança (AAA) etc.

O que distingue Infrastructure Services dos Enterprise Services é que os Infrastructure Services implementam funcionalidades não relacionadas ao negócio.

A Taxonomia dos serviços pode, em um primeiro momento, parecer muito abstrata, distante do mundo.real.com.br mas, acredite, esta simples classificação ajuda na divisão de tarefas, prioridades e organização da biblioteca de serviços, além de ser um excelente ponto de partida para a definição dos serviços na sua arquitetura orientada a serviços.

Category: SOA, soa-fundamental

Google Android em um PC?

A imagem abaixo é do sistema operacional do Google (Android), originalmente desenvolvido para dispositivos móveis, sendo executado em um Asus EEEPC 1000H (netbook).

Os créditos das fotos e o artigo com mais detalhes são do site VentureBeat. As possibilidades são enormes. Na verdade o Android pode (e acho que foi) desenvolvido para qualquer dispositivo móvel, PC etc.

Bom, se foi possível executa-lo em um Netbook com chip Intel, qualquer máquina com este chip deverá rodar também, certo? E as dezenas de aplicações que estão em desenvolvimento para esta plataforma estarão disponíveis nos computadores com Android, correto? Sim!

É, com crise ou por causa dela, 2009 promete! Abraços.

Android

Android

Category: google, inovation

Mac: 25 anos!

Usuário ou não de Mac, você certamente vai concordar comigo que as criações da turma da maçã são muito inovadoras. Sou usuário de Mac a vários anos e afirmo, mais do que máquinas com excelente design, os Macs são estáveis, fáceis de utilizar, não tem problemas de vírus, tem uma performance além da média e mesmo com a alta do US$, ainda acho que o custo versus benefício é positivo.

Em Dezembro/08 o Mac faz aniversário de 25 anos e a revista Wired publicou uma reportagem e um “timeline” mostrando os produtos criados pela empresa que hoje produz os não menos famosos iPod e iPhone (clique na imagem abaixo).

Category: Apple