24 de janeiro de 2008

SOA não é WebService!

Esta postagem é apenas uma visão de um estudante de TI, procurando soluções para alguns dos paradigmas encontrados nos conceitos de lógica e desenvolvimento de software.
Em uma série de matérias, artigos, fóruns e discuções. vejo uma grande confusão, a de que SOA somente pode ser concebido com WebServices.

Os WebServices são grandes aliados do SOA, porém não só este tipo de tecnologia que permitem que o conceito de SOA seja reproduzido.

Conceito

Na verdade o SOA é um conceito que define que, para se obter boa aplicabilidade e integração entre sistema deve-se ter, baixo acoplamento e granularidade grossa, criando assim módulos funcionais do sistema, e permitindo a reutilização do código.

Isto sisgnifica que serviços devem ser criados e disponibilizados por completo, por exemplo:

Reservar um quarto de hotel;

O serviço terá que verificar a disponibilidade de quartos, alterar o estado do quarto para reservado e adicionar esta reserva ao banco de dados, isto define uma granularidade grossa, e as classes são de granularidade fina, inserir quarto, inserir reserva. alterar status do quarto, cada uma dessas é um metodo e uma interação diferente com o objeto.

E o baixo acoplamento é reproduzido nas aplicações reduzindo as interdependencias dos módulos do sistemas, que segundo a teoria de "Page-Jones", poderia ser uma classe, mas eu prefiro acreditar que devemos criar uma classe que disponibilize o "serviço" ou que na própria classe seja criada um método que disponibilize o "serviço" com um baixo acoplamente, ou seja o método não irá esperar por tipos complexos como parametros, mas irá cuidar de tudo que se deve existir para resolver o assunto.

Por exmplo, no caso da reserva iriamos tem um método criando um objeto de um quarto que estará disponível e irá alterar seu estado e gravar isto no banco.

C#
class Quarto
{
public void ServicoReservar(int idCliente, DateTime chegada, DateTime saida)
{
List oListQuarto = Quarto.Disponiveis(chegada, saida);
if(oListQuarto.Count > 0)
{
oListQuarto[0].Reservar(new Cliente(idCliente));
}
}
}

Para não se ter um método muito complexo, optei por reservar o primeiro quarto que estiver disponível, mas poderia receber o tipo do quarto que deveria estar disponível para reserva, por exemplo.

Este é o conceito básico, não muito detalhado, mas prometo estudar mais sobre a arquitetura SOA para poder disertar melhor sobre o assunto.

Tecnologias

Existem algumas tecnologias que permitem com que o SOA, possa vir a ser reproduzido.
Algumas delas são:

  • Programas de linha de comando;
Em alguns casos esta pode vir a ser a melhor opção, como integração de sistemas que estão alocados em uma mesma máquina ou rede, permitindo que algumas liguagens e tecnologias diferentes, possam se conversar.
  • Via Protocolo Http (WebServices);
Ótima opção para integrar sistemas via intranet e internet, geralmente, são as mais utilizadas pelos arquitetos, por se tratar de uma tecnologia bem disseminada e difundida, e por grande parte das tecnologias suportarem e serem compatíveis.
  • Via TCP/IP (Sockets);
Esta é uma opção bastante performatica, quando precisamos integrar sistemas em Rede, cada tecnologia tem uma forma para se desenvolver com este tipo de protocolo, mas a integração é bastante performática.
  • Com envio de mensagens;
O envio de mensagens é uma ótima opção para garantir que a integração tenha consistência e garantia, geralmente são feitos com sistemas de terceiros MSMQ (Microsoft), MQSeries (IBM), entre outros.
  • Via arquivos (Text/XML);
Existem vários padrões de gravação de arquivos de integração, alguns como CSV, XML, arquivo posicional, entre outros, e esta seria uma boa opção para casos em que a integração não deve ser imediata, mas este é o serviço mais demorado, pesado e menos performático, porém, pode ser uma solução para algumas empresas.
  • Outros;
Eu não conheço nenhum tipo de integração que seja diferente dessas, mas pode ser que existam, ser alguém conhecer, por favor me avisem, que estudarei melhor.
WCF
O WCF é uma tecnologia que decide qual a melhor forma de se integrar com o sistema legado, ele tem que decidir se a integração deve ser feita com HTTP, TCP/IP, via NamedPipes, Text/XML, entre outros...

Esta tecnologia foi desenvolvida, pensando na arquitetura SOA, e para mostrar que não se deve utilizar apenas uma tecnologia como WebServices, .NET Remoting ou MQSeries para se desenvolver uma arquitetura SOA.

Conclusão do autor

Não devemos dizer que SOA é apenas uma tendência, e também que é uma nova tendência, assim como a OOP os conceitos do SOA, foi desenvolvido a alguns anos atrás, mas hoje existe uma necessidade grande das empresas de integrar seus sistemas, e a melhor forma encontrada para se fazer isto é disponibilizando serviços para esta integração, e ainda isto permite que seja feita uma grande organização dos processos da empresa, na visão comercial, isto é ótimo, mas nem por isso devemos utilizar SOA em qualquer projeto que iremos desenvolver, é isso mesmo, não devemos ser movidos pela empolgação, mas sim pela razão.
SOA não é desenvolvido apenas com WebServices, existem várias opções para se desenvolver SOA.


NOTA: Qualquer erro conceitual tecnologicos, sugestões, criticas, etc... poste um comentário aqui e tentarei entrar em contato.

2008 no Java Anywhere

Bom pessoal, estávamos de "férias" (do blog apenas) nesse fim de ano, estaremos voltando agora em Fevereiro trazendo muitas novidades.
O ano de 2007 foi muito corrido, TCC + meu trabalho, projetos OpenSource ou sociais, palestras e etc...
Este ano estou quase que full time na empresa, de segunda a sábado, a noite estou fazendo o curso FJ-91 de Arquiteto Java na Caelum com o Fabio Kung, então quase não tenho tempo de parar para fazer um tutorial, mas prometo me esforçar.
Uma outra novidade legal também, é que o Daniel Quirino (GUJ) está no mesmo projeto que eu, então esperem mais posts pois estou aprendendo demais lá.
O Blog cresceu, temos novos membros de alta qualidade, falarei de alguns aqui e do que esperamos para este ano.
Bom vamos as apresentações:
Eduardo Bregaida - TCS
Tecnologia Java.
Roger Niero - IBM
Tecnologia Java.
Guilherme Moreira - Caelum
Tecnologias Java, Linux.
William Silva - Projeto JEDI
Tecnologia Java.
Carlos Osés - BRQ
Tecnologia Java.
Rodrigo Dias - EDS
Tecnologia Java e Suporte.
Fabiana Anjos - TCS
Tecnologia Java.
Alexandre Campelo - TCS
Tecnologia Java.
Danillo Vellozo - Analista de Sistemas
Tecnologias Java, VBA.
Luis Henrique Caruso Crescenzo - Analista de Sistemas
Tecnologias Metodologias e .NET.
Wesley Forti (Virgulino) - Analista de Sistemas
Tecnologias Java.
Elias Estevão Goulart - Professor de Sistemas de Informação - IMES
Tecnologias Diversas.
Alberto Ribeiro - Analista de Sistemas
Tecnologia Java.

Como dá para se observar a galera trabalha em diversas empresas com diferentes sistemas, este ano espero colocar de JSF, Metodologias de Desenvolvimento Ágil, Materiais para introdução a Lógica e Java, JEE, EJB, WebServices, Análise e Gerência de Requisitos e de Sistemas, VRaptor, Hibernate, JPA dentre diversos outros.

Pessoal, fiquei de colocar minha palestra do JustJava de 2007 aqui mas o link está disponível neste endereço: http://www.sucesusp.org.br/mailing2007/congresso/justjava/apresentacoes/JavaServer.zip

O Paulo Silveira e o Shoes (Phillipe Calçado) também deram uma palestra sobre arquitetura muito legal no JustJava que está disponível neste endereço:
http://www.sucesusp.org.br/mailing2007/congresso/justjava/apresentacoes/arquitetura.pdf


Infelizmente ainda estou vendo um espaço para deixar fontes e apresentações das palestras que o pessoal vai dando durante este ano de 2008.

2 de dezembro de 2007

Desculpas

Visitantes do Java Anywhere, desculpem por não atualizarmos o blog desde o dia 11/10, estamos agora no final do ano (alunos, profissionais e professores que participam do Java Anywhere) finalizando nossas atividades na faculdade e deixando os projetos de nossas empresas em ordem, já que no final de ano é um inferno, provas, tcc, exames e fora o trabalho do dia-a-dia.
Prometo assim que acabar com todas estas tarefas atualizaremos o blog, populando com o que houve no JustJava 2007, Conexão Java 2007 e É dia de Java 2007.
Disponibilizarei todas as apostilas e códigos fontes.
Desculpem também sobre o link quebrado da palestra de JSF, estou no momento passando por e-mail para quem está me pedindo, mas em breve vou comprar um domínio e colocar lá, sobre o layout do blog, estamos vendo para 2008 melhorá-lo.

Assim que for tudo ajustado todos nós vamos voltar a postar notícias e tutoriais para ampliar os conhecimentos de Java, também estaremos disponibilizando TCC's do pessoal.

Estamos também com mais membros na equipe do blog, que nos ajudarão a trazer mais temas como Engenharia de SW, Avaliação de Desempenho de sistemas, Desenvolvimento Ágil, dentre outras coisas bem legais do nosso dia-a-dia.

Obrigado por entenderem esse corrido fim de ano.


Eduardo Bregaida

11 de outubro de 2007

SOA

SOA – Arquitetura orientada a serviços.

Boa tarde pessoal, o que vou postar aqui não seria bem um tutorial, atualmente estou estudando alguma coisa sobre SOA na faculdade e a maneira de tentar entender melhor é escrever, então ai vai alguns conceitos básicos sobre SOA, posso estar errado em alguns conceitos mas estamos aberto a sugestões e seus comentários serão bem vindo.
Algumas coisas tirei de sites também.

O que é SOA ?

De acordo com alguns artigos que estou lendo SOA é uma evolução da computação distribuída e da programação em módulos.

SOA é uma arquitetura voltada a serviços, a idéia de SOA é fazer com que toda unidade lógica de um sistema se transforme em um serviço, esses serviços devem ser independentes de qualquer outro.

Esses serviços estão organizados em um BUS (Enterprise Service Bus) disponibilizados através de interfaces, que podem ser acessadas via web services, mensageria, etc...

Pela definição SOA pode ser implementado usando um ou mais protocolos como SOAP, CORBA, DCOM, RPC, etc...

O que seria um serviço em SOA ?

De acordo com o site: http://pt.wikipedia.org/wiki/SOA, “é uma função independente e sem estado (stateless), que aceita uma ou mais requisições e devolve uma ou mais respostas através de uma interface bem definida”. Como havia dito antes cada serviço criado usando esta arquitetura deve ser independente de outro serviço não deve depender de estado e nem processos de outro serviço.

Mas o que seria BUS ?

BUS é um barramento que fica a frente dos serviços disponibilizados por sua arquitetura SOA, esse barramento também é conhecido como middleware, um exemplo de middleware seria o JBOSS. Para que SOA seja uma realidade este barramento é fundamental.

Na utilização de mensageria com JMS esses middlewares ficam responsáveis por enviar para a fila as mensagens, ele faz toda a gerencia dessas mensagens.

Requisitos para uma arquitetura orientada a serviços.

Para ser considerado um SOA ele deve ser independente de plataforma a tal de interoperabilidade.

Para que seja usado um serviço a interface disponibilizada deve estar muito bem definida e independente de plataforma.


Princípios Básicos de SOA.

SOA possui alguns princípios como reuso, componentização, interoperabilidade, modularidade.

Outros itens a respeito dos princípios de SOA são:

Serviços bem encapsulados, o baixo acoplamento, contrato, abstração, reusabilidade, componentização, autonomia, otimização.

Porque devo utilizar SOA ?

O ponto principal da utilização de SOA está na reutilização onde uma vez criado um serviço qualquer aplicação pode utiliza-lo.

Você começa a componentizar seu sistema de forma que fique totalmente independente de plataforma, independente de outros serviços, fácil manutenção entre outros aspectos que só alguém que já implementou poderia citá-los, como estou apenas estudando isso é um ponto de vista meu apenas.

[]'s

4 de outubro de 2007

Nota Oficial do Projeto JEDI no IMES

- IMES S.C do Sul e' o primeiro Agente certificador da Iniciativa JEDI no
Estado de Sao Paulo.

Nos dias 12 e 19092007,houve a implantacao da Iniciativa JEDI no IMES-S.C.do
Sul, tornando-se assim o primeiro Agente certificador no Estado de S.P. a
abracar a iniciativa. O Prof.Ms.Aparecido V. de Freitas coordenador dos
cursos de Ciencia da Computacao,Sistemas de Informacao,Tecnologia de Redes e
Tecnologia WEB Design, ficou encantado com a iniciativa JEDI
disponibilizando de inediato seus laboratorios e deixou claro que quer ser
um parceiro na disseminacao da Inclusao Digital e na melhoria da qualidade
de nossos alunos e profissionais, sendo que a linguagem Java e' adotada no
curriculo de nosso cursos e, sempre temos atuado junto a comunidade atraves
de cursos extra curriculares e eventos como o IMES-Java.E assim junto com
Eduardo Bregaida (nosso agente certificador da regiao do ABC de Sao Paulo)
idealizaram as seguintes palestras de abertura onde compareceram em media de
180 pessoas entre alunos e professores por palestras.

Resumo da palestras
- JEDI O ensino de Java, gratuito e com qualidade, com William Silva.

Foi mostrada como foi a criacao da iniciativa JEDi nas Filipinas, o mercado
de trabalho no Brasil a falta de profissionais qualificados para suprir a
demanda de empregos.Como o DFJUGJEDI e seus coordenadores estarao ajudando
na qualificacao desses profissionais colocando a disposicao e de forma
gratuita cursos de Java com qualidade sob a supervisao da Sun, a importancia
do agente certificador para acesso a infra-estrutura e material
didatico(on-line) para os professores e alunos.

- Jedi Material didatico on-line, com Eduardo Bregaida

Eduardo explicou a importanca da inciativa Jedi e, como ela esta ajudando na
melhora do ensino e na aprendizagem da Plataforma Java e tambem aumentar a
qualidade dos estudantes do IMES-S.C.do Sul.Posteriormente explicou como
seria a sua funcao como agente certificador no ABC e mostrou detalhadamente
aos alunos como efetuar o cadastro e o acesso aos modulos do curso.

- JavaCard, com Igor Medeiros

Igor Medeiros,deu uma pequena aula de Smart Card(cartao inteligente), sua
arquitetura, interface e explicando a sua utilizacao em varias aplicacoes
mostrando aos ouvintes a importancia do Smart Card em nosso dia-a-dia.Desde
um simples cartao bancario ao complexo chip embutido nos celulares GSM. Na
sequencia ainda teve folego para fazer uma motivacao com os alunos falando
sobre profissao com o titulo de seu livro Campeoes ajudam o proximo, esse
tema foi importante pois mostrou a necessidade e importancia do trabalho
voluntario.

- Introducao ao JavaFX, com Sergio Lopes (CAELUM)

Sergio Lopes,falou sobre JavaFX a nova tecnologia da Sun comparando e
mostrando a sua facilidade de desenvolvimento em relacao ao SwingAWT.Fez
comparacao de codigo entre um Hello World em Swing e em JavaFX,mostrou
tambem que Java nao vive de Hello World dai criou uma loja virtual em 2D,
com binding de componentes,classes,arrays, triggers para os eventos,cesta de
compras e etc.

Bem galera e' isso ai, quero destacar o apoio de nosso grande amigo e agente
certificador-ABC-SP. Eduardo Bregaida por ter acreditado na iniciativa JEDI
desde o inicio. Espero logo mais trazer mais noticias nos proximos boletins.
JEDI em Brasilia, no Festival Software Livre-DF (5 e 6 de Outubro).






Pessoal, cadastrem-se no JEDI e assistam as aulas: http://www.dfjug.org/DFJUG/jedi/index.jsp


Estarei postando com os outros colaboradores do Blog o JustJava 2007, amanhã é minha palestra: Produtividade em JSF, estou fazendo de tudo p/ ser bem d+++++ =)