Alfresco Master Class Implementation Best Practices SPANISH - Presentation Transcript
Toni
de
la
Fuente
1
¡Twi0ea
durante
la
sesión!
• Tu
recomendación
favorita
• La
recomendación
que
implementarás
en
tu
proyecto
• Recomendaciones
que
hemos
olvidado
Usa
la
eAqueta
#alfrescobestprac-ces
¡Anímate!
Se
darán
premios
al
final
de
la
sesión.
#alfrescobestprac-ces
2
Introducción
• IdenAfica
cada
caso
de
uso
• Matriz
de
caracterísAcas
de
Alfresco
Buenas
prácAcas
• Arquitectura
• Desarrollo
• Mantenimiento
Preguntas
#alfrescobestprac-ces
3
Esta
charla
contempla
algunas
recomendaciones,
pero...
• Os
animamos
a
ampliar
lo
que
tratamos
aquí
y
comparArlo
con
los
demás.
Se
abordarán
algunos
de
los
contenidos
que
teníamos
preparados,
pero…
• En
breve
publicaremos
una
versión
ampliada
Credit:
finishing-‐school
con
todos
los
contenidos.
Básicamente
veremos:
• Qué
formas
hay
de
usar
Alfresco
• CaracterísAcas
más
relevantes
de
Alfresco
• Cómo
implementar
esas
buenas
prácAcas
#alfrescobestprac-ces
4
Antes
de
comenzar,
vamos
a
responder
a
la
pregunta:
¿Qué
es
“ges-ón
de
contenidos”?
#alfrescobestprac-ces
5
Respuesta:
¡Casi
nada!
#alfrescobestprac-ces
6
No
hay
una
definición
genérica
de
gesAón
de
contenidos.
h0p://www.projectcartoon.com
• Y
no
hay
un
único
producto
para
cada
caso.
Hay
que
idenAficar
el
Apo
de
uso
y
en
base
a
esas
necesidades,
diseñar
la
mejor
solución.
#alfrescobestprac-ces
7
GesAón
documental:
GesAón
de
contenidos
• “Vanilla”
DM
Web:
• Colaboración
• Web
corporaAva
• GesAón
de
registros
• Intranet
/
Extranet
• Scanning
/
Imaging
/
• eCommerce
Site
OCR
• Micro-‐sites
• GesAón
de
contenidos
• UGC
/
Community
Sites
mulAmedia.
(User
Generated
Content)
#alfrescobestprac-ces
8
Alfresco
ofrece
un
conjunto
de
caracterísAcas,
aunque
no
todas
son
relevantes,
dependen
del
caso
de
uso.
#alfrescobestprac-ces
9
WCM
DM
Repository
AuthenAcaAon
AuthorisaAon
Script
Engine
Repository
Workflow
Rules
/
AcAons
TransformaAon
Deployment
Web
Scripts
Virtual
File
High
Content
Records
XML
Modeling
Servers
Availability
Modeling
Management
SOAP
JCR
CMIS
Search
/
Query
Share
UI
Sharepoint
Surf
Explorer
UI
SMTP
/
IMAP
Office
Plugin
Protocol
*
Nota:
Este
diagrama
no
es
exhausAvo.
#alfrescobestprac-ces
10
WCM
DM
Repository
AuthenAcaAon
AuthorisaAon
Script
Engine
Repository
Workflow
Rules
/
AcAons
TransformaAon
Deployment
Web
Scripts
Virtual
File
High
Content
Records
XML
Modeling
Servers
Availability
Modeling
Management
SOAP
JCR
CMIS
Search
/
Query
Share
UI
Sharepoint
Surf
Explorer
UI
SMTP
/
IMAP
Office
Plugin
Protocol
#alfrescobestprac-ces
11
WCM
DM
Repository
AuthenAcaAon
AuthorisaAon
Script
Engine
Repository
Workflow
Rules
/
AcAons
TransformaAon
Deployment
Web
Scripts
Virtual
File
High
Content
Records
XML
Modeling
Servers
Availability
Modeling
Management
SOAP
JCR
CMIS
Search
/
Query
Share
UI
Sharepoint
Surf
Explorer
UI
SMTP
/
IMAP
Office
Plugin
Protocol
#alfrescobestprac-ces
12
WCM
DM
Repository
AuthenAcaAon
AuthorisaAon
Script
Engine
Repository
Workflow
Rules
/
AcAons
TransformaAon
Deployment
Web
Scripts
Virtual
File
High
Content
Records
XML
Modeling
Servers
Availability
Modeling
Management
SOAP
JCR
CMIS
Search
/
Query
Share
UI
Sharepoint
Surf
Explorer
UI
SMTP
/
IMAP
Office
Plugin
Protocol
#alfrescobestprac-ces
13
WCM
DM
Repository
AuthenAcaAon
AuthorisaAon
Script
Engine
Repository
Workflow
Rules
/
AcAons
TransformaAon
Deployment
Web
Scripts
Virtual
File
High
Content
Records
XML
Modeling
Servers
Availability
Modeling
Management
SOAP
JCR
CMIS
Search
/
Query
Share
UI
Sharepoint
Surf
Explorer
UI
SMTP
/
IMAP
Office
Plugin
Protocol
#alfrescobestprac-ces
14
¿Has
idenAficado
tu
caso
de
uso?
¿Se
aproxima
a
algún
caso
visto
con
Alfresco?
¿Qué
caracterísAcas
de
Alfresco
puedes
usar?
¿Qué
partes
no
puedes
hacer
con
Alfresco?
• ¿Cuánto
Aenes
que
personalizar
Alfresco?
• ¿Qué
componentes
de
terceros
deberías
añadir?
En
muchas
ocasiones
Alfresco
es
un
componente
más
• ¿Cómo
debería
ser
la
solución
integrada?
• ¿Merece
la
pena
la
complejidad
añadida?
Credit:
Craig
Rodway
#alfrescobestprac-ces
15
Credit:
Phil
Romans
#alfrescobestprac-ces
16
Implementa
tu
solución
respetando
la
matriz
de
compaAbilidad
h0p://www.alfresco.com/services/support/
stacks/
es
tu
mejor
amigo!!
Credit:
bazril
#alfrescobestprac-ces
17
LDAP
• Instala
un
LDAP
browser
• Sync:
cuidado
con
los
directorios
grandes
• Primero
asegúrate
que
tu
LDAP
funciona,
luego
configura
la
autenAcación
con
Alfresco
• Recuerda
que
puedes
usar
varios
sistemas
de
autenAcación
encadenados
Credit:
just.luc
AcAveDirectory
• Usa
el
soporte
NTLM
naAvo
de
Alfresco.
NTLM
en
lugar
de
integración
LDAP
xpica.
No
olvides
echar
un
vistazo
a
la
matriz
de
autenAcación
en
la
wiki:
• h0p://wiki.alfresco.com/wiki/
Alfresco_AuthenAcaAon_Subsystems
#alfrescobestprac-ces
18
¿Necesitas
un
cluster?
La
Alta
Disponibilidad
Aene
un
precio:
Duplica
(como
mínimo)
la
suscripción
de
mantenimiento
Incremento
del
coste
de
hardware
Infraestructura
más
compleja
Otras
consideraciones
¿Cual
es
el
SLA
mínimo
exigido?
¿Tiene
senAdo
añadir
más
máquinas
o
más
CPU?
¿Has
pensado
en
cachear?
Un
cluster
no
Aene
por
que
ser
una
solución
efecAva
de
recuperación
de
desastres
#alfrescobestprac-ces
19
La
Base
de
Datos
y
el
almacenamiento
deben
estar
“cerca”
de
Alfresco
(misma
subred)
Discos
con
capacidad
de
escritura
específica
cuando
hay
corte
de
alimentación
(buffer)
Credit:
daddo83
Si
piensas
usar
Alfresco
en
cluster,
piensa
en
almacenamiento
comparAdo:
• Los
repositorios
replicados
son
complejos
de
mantener
y
di{cil
de
jusAficar
Considera
usar
una
SAN
para
el
repositorio:
• Simplifica
su
gesAón
(pe.
backup,
crecimiento
bajo
demanda)
• Mejoras
en
rendimiento
por
fibre
channel,
Aered
storage,
cachés
Usar
un
sistema
de
almacenamiento
redundante
(pe.
RAID)
#alfrescobestprac-ces
20
El
Lucene
de
Alfresco
es
“de
Alfresco”.
No
lo
uses
para
indexar
contenido
que
no
es
de
Alfresco.
• En
su
lugar
puedes
usar:
Lucene/Solr,
GSA,
Endeca,
etc.
Los
índices
deben
estar
en
discos
locales
rápidos
y
no
comparAdos.
• Considera
la
posibilidad
de
poner
los
índices
en
un
disco
dedicado.
Configuración
• Evita
usar
“stored=true”
• h0p://wiki.alfresco.com/wiki/Full-‐Text_Search_ConfiguraAon
• Evita
las
reindexaciones
completas
(full
re-‐indexes)
• ¿Funcionan
los
backup
de
los
índices?
#alfrescobestprac-ces
21
CIFS
es
mejor
en
una
LAN,
en
WAN
puede
ser
problemáAco/lento.
Por
defecto
usando
FTP
y
WebDAV
las
contraseñas
viajan
en
claro.
El
Virtual
File
Server
no
es
la
mejor
vía
para
realizar
cargas
masivas
de
contenidos
• Hay
varias
opciones
que
permiten
una
importación
masiva
para
cada
caso:
• pe.
TSG
OpenMigrate,
Bulk
Filesystem
Import
Tool
(h0p://
code.google.com/p/alfresco-‐bulk-‐filesystem-‐import/)
#alfrescobestprac-ces
22
Alfresco
incorpora
WCM
de
forma
independiente.
Dos
Apos
de
despliegues
vía
agentes:
• File
System
Receiver
• Alfresco
Server
Receiver
Evitar
entornos
con
poco
ancho
de
banda
/
redes
de
alta
latencia
Usar
auto
deploy
• Una
vez
llegan
los
contenidos
al
Staging,
pueden
ser
desplegados
• A
parAr
de
la
versión
3
Configura/planifica
tus
ASR
y
FSR
al
principio
#alfrescobestprac-ces
23
#alfrescobestprac-ces
#alfrescobestprac-ces
25
Credit:
xkcd.com
#alfrescobestprac-ces
26
No
tocar
el
core,
usar
el
mecanismo
de
extensiones
• Si
Aenes
que
modificar
el
core
por
un
fallo,
abre
un
Acket
(Jira).
Usar
dos
directorios
extension
• Uno
para
las
extensiones
propias
Credit:
Sea
Turtle
del
servidor
(LDAP,
file
server
properAes)
-‐
shared
• Uno
para
las
extensiones
propias
del
cliente
(Content
model,
workflows,
web
client
config,
context
files)
–
webapp
-‐>
AMP
#alfrescobestprac-ces
27
No
cambies
el
modelo
por
defecto
Considera
crear
un
Apo
raíz
(contenido)
Se
conservador,
añade
sólo
lo
que
necesites
Prepárate
para
inicializar
el
repositorio,
varias
veces
Piensa
en
las
ventajas
de
crear
aspectos
Ten
en
cuenta
los
Apos
“folder”
y
úsalos
Tipos/aspectos
sin
propiedades
están
permiAdos
y
pueden
ser
úAles
#alfrescobestprac-ces
28
Usa
tus
propios
namespaces
y
múlAples
archivos
para
los
modelos
• Usa
un
namespace/modelo
específico
también
para
los
workflows.
• No
uses
“myModel”
o
“customModel”
Implementa
una
clase
Java
que
contenga
constantes
para
representar
tus
Apos,
aspectos,
propiedades
y
asociaciones.
Objetos
sin
contenido
son
válidos
• Pero
pueden
hacer
que
a
Alf.
Explorer
no
“le
gusten”
#alfrescobestprac-ces
29
Ten
en
cuenta
la
herencia,
usa
ACL
para
mantener
más
fácilmente
teniendo
un
diseño
de
carpetas
bien
planificado.
En
ocasiones
organizar
las
carpetas
en
base
a
la
estructura
de
la
empresa
puede
tener
senAdo
(divisiones
/
departamentos
/
unidades
de
negocio
/
grupos
de
trabajo)
Ten
en
cuenta
el
espacio
público
comparAdo
para
contenido
de
sólo
lectura.
Espacios
inteligentes
(Drop
zones
/
hot
boxes),
con
reglas,
etc.
#alfrescobestprac-ces
31
No
personalices
demasiado
el
Explorer
Mejor
usar
Dashlets
con
Web
Script
y
vistas
personalizadas
en
lugar
de
crear
más
código
JSF
Si
los
requisitos
se
alejan
de
lo
que
Credit:
gobucks2
hace
el
Explorer
posiblemente
no
necesites
usarlo
como
punto
de
parAda
• Si
lo
necesitas
limítate
a
Acciones,
Diálogos
y
Asistentes.
#alfrescobestprac-ces
34
Rendimiento
• Reducir
número
de
campos
• Usar
campos
normales
(pe.
text
area
vs
WYSIWYG)
• Minimiza
los
includes
(Web
Forms)
• Minimiza
estructuras
anidadas
(Web
Forms)
Presentación
• Poner
campos
obligatorios
primero
#alfrescobestprac-ces
35
Asigna
usuarios
a
grupos
y
grupos
a
roles
Crea
tus
propios
roles
si
no
te
sirven
los
que
hay
por
defecto
Recuerda
que
sólo
los
Credit:
Roo
Reynolds
admins
pueden
editar
los
grupos.
No
hagas
ninguna
aplicación
para
gesAonar
grupos.
#alfrescobestprac-ces
36
Recuerda
que
los
permisos
en
Web
Projects
no
están
soportados
(si
roles),
por
debajo
del
nivel
del
Web
Project.
AlternaAvas
• Usa
una
tarea
de
workflow
para
validar
acciones
• Use
Web
Projects
independientes
• Un
interfaz
personalizado
puede
tener
sus
propios
permisos
• Cuidado
con
usar
aspectos
como
permisos.
Los
aspectos
son
versionables.
#alfrescobestprac-ces
37
JBPM
es
extensible
y
muy
úAl!
Pero…
Usa
jBPM
GPD
para
su
desarrollo
Usa
un
directorio
para
cada
proceso,
y
llámalo
process-‐definiAon.xml
JavaScript
para
pequeñas
tareas,
Java
para
tareas
más
importantes.
#alfrescobestprac-ces
38
El
uso
de
los
patrones
de
servicios
de
Alfresco
implica
• Publicar
los
servicios
como
objetos
JS
en
el
nivel
raíz
de
Alfresco
• Implementar
test
unitarios
para
cada
servicio
Usar
las
funcionalidades
y
acciones
de
Alfresco
sin
restricciones
Buscar
los
fuentes
de
los
test
JUnit
para
usarlos
como
ejemplos
del
uso
de
la
API
• PlanAllas
de
presentación
por
defecto,
JavaScript
y
Workflows
son
también
buenos
ejemplos
Ejecutar
el
código
de
Alfresco
paso
a
paso
mediante
alguna
herramienta
de
depuración
#alfrescobestprac-ces
39
Java
Script
+
Free
Marker
• Evita
cálculos
innecesarios
• AcAva
el
modo
debug
de
JS
en
el
desarrollo
(log4j)
Sintaxis:
• h0p://freemarker.org
h0p://www.flickr.com/photos/90982314@N00/1570533869/
• h0p://www.jsonlint.com
#alfrescobestprac-ces
41
Java
+
Java
Script
+
Free
Marker
• Controlador
JS
que
usa
servicios
Java
• Una
forma
de
reuAlizar
código
• Orientados
a
generar
contenido
al
usuario
final
h0p://www.flickr.com/photos/mgstyer/3066871625/in/set-‐72157604348064829/
• Mejor
rendimiento
#alfrescobestprac-ces
42
Java
• REST
-‐>
JAVA
• Ideal
para
servicios
de
datos
• APIs
de
Alfresco
completas
• Mejores
herramientas
de
depuración
h0p://www.flickr.com/photos/mdpe•0/2667860515/
• Mejor
rendimiento
• Desarrollo
más
lento
• Llama
a
tus
clases
usando
el
método
HTTP
y
el
ID
del
script
(pe,
GetRaAng,
PostRaAng)
#alfrescobestprac-ces
43
Haz
que
tus
descriptores
sean
úAles
• Especifica
bien
al
descripción
• Declara
todos
los
argumentos
• Declara
un
formato
por
defecto
Usa
siempre
un
controlador
No
mezcles
controladores
Java
y
JavaScript
para
el
mismo
Web
Script
Usa
estructuras
Apo
paquete
para
organizar
los
Web
Scripts.
#alfrescobestprac-ces
44
Usa
el
“Run
As”
• Más
seguro
que
ejecutarlo
como
admin
• ÚAl
cuando
una
aplicación
cliente
Aene
que
realizar
alguna
tarea
administraAva
Dale
a
tus
Web
Scripts
un
namespace
único
(url)
Establece
los
descriptores
URL
y
JSON
como
un
equipo,
divide
y
vencerás
h0p://www.flickr.com/photos/46758972@N00/2986699608/
• Un
equipo
para
la
capa
de
repositorio
y
otro
para
la
capa
de
presentación.
#alfrescobestprac-ces
45
Usa
Java
para
operaciones
complejas,
no
JS
Con
E4X
es
fácil
pero
más
lento
Cachea
cuando
puedas,
te
ayudará
• Object
caches
• OS
Cache
• EH
Cache
• HTTP
accelerator
• Varnish
h0p://www.flickr.com/photos/31758798@N04/3557344075/
#alfrescobestprac-ces
46
Usa
curl
para
probarlos,
especialmente
PUTs,
DELETEs
y
POSTs.
Usa
plugins
de
Firefox
• Tamper
Data
h0p://www.flickr.com/photos/oskay/2672864543/in/set-‐72157606197307681/
• Firebug
Pruebas
Unitarias
• Extensiones
Alfresco
JUnit
• Selenium
#alfrescobestprac-ces
47
Agrupa
los
Spring
beans
en
múlAples
ficheros
context.
No
llames
los
Spring
beans
“extension.*”
Usa
siempre
los
beans
“públicos”
en
mayúsculas
(NodeService
vs.
nodeService)
Credit:
96dpi
#alfrescobestprac-ces
48
Necesitas
al
menos
dos
entornos
(Prod
y
Test)
Siempre
es
mejor
hacer
AMPs
para
una
mejora
o
un
plugin,
y
luego
se
añade
al
WAR
(mmt)
Considera
usar
el
plug-‐in
de
Maven
(ver
Forge
de
Alfresco)
Despliega
modelos,
web
scripts
y
workflows
en
el
sistema
de
archivos
(dentro
de
la
aplicación)
• Desplegar
en
caliente
es
posible
pero
úsalo
con
precaución
#alfrescobestprac-ces
49
Piensa
si
usar
SURF
Aene
senAdo
• Ideal
para
hacer
clientes
de
Alfresco
• Sigue
madurando
Web
Studio
Credit:
Michael
Dawes
• Herramienta
para
crear
siAos
basados
en
Surf
• No
está
incorporada
en
la
versión
Enterprise,
usar
con
precaución.
Alfresco
Share
ApplicaAon
• Será
más
fácil
de
configurar
con
la
incorporación
del
“form
service”
• Usa
herramientas
que
no
incorpora
Surf
(YUI
Library)
• Necesitarás
escribir
tus
propios
componentes
y
modificar
ficheros
de
Alfresco
y
workflows
#alfrescobestprac-ces
50
#alfrescobestprac-ces
#alfrescobestprac-ces
51
Credit:
wili
hybrid
#alfrescobestprac-ces
52
Copia
de
seguridad
1. Base
de
datos
2. Contentstore
(Repositorio)
3. Índices
Restauración
• Has
hecho
copia
de
seguridad
de
los
índices,
¿no?
• index.recovery.model=AUTO
Hay
proyectos
libres
que
permiten
restauración
a
nivel
de
objetos
vs.
repositorio
#alfrescobestprac-ces
53
Tuning
a
diferentes
niveles:
• Hardware
del
servidor
• Sistema
de
Archivos
• Red
• Base
de
datos
• JVM
Credit:
khai
nomore
• Mejor
64
bit
Sun
JVM
1.6
• Heap,
perm
gen
• Monitoring/profiling
tools
may
help
• Servidor
de
Aplicaciones
• Alfresco
See
h<p://wiki.alfresco.com/wiki/Repository_Hardware
#alfrescobestprac-ces
54
Cold
standby
Warm
standby
• Réplica
• BBDD
• Sistema
de
Ficheros
Hot
standby
• Cluster
AcAvo/AcAvo
Credit:
CushingLibrary
• JGroups
(3.1)
Considera
off-‐site
vs
on-‐site
/
near-‐site
backups
• Clustering
es
sólo
apropiado
para
on-‐site
#alfrescobestprac-ces
55
Fácil
en
general
pero:
1. Compara
los
archivos
de
configuración
personalizados
con
archivos
actualizados
y
haz
los
cambios
de
forma
manual
2. Recompila
las
personalizaciones
con
la
nueva
SDK
3. Vuelca
toda
la
configuración
y
personalizaciones
en
un
servidor
de
Credit:
xrrr
desarrollo
4. Prueba,
prueba,
prueba
Sigue
los
saltos
entre
versiones
soportados:
• h0p://wiki.alfresco.com/wiki/General_Upgrade_Process#Upgrade_Paths
#alfrescobestprac-ces
56
Ojo
con
la
matriz
de
compaAbilidad
y
las
versiones
• Actualiza
por
componentes
y
prueba.
pe:
1. Actualiza
Alfresco
2.2
-‐>
3.1
2. Prueba
3. Actualiza
JVM
1.5
-‐>
1.6
Credit:
balakov
4. Prueba
5. Actualiza
MySQL
5.0
-‐>
5.1
6. Prueba
• Asegúrate
que
cada
paso
está
soportado
en
la
matriz
de
compaAbilidad
#alfrescobestprac-ces
57
Master Class impartida por Toni de la Fuente en el more
Master Class impartida por Toni de la Fuente en el Alfresco Meetup de Madrid el 20 de Octubre de 2009.
Buenas prácticas en la implementación de Alfresco: Arquitectura, Desarrollo y Mantenimiento. less
0 comments
Post a comment