1. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Sistema de Preserva¸˜o Digital
ca
Camada de Interface
GT-DigitalPreservation
C3SL - Centro de Computa¸˜o Cient´
ca ıfica e Software Livre
Departamento de Inform´tica
a
Universidade Federal do Paran´
a
Setembro de 2011
university-logo
Roberto Beraldo Chaiben Camada de Interface
2. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
3. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
4. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Localiza¸˜o da Camada de Interface
ca
Aplicações
Interface
Gerenciamento de Réplicas
Armazenamento
Repositório
university-logo
Roberto Beraldo Chaiben Camada de Interface
5. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Motiva¸˜o
ca
Camada de Interface
Padronizar a comunica¸˜o do Cliente com a Camada de
ca
Gerenciamento
Interface de f´cil utiliza¸˜o por aplica¸˜es (clientes)
a ca co
Independente de Sistema Operacional
Acesso via WEB (HTTP)
Solu¸˜o: WEB Service
ca
university-logo
Roberto Beraldo Chaiben Camada de Interface
6. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Vis˜o Geral
a
Camada de Interface
Respons´vel pela comunica¸˜o entre cliente e reposit´rio
a ca o
(Camada de Gerenciamento)
Recebe requisi¸˜es HTTP do cliente, formata-as e as envia `
co a
Camada de Gerenciamento
SSH para comunica¸˜o com a Camada de Gerenciamento
ca
Rsync para recupera¸˜o de objetos digitais
ca
WEB Service pode estar em m´quina dedicada, sem
a
reposit´rio para armazenamento de r´plicas
o e
university-logo
Roberto Beraldo Chaiben Camada de Interface
7. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Vis˜o Geral
a
Camada de Interface
Composta por um WEB Service
Servidor WEB incorporado ` aplica¸˜o
a ca
N˜o necessita de Apache, Tomcat ou outro servidor WEB
a
pr´-instalado
e
Padr˜o SOAP para comunica¸˜o com cliente
a ca
Opera¸˜es
co
Inser¸˜o de objeto digital (insert)
ca
Consulta por objeto digital (check)
Exibe os estados das r´plicas de um objeto digital
e
Recupera¸˜o de objeto digital (retrieve)
ca
university-logo
Roberto Beraldo Chaiben Camada de Interface
8. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Arquitetura
insert()
retrieve()
check()
Gerenciamento
Aplicação
Camada de
requisição SOAP requisição (via SSH)
Web
Service
resposta SOAP
resposta (via RSYNC)
university-logo
Roberto Beraldo Chaiben Camada de Interface
9. Introdu¸˜o
ca
Motiva¸˜o
ca
Requisitos do software desenvolvido
Vis˜o Geral
a
Implementa¸˜o
ca
Arquitetura
Configura¸˜o
ca
Defini¸˜es
co
Inicializa¸˜o do Servi¸os
ca c
Defini¸oes
c˜
SOAP
Simple Object Access Protocol - Protocolo Simples de Acesso
a Objetos
Padr˜o de comunica¸˜o entre cliente e servidor WEB Service
a ca
Baseada em XML
Chamada Remota de Procedimento (RPC - Remote Procedure
Call)
WSDL
Web Services Description Language - Linguagem de Descri¸˜o
ca
de WEB Service
Baseada em XML
Descreve as fun¸˜es dispon´
co ıveis no WEB Service
university-logo
Roberto Beraldo Chaiben Camada de Interface
10. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
11. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Requisitos
Requisitos do WEB Service
Java Runtime Environment 1.6 (JRE 6)
Rsync Daemon
SSH (Secure Shell)
Acesso HTTP
Recomenda-se o registro de um DNS para facilitar o acesso ao(s)
WEB Service(s)
university-logo
Roberto Beraldo Chaiben Camada de Interface
12. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
13. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Implementa¸˜o
ca
Implementa¸˜o do WEB Service
ca
Linguagem Java
Robusta para aplica¸˜es WEB
co
Multiplataforma
Diversas op¸˜es de Servidores WEB para incorpora¸˜o
co ca
Linguagem altamente difundida e utilizada
Servidor WEB Jetty1 Incorporado ` aplica¸˜o
a ca
N˜o necessita de Apache, Tomcat ou outro Servidor WEB
a
pr´-instalado
e
university-logo
1
http://jetty.codehaus.org/jetty/
Roberto Beraldo Chaiben Camada de Interface
14. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
API de Preserva¸˜o
ca
Opera¸˜o de inser¸˜o de objeto digital
ca ca
boolean insert( String fileKey, byte[] fileData, double reliability
)
Opera¸˜o de consulta por objeto digital
ca
String check( String fileKey )
Opera¸˜o de recupera¸˜o de objeto digital
ca ca
byte[] retrieve( String fileKey )
university-logo
Roberto Beraldo Chaiben Camada de Interface
15. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Opera¸˜o de Inser¸˜o
ca ca
boolean insert( String fileKey, byte[] fileData, double reliability )
Retorno: True em caso de sucesso; False caso contr´rio
a
Parˆmetros:
a
fileKey: Hash MD5 do conte´do do arquivo a ser inserido
u
fileData: Conte´do do arquivo codificado em Base 64
u
reliability: Confiabilidade desejada para o objeto (valor entre 0
e 1)
Apenas uma solicita¸˜o de inser¸˜o. N˜o garante
ca ca a
preserva¸˜o imediata
ca
university-logo
Roberto Beraldo Chaiben Camada de Interface
16. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Opera¸˜o de Consulta
ca
String check( String fileKey )
Retorno: Retorna os dados da consulta no formato JSON
Reposit´rios em que as r´plicas se encontram
o e
Confiabilidade de cada reposit´rio on h´ r´plicas
o a e
Data da ultima auditoria
´
Data da pr´xima auditoria
o
Comando Rsync a ser utilizado para recuperar a r´lica
e
Confiabilidade total do objeto preservado
Parˆmetros:
a
fileKey: Hash do conte´do do objeto a ser consultado
u
university-logo
Roberto Beraldo Chaiben Camada de Interface
17. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Exemplo de retorno da opera¸˜o check
ca
university-logo
Roberto Beraldo Chaiben Camada de Interface
18. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Opera¸˜o de Recupera¸˜o
ca ca
byte[] retrieve( String fileKey )
Retorno: Conte´do do arquivo, codificado em Base 64
u
Parˆmetros:
a
fileKey: Hash do conte´do do objeto a ser recuperado
u
university-logo
Roberto Beraldo Chaiben Camada de Interface
19. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Fluxo de Opera¸oes
c˜
Inser¸˜o
ca
WEB Service recebe arquivo do cliente e salva-o no diret´rio
o
incoming
Verifica integridade do arquivo (MD5)
Apesar de o TCP utilizar CRC, isso pode n˜o ser suficiente
a
para garantir a integridade de arquivos grandes
Faz SSH e notifica um reposit´rio, que copia o arquivo do
o
WEB Service via rsync
university-logo
Roberto Beraldo Chaiben Camada de Interface
20. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Fluxo de Opera¸oes
c˜
Consulta
WEB Service recebe a chave do objeto a ser consultado
Faz SSH e notifica um reposit´rio, solicitando uma opera¸˜o
o ca
de consulta
WEB Service recebe a sa´ do reposit´rio e monta a string
ıda o
JSON a ser enviada ao cliente
university-logo
Roberto Beraldo Chaiben Camada de Interface
21. Introdu¸˜o
ca
Requisitos do software desenvolvido
API de Preserva¸˜o
ca
Implementa¸˜o
ca
Fluxo de Opera¸˜es
co
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Fluxo de Opera¸oes
c˜
Recupera¸˜o
ca
WEB Service recebe a chave do objeto a ser recuperado
Faz SSH e notifica um reposit´rio, solicitando uma opera¸˜o
o ca
de recupera¸˜o
ca
WEB Service faz rsync para copiar o objeto do reposit´rio,
o
que ´ salvo no diret´rio outgoing
e o
Transfere ao cliente o conte´do do arquivo, codificado em
u
Base 64
university-logo
Roberto Beraldo Chaiben Camada de Interface
22. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
23. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Configura¸oes do WEB Service
c˜
Arquivo de configura¸˜o: webservice/ws config file
ca
Arquivo de configura¸˜o compartilhado por Shell Script e Java
ca
N˜o utilizar vari´veis nativas do Shell ou do Java
a a
Arquivo webservice/knownhosts.txt
Arquivo texto com a lista de hosts conhecidos pelo WEB
Service, nos quais far´ SSH para a Camada de Gerenciamento
a
Exemplo:
usuario1@host1
usuario2@host2
usuario3@host3
Recomenda-se a cria¸˜o de um usu´rio espec´
ca a ıfico para
executar o WEB Service
university-logo
Roberto Beraldo Chaiben Camada de Interface
24. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
1 Introdu¸˜o
ca
2 Requisitos do software desenvolvido
3 Implementa¸˜o
ca
4 Configura¸˜o
ca
5 Inicializa¸˜o do Servi¸os
ca c
university-logo
Roberto Beraldo Chaiben Camada de Interface
25. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
Inicializa¸˜o do Servi¸os
ca c
WEB Service
Via script inicia servicos.sh:
inicia servicos.sh webservice start
Via linha de comando
java -jar webservice/servidor/dist/Webservice-DP.jar [porta] &
Rsync Daemon
Via script inicia servicos.sh:
inicia servicos.sh rsync start
Via linha de comando
rsync --daemon --config=rsynd.conf --port=porta
Recomenda-se configurar a inicializa¸˜o dos servi¸os na
ca c
inicializa¸˜o do Sistema Operacional (init.d, em Linux)
ca
university-logo
Roberto Beraldo Chaiben Camada de Interface
26. Introdu¸˜o
ca
Requisitos do software desenvolvido
Implementa¸˜o
ca
Configura¸˜o
ca
Inicializa¸˜o do Servi¸os
ca c
D´vidas? Coment´rios? Sugest˜es?
u a o
university-logo
Roberto Beraldo Chaiben Camada de Interface