Novas Tecnologias em Novas Tecnologias em Arquiteturas de SistemasArquiteturas de Sistemas
Nilson SantNilson Sant’’AnnaAnnaLAC/INPELAC/INPE –– LaboratLaboratóório de Computario de Computaçção e ão e
MatemMatemáática Aplicadatica AplicadaCaltechCaltech –– CaliforniaCalifornia InstituteInstitute of of TechnologyTechnology
Janeiro a Dezembro de 2007Janeiro a Dezembro de 2007
AgendaAgendaMotivaMotivaççãoãoContexto de TrabalhoContexto de TrabalhoObjetivosObjetivosMetodologia de PesquisaMetodologia de Pesquisa–– Objetivo 1: A base de sistemas de informaObjetivo 1: A base de sistemas de informaçção ão –– Bancos Bancos
de Dadosde Dados–– Objetivo 2: Novas Arquiteturas Objetivo 2: Novas Arquiteturas –– Arquitetura Orientada Arquitetura Orientada
a Servia Serviçço o -- SOASOA
Fundamento do Trabalho Fundamento do Trabalho –– Engenharia de Engenharia de Software e Arquiteturas.Software e Arquiteturas.Exemplo de Sistema: VO Exemplo de Sistema: VO –– Virtual Virtual ObservatoryObservatoryConclusãoConclusão
MotivaMotivaççãoãoCom relaCom relaçção ão àà DemandaDemanda–– Sistemas Grandes, Complexos e IntegradosSistemas Grandes, Complexos e Integrados
Exemplos: ComExemplos: Coméércio Eletrônico: rcio Eletrônico: AmazonAmazon.com, .com, Americanas.com, etcAmericanas.com, etcÁÁrea Cientifica: BRAVO rea Cientifica: BRAVO –– BrasilianBrasilian VO, Gestão de VO, Gestão de Clima e Clima Espacial,etc. Clima e Clima Espacial,etc.
–– AplicaAplicaçções em Diversos Campos do ões em Diversos Campos do ConhecimentoConhecimento
SICS(MECB INPE) SICS(MECB INPE) –– 300.000 LOC (10 anos)300.000 LOC (10 anos)
Software para Sindicato: Software para Sindicato: ewpewp--SindCTSindCTMMóódulos Controle de Sdulos Controle de Sóócios, Jurcios, Juríídico, dico, ConveniosConvenios,etc,etc
–– 2065 Arquivos de C2065 Arquivos de Cóódigos Fontes (1449 digos Fontes (1449 JSPs/HTMLJSPs/HTML, , 616 JAVA 616 JAVA ClassClass))
–– 253.452 linhas de c253.452 linhas de cóódigo em JAVA (2 anos)digo em JAVA (2 anos)
MotivaMotivaççãoãoCom relaCom relaçção aos Sistemasão aos Sistemas–– Maior demanda de Uso (Maior demanda de Uso (Web/IntenertWeb/Intenert))–– SeguranSegurançça (compras ona (compras on--line: Posso Comprar?)line: Posso Comprar?)–– Alta disponibilidade (sistema 24/7 ?)Alta disponibilidade (sistema 24/7 ?)–– Alta confiabilidade (faz o que quero sempre?)Alta confiabilidade (faz o que quero sempre?)–– EscalEscaláávelvel (se aumentar a demanda posso crescer o (se aumentar a demanda posso crescer o
sistema?)sistema?)–– Alta capacidade de ManutenAlta capacidade de Manutenççãoão–– Flexibilidade (posso trocar o Gerenciador de Bancos de Flexibilidade (posso trocar o Gerenciador de Bancos de
Dados?)Dados?)–– MultiMulti--LanguageLanguage–– Eficiente (Recursos de MEficiente (Recursos de Mááquina: memquina: memóória, ria,
processador,etc.processador,etc.–– InteroperavelInteroperavel (posso relacionar com outros sistemas e (posso relacionar com outros sistemas e
trocar Informatrocar Informaçções ?)ões ?)–– Autonomia de ServiAutonomia de Serviçços (Distribuios (Distribuiçção de Servião de Serviçços por os por
servidores diversos)servidores diversos)
ContextoContexto do do TrabalhoTrabalho: A Caltech: A Caltech
Academic DivisionsAcademic Divisions–– BiologyBiology–– Chemistry & Chemical EngineeringChemistry & Chemical Engineering–– Engineering & Applied ScienceEngineering & Applied Science–– Geological & Planetary SciencesGeological & Planetary Sciences–– Humanities & Social SciencesHumanities & Social Sciences–– Physics, Mathematics & AstronomyPhysics, Mathematics & Astronomy–– Interdisciplinary ProgramsInterdisciplinary Programs
CACR, Caltech's Center for CACR, Caltech's Center for Advanced Computing ResearchAdvanced Computing Research
““CACR exists to ensure that Caltech is at CACR exists to ensure that Caltech is at the forefront of computational science and the forefront of computational science and engineering (CS&E). CS&E is the practice engineering (CS&E). CS&E is the practice of computer based modeling, simulation of computer based modeling, simulation and data analysis for the study of and data analysis for the study of scientific phenomena and engineering scientific phenomena and engineering designs.designs.””
CACR provides an environment that CACR provides an environment that cultivates multidisciplinary collaborations. cultivates multidisciplinary collaborations.
Currently work with Caltech groups in Currently work with Caltech groups in –– applied mathematics, applied mathematics, –– astronomy, astronomy, –– biology, biology, –– engineering, engineering, –– geophysics, and geophysics, and –– experimental physicsexperimental physics
Palomar Quest Palomar Quest -- ObservatoryObservatoryThe Palomar Observatory is The Palomar Observatory is located in north San Diego located in north San Diego County, California. County, California.
It is a worldIt is a world--class center of class center of astronomical research that is astronomical research that is owned and operated by the owned and operated by the California Institute of Technology. California Institute of Technology.
The observatory is home to five The observatory is home to five telescopes that are nightly used telescopes that are nightly used for a wide variety of astronomical for a wide variety of astronomical research programs. research programs.
The research is conducted by The research is conducted by Caltech's faculty, postCaltech's faculty, post--doctoral doctoral fellows and students, and by fellows and students, and by researchers at Caltech's researchers at Caltech's collaborating institutions.collaborating institutions.
4848--inch (1.2 m) Samuel inch (1.2 m) Samuel OschinOschinTelescope Telescope
The Samuel The Samuel OschinOschin Telescope was used to Telescope was used to generate the Second Palomar Observatory generate the Second Palomar Observatory Survey Survey POSS IIPOSS II and the Digital Palomar and the Digital Palomar Observatory Sky Survey Observatory Sky Survey DPOSSDPOSS. .
In 2000 and 2003 the Samuel In 2000 and 2003 the Samuel OschinOschin Telescope Telescope was converted to using a large format CCD was converted to using a large format CCD camera to replace photographic plates, and the camera to replace photographic plates, and the control system was automated.control system was automated.–– Search for moving objects in the Solar SystemSearch for moving objects in the Solar System–– Search for variable stars and galaxies Search for variable stars and galaxies
The new QUEST camera on the Samuel The new QUEST camera on the Samuel OschinOschinTelescope at Palomar has 161 million pixels, Telescope at Palomar has 161 million pixels, making it one of the largest and most capable making it one of the largest and most capable digital cameras in the world.digital cameras in the world.–– There are 112 individual There are 112 individual CCDsCCDs, , –– each 600 x 2400 pixels, each 600 x 2400 pixels, –– arranged in a mosaic of 4 rows or "fingers" of 28 arranged in a mosaic of 4 rows or "fingers" of 28
CCDsCCDs each (2400 x 16800 pixels).each (2400 x 16800 pixels).
The Palomar Quest Sky SurveyThe Palomar Quest Sky Surveyhttp://http://palquest.orgpalquest.org//
ObjetivoObjetivo
Pesquisar como as InformaPesquisar como as Informaçções ões Astronômicas são armazenadas e Astronômicas são armazenadas e utilizadas no âmbito do projeto utilizadas no âmbito do projeto PalomarPalomar--QuestQuest SurveySurvey
Pesquisar como os Sistemas e as Pesquisar como os Sistemas e as AplicaAplicaçções são desenvolvidas em ões são desenvolvidas em termos de Engenharia e Arquiteturatermos de Engenharia e Arquitetura
MetodologiaMetodologia de de PesquisaPesquisa
Objetivo 1:Objetivo 1:–– Entender o Banco de dados para o Entender o Banco de dados para o ““PipeLinePipeLine””–– Construir um Banco de Dados para o 2DPHOTConstruir um Banco de Dados para o 2DPHOT--
BRAVO para o Gerenciador BRAVO para o Gerenciador PostgreSQLPostgreSQL
Objetivo 2:Objetivo 2:–– Implantar uma AplicaImplantar uma Aplicaçção Cliente SOA para o ão Cliente SOA para o
OpenSkyQueryOpenSkyQuery para o para o ““pipelinepipeline””;;–– Implantar uma AplicaImplantar uma Aplicaçção ão ““exemploexemplo”” para o para o
projeto BRAVO.projeto BRAVO.
ObjetivoObjetivo 1: A base de 1: A base de sistemassistemas de de informainformaççãoão –– BancosBancos de Dadosde Dados
Banco de Dados do Banco de Dados do PipelinePipeline–– Sistema SDSS Sistema SDSS skyserverskyserver
database database andand CASJOBS.CASJOBS.Desenvolvido em Parceria Desenvolvido em Parceria com a Microsoftcom a MicrosoftSQL Server DatabaseSQL Server Database
–– Banco de Dados e Banco de Dados e Aplicativos não Prontos.Aplicativos não Prontos.
–– Muito arquivos espalhados Muito arquivos espalhados no projetono projeto
Banco de Dados Banco de Dados –– BRAVOBRAVO–– Desenvolvimento do 1Desenvolvimento do 1oo
ModeloModelo–– Desenvolvimento do Script Desenvolvimento do Script
em em PostgreSQLPostgreSQL
Table 1: SDSS data sizes (in 2006) in terabytes. About 7 TB online and 10 TB in archive (for reprocessing if needed). Product Raw CompressedPipeline input 25 TB 10 TB Pipeline output (reduced images) 10 TB 4 TB
Catalogs 1 TB 1 TB Binned sky and masks ½ TB ½ TB Atlas images 1TB 1TB
SDSS SDSS skyserverskyserver databasedatabase
SQL SQL –– Search ToolsSearch Tools
O O ModeloModelo parapara o 2DPhoto 2DPhot--BRAVOBRAVOBaseado em Baseado em Imagem Imagem Astronômica Astronômica FITsFITse Informae Informaçções ões Geradas pelo Geradas pelo SextractorSextractor e e 2DPhot .2DPhot .Modelo com Modelo com AproximadamentAproximadamente 40 Entidadese 40 EntidadesModelo Final com Modelo Final com 50 a 60 50 a 60 EntidadesEntidades
create table ASTRO_OBJECT (ID BIGINT not null,NAME CHARACTER VARYING(200) not null,primary key (ID)
);create table BAND (
ID BIGINT not null,NAME CHARACTER VARYING(200) not null,DETECTOR_FK BIGINT,FILTER_FK BIGINT,primary key (ID)
);create table CLASSIFIERS (
ID BIGINT not null,NAME CHARACTER VARYING(200) not null,primary key (ID)
);create table COMPL_PS (
ID BIGINT not null,NAME CHARACTER VARYING(100) not null,PATH CHARACTER VARYING(1024) not null,PROCESSING_FK BIGINT not null,primary key (ID)
);create table DEFAULT_PARAM (
ID BIGINT not null,MINAREA INTEGER not null,DETECT_THRESH INTEGER not null,SATUR_LEVEL BIGINT not null,MAG_ZEROPOINT REAL not null,GAIN REAL not null,PIXEL_SCALE REAL not null,READOUT REAL not null,primary key (ID)
);
O O ModeloModelo parapara o 2DPhoto 2DPhot--BRAVOBRAVO
Objetivo 2: Novas Arquiteturas Objetivo 2: Novas Arquiteturas ––Arquitetura Orientada a ServiArquitetura Orientada a Serviçço o --
SOASOA
Qualidade de um Bom ProjetoQualidade de um Bom ProjetoFatores de qualidade de Fatores de qualidade de McCallMcCall
Manutenabilidade (Posso arrumar um erro?)Flexibilidade (Posso modificar?)Testabilidade (Posso testar?)
Corretude (Ele faz o que eu quero?)Confiabilidade (Faz correto todo o momento?)Eficiência (Utiliza todos os recursos disponíveis?)Integridade (É seguro?)Usabilidade (É projetado para o usuário?)
Portabilidade (Operacional em outra plataforma?)Reusabilidade (Posso reutiliza-lo?)Interoperabilidade (Interfacea com outros sistemas?)
Mudanças Novos Ambientes
Carac.Operacionais
Precursores da Qualidade: Coesão Precursores da Qualidade: Coesão e Acoplamentoe Acoplamento
•• CoesãoCoesão•• A coesão de um componente A coesão de um componente éé uma medida da uma medida da
proximidade das relaproximidade das relaçções entre seus componentesões entre seus componentes•• Um componente Um componente funfunçção lão lóógica ou entidades simples gica ou entidades simples
•• NNííveis de Coesão:veis de Coesão:•• Funcional Funcional cada parte necesscada parte necessáária p/ execuria p/ execuçção de ão de
funfunçção (ão (melhor coesãomelhor coesão); ); •• SeqSeqüüencial encial output serve como inputoutput serve como input•• ComunicaComunicaçção ão mesmo input e outputmesmo input e output•• Procedimento Procedimento uma sequma seqüüência de controleência de controle•• TemporalTemporal•• LLóógicagica•• CoincidentalCoincidental ((pior coesãopior coesão))
•• OO OO coesão naturalcoesão natural
Precursores da Qualidade: Coesão Precursores da Qualidade: Coesão e Acoplamentoe Acoplamento
AcoplamentoAcoplamento–– Grau de interconexões entre os Grau de interconexões entre os
componentescomponentes–– ÉÉ desejdesejáável que os sistemas sejam vel que os sistemas sejam
fracamente acopladosfracamente acoplados–– OO: favorece o acoplamento fraco pois OO: favorece o acoplamento fraco pois
não tem estado compartilhadonão tem estado compartilhado
ArquiteturasArquiteturas
Projeto de Arquitetura: ConceitosProjeto de Arquitetura: Conceitos
•• Subsistema Subsistema éé um sistema cuja operaum sistema cuja operaçção não depende ão não depende dos servidos serviçços de outros subsistemas. os de outros subsistemas. •• Composto por mComposto por móódulosdulos•• Interfaces são utilizadas p/ comunicaInterfaces são utilizadas p/ comunicaçção entre ão entre
subsistemassubsistemas•• MMóódulo dulo componente que fornece e utiliza um ou mais componente que fornece e utiliza um ou mais
serviserviçços p/ outros mos p/ outros móódulosdulos•• Modelo afeta:Modelo afeta:
•• DesempenhoDesempenho•• RobustezRobustez•• DistribuiDistribuiççãoão•• ManutenManutenççãoão
Desenvolvimento MonolDesenvolvimento MonolííticoticoAplicaAplicaçções vistas como um ões vistas como um bloco bloco úúniconicoForte acoplamento entre as Forte acoplamento entre as camadas lcamadas lóógicasgicasSomente uma camada Somente uma camada ffíísicasicaBaixa coesãoBaixa coesãoDificuldade de ManutenDificuldade de ManutenççãoãoConseqConseqüüência: ência: –– Dificuldade de Dificuldade de
modificamodificaçção.ão.–– AlteraAlteraçções podem ões podem
introduzir erros em introduzir erros em partes aparentemente partes aparentemente não relacionadasnão relacionadas
Camada de Apresentação
Lógica de Negócios
Camada de Acesso à dados (Integração)
Banco de Dados
Cliente Cliente –– Servidor: 2 Camadas Servidor: 2 Camadas FFíísicassicas
Acrescenta certa quantidade de Acrescenta certa quantidade de escalabilidadeescalabilidade e flexibilidade;e flexibilidade;DiminuiDiminuiçção do acoplamento duas ão do acoplamento duas camadas fcamadas fíísicas: banco de dados sicas: banco de dados poderia ser totalmente substitupoderia ser totalmente substituíído do desde que as interfaces de acesso desde que as interfaces de acesso permanecessem as mesmaspermanecessem as mesmasProblemas:Problemas:–– Camadas de apresentaCamadas de apresentaçção e ão e
negnegóócios ainda fortemente cios ainda fortemente acopladas;acopladas;
–– Dificuldade de manutenDificuldade de manutençção e ão e distribuidistribuiççãoão
–– Forte dependência de Forte dependência de plataforma, necessidade plataforma, necessidade
–– aumento de desempenho de aumento de desempenho de hardware.hardware.
Camada de Apresentação
Lógica de Negócios
Banco de Dados
Lógica de Acesso à dados
Arquitetura 3 Camadas FArquitetura 3 Camadas FíísicassicasAlto grau de Alto grau de modularizamodularizaççãoão;;Fraco acoplamento entre os Fraco acoplamento entre os mmóódulos;dulos;Melhor atendimento aos Melhor atendimento aos requisitos não funcionais: requisitos não funcionais: escalabilidadeescalabilidade, conectividade, , conectividade, tolerância tolerância àà falhas;falhas;Mais facilidade de manutenMais facilidade de manutençção;ão;Mais facilidade para Mais facilidade para distribuidistribuiçção;ão;Ponto fraco:Ponto fraco:–– Maior necessidade de Maior necessidade de
conhecimento e conhecimento e profissionalismo da equipe profissionalismo da equipe ttéécnica.cnica.
–– Profissionais cada vez mais Profissionais cada vez mais especializados em diversas especializados em diversas tecnologiastecnologias
Banco de Dados
Lógica de Acesso à dados
Lógica de Negócios
Camada de Apresentação
A plataforma A plataforma WebWebCaracterCaracteríísticas:sticas:–– Baseada em HTTP (RFC 2068)Baseada em HTTP (RFC 2068)–– Protocolo simples de transferência de arquivosProtocolo simples de transferência de arquivos–– Sem estado (não mantSem estado (não mantéém sessão aberta)m sessão aberta)
www.e-webproject.com.brAbre conexão para endereço:80
Requisição.... GET / Index.html
Uma resposta...Apresenta Index.html
Fecha Conexão
Tecnologias para o ServidorTecnologias para o ServidorCaracterCaracteríísticas:sticas:–– Rodam do lado do servidor, portanto, não dependem de Rodam do lado do servidor, portanto, não dependem de
suporte por parte dos suporte por parte dos browsersbrowsers–– ““BrowsersBrowsers”” fornecem apenas a interface do usufornecem apenas a interface do usuááriorio–– Interceptam o curso normal da comunicaInterceptam o curso normal da comunicaççãoão
Recebem dados via requisiRecebem dados via requisiçções HTTP (GET e POST)ões HTTP (GET e POST)Devolvem dados atravDevolvem dados atravéés de respostas HTTPs de respostas HTTP
Categorias de TecnologiasCategorias de Tecnologias–– CGI CGI -- CommonCommon GatewayGateway Interface Interface –– APIsAPIs: ISAPI, NSAPI, Apache API, : ISAPI, NSAPI, Apache API, ServletServlet API, ...API, ...–– Scripts: ASP, JSP, Scripts: ASP, JSP, LiveWireLiveWire (SSJS), (SSJS), ColdCold FusionFusion, PHP, ..., PHP, ...
APIsAPIs ServletServletAPI independente de API independente de plataforma e praticamente plataforma e praticamente independente de fabricante independente de fabricante Componentes são escritos Componentes são escritos em Java e se chamam em Java e se chamam servletsservletsComo os componentes Como os componentes SAPI proprietSAPI proprietáários, rodam rios, rodam dentro do servidor, mas dentro do servidor, mas atravatravéés de uma Ms de uma Mááquina quina Virtual JavaVirtual JavaDisponDisponíível como vel como ‘‘plugplug--inin’’ou conector para ou conector para servidores servidores ueue não o não o suportam diretamentesuportam diretamenteNativo em servidores Nativo em servidores SunSun, , IBM, ...IBM, ...
Servidor HTTP
Interface ISAPI
Componente ISAPIOferecendo Interface
Servlet API via conector
ServletJVM
AplicaçãoRemota
Linguagens Scripts e JSP Linguagens Scripts e JSP –– Java Java Server Server PagePage
Coloca a linguagem de programaColoca a linguagem de programaçção dentro do HTML ( e ão dentro do HTML ( e não o contrnão o contráário)rio)
Permite o controle da aparência e estrutura da pPermite o controle da aparência e estrutura da páágina em gina em softwares de design ( softwares de design ( DreamWeaverDreamWeaver, FrontPage), FrontPage)
PPáágina fica mais leggina fica mais legíívelvel
Quando houver muita programaQuando houver muita programaçção, cão, cóódigo pode ser digo pode ser escondido em escondido em servletsservlets, , JavaBeansJavaBeans, componentes ( por , componentes ( por exemplo: componentes exemplo: componentes ActiveXActiveX, no caso do ASP), no caso do ASP)
Alguns dos mais populares: Alguns dos mais populares: Microsoft Microsoft ActiveActive Server Server PagesPages( ASP), ( ASP), SunSun JavaServerJavaServer PagesPages ( JSP), ( JSP), MacromediaMacromedia ColdColdFusionFusion, PHP, PHP
Exemplo de Exemplo de ServletServlet e JSP e JSP equivalenteequivalente
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class SimpleServlet extends HttpServlet {public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {PrintWriter out;response.setContentType("text/html");out = response.getWriter();String user = request.getParameter("usuario");if (user == null)user = "World";out.println("<HTML><HEAD><TITLE>");out.println("Simple Servlet Output");out.println("</TITLE></HEAD><BODY>");out.println("<H1>Simple Servlet Output</H1>");out.println("<P>Hello, " + user);out.println("</BODY></HTML>");out.close();}}
<HTML><HEAD><TITLE>Simple Servlet Output</TITLE></HEAD><BODY><%String user =request.getParameter("usuario");if (user == null)user = "World";%><H1>Simple Servlet Output</H1><P>Hello, <%= user %></BODY></HTML>
SERVLET: Bom para Processamento
JSP: Bom paraapresentação
Arquitetura: CenArquitetura: Cenááriosrios
UtilizaUtilizaçção de JSP na Aplicaão de JSP na Aplicaçção: ão: Arquitetura ElementarArquitetura Elementar
try { Class.forName(jdbcDriver).newInstance(); conn = DriverManager.getConnection(dbURL,username, passwd); stmt = conn.createStatement(); rs = stmt.executeQuery(“SELECT * FROM CLIENTES”);ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); %>
Código SQL no
JSP
Browser
JSP/Servlet
Introduzindo classes JAVA: Introduzindo classes JAVA: Desacoplamento das CamadasDesacoplamento das Camadas
DAO
Apresentação Integração
JSP/Servlet
JSP/Servlet
<% Clientes[] clientes = ClientesDAO.getInstance().loadAll();%> <table> <% for(int i=0; i <clientes.length; i++) { %>
<tr> <td><%=clientes[i].getNome()%><td> <td><%=clientes[i].getRg()%></td>
</tr> <%}%>
JSP usando
DAO
Introduzindo Componentes: Introduzindo Componentes: Melhoria na Camada de Melhoria na Camada de
ApresentaApresentaççãoão
Controller DAO
Apresentação Integração
JSP/Servlet
JSP/Servlet
Introduzindo Componentes: Introduzindo Componentes: Mais Desacoplamento e Ganhos em EscalaMais Desacoplamento e Ganhos em Escala
Controller
RequestDispatcher
Command BusinessDelegate
Servicelocator
DAO
Apresentação Negócios Integração
JSP/Servlet
JSP/Servlet
Modelo de Modelo de ““nn”” Camadas Camadas –– n n TierTier
SunSun Java Java CenterCenter SJC SJC ––Core Core J2EEJ2EE Design Design
PatternsPatterns
SOA SOA –– Service Service Oriented ArchitectureOriented Architecture
Modelo Centralizado para Modelo Centralizado para DistribuDistribuíídodo
ProviderProvider
Provider
Provider
Provider
Provider
Central Provider
Modelo Centralizado
• Domínio/Identidade de Rede Único• Repositório Único• Controle Centralizado• Ponto de Falha Único• Serviço é igual e sempre o Mesmo
Modelo Distribuído (Open Federated Model)
• Vários Domínios de Rede• Sem Controle Centralizado• Sem Ponto de Falha Único• Serviço pode ser igual mas não
necessariamente.
SOA e WebSOA e Web--ServicesServices
““A software system designed to support interoperable A software system designed to support interoperable machinemachine--toto--machine interaction over a network. It has an machine interaction over a network. It has an interface described in a machineinterface described in a machine--processableprocessable format.format.”” --W3CW3C
PalavrasPalavras ChaveChave: : InteroperabilidadeInteroperabilidade e Sistemas e Sistemas DistribuDistribuíídosdos
Not a new idea:Not a new idea:–– RPC/RMIRPC/RMI–– CORBACORBA–– DCOMDCOM–– XMLXML--RPCRPC
PrincPrincíípiospios de SOAde SOAEncapsulamento do Serviço– Esconder detalhes detalhes de implementação e código
Autonomia do Serviço– O Serviço tem autonomia sobre a lógica que ele encapsula
Acoplamento Fraco ou Baixo– Minimizar dependências
Contrato de Serviço– Acordo com as funções que presta, descritos por documentos
descritoresComposição de Serviços– Os serviços podem ser agregados formando coleções de
serviços.Diretório de Serviços (Service discoverability)– Serviços podem ser encontrados and agregados através de
mecanismos de diretórios (listas ou páginas amarelas)
A A ArquiteturaArquitetura SOASOA
A A ArquiteturaArquitetura de um de um SistemaSistema de de NegNegóóciocio usandousando SOASOA
O O ProjetoProjeto dos dos ObservatObservatóóriosriosVirtuaisVirtuais –– VOVO
IVOA IVOA –– International VO AllianceInternational VO Alliance
ExemploExemplo do NVO (US)do NVO (US)
Registry
OAIPublish
Registry
OAIPublish
Registry
OAI Query
Registry
OAI QueryRegistry
OAIPublish
Registry
OAIPublish
DIS
1
2
3
4Caltech
NCSAJHU/StSci
Goddard
DataScope
O O OpenSkyQueryOpenSkyQuery e e SkyNodesSkyNodesSkyQuerySkyQuery éé uma Aplicauma Aplicaçção Concentradora e que ão Concentradora e que disponibiliza o acesso a Ndisponibiliza o acesso a Nóós(s(SkySky NodesNodes) de um Sistema ) de um Sistema DistribuDistribuíído.do.
SkyNodeSkyNode éé uma interface dos Numa interface dos Nóós que respeita as regras s que respeita as regras (protocolos) de (protocolos) de ““FederaFederaççãoão”” do do SkyQuerySkyQuery. .
No coraNo coraçção do ão do SkyQuerySkyQuery existe um cruzamento existe um cruzamento spacialspacial de de catcatáálogos, ou seja, logos, ou seja, éé posspossíível cruzar informavel cruzar informaçções existentes ões existentes nos nnos nóós.s.
Portanto o Portanto o SkyQuerySkyQuery tem acesso a cattem acesso a catáálogos armazenados logos armazenados em localidades geogrem localidades geográáficas diferentes.ficas diferentes.
O O OpenSkyQueryOpenSkyQuery e e SkyNodesSkyNodes
FluxoFluxo de Dadosde Dados
SkyNode 1
SkyQuery
SkyNode 2
SkyNode 3
query
ServiServiççosos OferecidosOferecidos WebWeb--ServicesServicesThe following operations are supported. For a formal definition,The following operations are supported. For a formal definition, please review the Service Description.please review the Service Description.
* * GetTablesGetTablesReturns tables.Returns tables.
* * MakePlanMakePlanCreates an Creates an ExecPlanExecPlan. This runs cost queries as well. (req. for correct plan orderin. This runs cost queries as well. (req. for correct plan ordering)g)
* * GetAllSkyNodesVOTableGetAllSkyNodesVOTableLists names of all available node Lists names of all available node shortnamesshortnames in a in a votablevotable..
* * GetAllSkyNodesGetAllSkyNodesLists names of all available node Lists names of all available node shortnamesshortnames..
* * GetMetaTablesGetMetaTablesReturns column info for one column.Returns column info for one column.
* * GetMetaColumnsGetMetaColumnsReturns an array of column info.Returns an array of column info.
* * GetColumnsGetColumnsReturns an array of column names.Returns an array of column names.
* * NodeContainsColumnNodeContainsColumn
* * UploadTableUploadTableReturns literal table nameReturns literal table name
* * SubmitQuerySubmitQueryRuns a single node query.Runs a single node query.
* * GetTableInfoGetTableInfoReturns column info for one column.Returns column info for one column.
* * SubmitDistributedQuerySubmitDistributedQueryRuns a distributed query Runs a distributed query queryquery by making a plan and then executing it by making a plan and then executing it -- you may call the two steps you may call the two steps seperatelyseperately if you wish to view the plan or if you wish to view the plan or
track progress.track progress.
* * GetColumnInfoGetColumnInfoReturns column info for one column.Returns column info for one column.
* * SubmitPlanSubmitPlanExecutes a plan and returns results.Executes a plan and returns results.
* * SubmitDistributedQuerySigmaSubmitDistributedQuerySigmaAllows Allows MyDataMyData Sigma Sigma
Um Um ExemploExemplo: : WebFindingClustersWebFindingClusters
Interfaces JSPs
loadData.java Servlet +Classes e Classes AXIS
PostgreSQL - Database
RequestResponse
ConclusãoConclusãoOs Sistemas (Os Sistemas (ProvidersProviders) devem ser desenvolvidos ) devem ser desenvolvidos usando arquiteturas Susando arquiteturas Sóólidas e robustas.lidas e robustas.Portais de Projetos (BRAVO, Clima Espacial, etc) Portais de Projetos (BRAVO, Clima Espacial, etc) podem ser construpodem ser construíídos com objetivo de dos com objetivo de ““FederarFederar””NNóós.s.Pesquisas em Engenharia de Software Pesquisas em Engenharia de Software (Arquitetura) devem ser intensificadas no INPE e (Arquitetura) devem ser intensificadas no INPE e principalmente fortalecida pela pprincipalmente fortalecida pela póóss--graduagraduaçção ão para atender a demanda dos projetos.para atender a demanda dos projetos.HHáá muitos conceitos envolvidos quando se muitos conceitos envolvidos quando se trabalha com SOA e muitos ainda poucos trabalha com SOA e muitos ainda poucos explorados (Pesquisa) como a Qualidade de explorados (Pesquisa) como a Qualidade de ServiServiçços.os.
Obrigado !Obrigado [email protected]@lac.inpe.br