Mostrando postagens com marcador SOA. Mostrar todas as postagens
Mostrando postagens com marcador SOA. Mostrar todas as postagens

14 de setembro de 2011

QConSP 2011 - Eu Fui e foi Show!



Esse ano houve a segunda edição do QConSP (Twitter: #QConSP) com diversas palestras de alto nível, o melhor evento de TI do ano, diversos palestrantes de fora do Brasil, vou falar um pouco do fim de semana na QCon São Paulo.
Os slides das palestras podem ser vistos acompanhando a time line do #QConSP pelo twitter.
Antes de falar das apresentações vou falar da galera (que com certeza esquecerei de botar todos, pois foram muitos amigos tanto os que estavam fora como os que moram em outros estados do Brasil), foi ótimo rever o pessoal do JavaCE que foram numa caravana enorme para o QCon, o Handerson Frota, o Celso Martins, o Danilo Sato que atualmente está na Europa, a Loiane (IBM), o Diego Plentz, Bruno Borges de Wicket, o Fabio Akita, Luca Bastos, Christiano Milfont, Lucas Cavalcanti, Maurício Linhares, Fernando Boaglio, Washington Botelho, Bruno Oliveira, Alberto Luiz Souza, Cristiano Sanchez, Jean Donato, Alexandre Freire, Marcelo Tozzi,  o pessoal do GURUSP, do CafeComJava (Alexandre Saudate, Rafael Afonso, Léo Biscassi e Christian Reichel), muitos amigos do GUJ (incluindo os desaparecidos como Fernando Meyer, Fábio Kung e o Daniel Destro) e é claro está de Parabéns novamente pela organização a CAELUM, revi meus grandes amigos que considero como irmãos, o Paulo Silveira, o Guilherme Silveira, o Guilherme Moreira que atualmente cuida da Caelum no DF, o Nico Steppat (atualmente cuidando da Caelum RJ), o Sérgio Lopes, Luiz Bassi, Renata Bassi, Camila Farinho, Cecilia Fernandes, Adriano Almeida, Anderson Leite, David Paniz, Rubem Azenha, Douglas Campos (qmx), Gabriel Oliveira, José Donizetti, Raphael Lacerda, certeza que estou esquecendo pessoas... 


Sábado:

No Sábado assisti as palestras:
Jim Webber - Aprendizados de grandes sistemas HTTP-centric.

Sérgio Lopes - Por uma Web mais rápida: Técnicas de otimização de Sites
Danilo Sato - Refatoração em larga escala

Guilherme Silveira - Design de código: a qualidade que faz a diferença
Daniel Destro -
Arquitetura de um sistema crítico de alta disponibilidade com soluções open source
Raphael Lacerda - Além do CDI com Seam 3
Daniel Sobral - Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distribuídos para a JVM 
 

Lightning Talks

Christian Reichel - Por um Java mais funcional

José Donizetti - Dicas para testar código legado.
Eder Ignatowicz - Desenvolvimento Ágil Orientado a Testes: Como a busca pela qualidade transformou uma equipe de desenvolvimento Java
Daniel Cukier - Desenvolvendo sua infra-estrutura com testes
Handerson Frota - Aceite os testes de aceitação
Eduardo Bregaida - Cultura da Empresa - um problema na Adoção Ágil 

Eu adorei ter tido a oportunidade no QCon de apresentar um Lightning, achei que ia estourar o tempo, no final ainda sobrou um minuto e quarenta e um segundos rs ;D

Depois fomos para o hora extra no bar Opção continuar o networking.

Domingo:

As palestras que assisti no domingo foram:
Kunal Bhasin - Caching e NoSQL? 
Khawaja Shams - MythBusters - Mission Cloud Computing @ NASA
Nelson Haraguchi -  Escalando e Otimizando Projetos Legados
Saulo Arruda -  5 anos em 1 - aprendendo a empreender
Cecilia Fernandes - Melhorando um ambiente ágil
Fernando de la Riva -  Lean Startups
Cristiano Sanchez e Wladimir Domingues - Aplicações Móveis Híbridas: usando Web e Nativo juntos

Final das contas, o evento superou o de 2010, vale cada centavo, aprendi muitas táticas algumas que já comecei utilizar na empresa, o QConSP é um evento que se mostrou eficaz e de grande valia, não só por essas ótimas palestras, mas também pelo networking, rever os amigos que não estão por perto e conhecer as pessoas que normalmente conversamos apenas pelo fórum ou através de emails, messengers e afins...
Parabéns Caelum por mais esse sucesso.

Ano que vem tem mais QConSP.

Nos vemos lá =)  

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.

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