dotCMS: un Web CMS Open Source de perfil empresarial
Una revisión del estado actual del proyecto con énfasis en sus capacidades para escalar a gran cantidad de usuarios soportando balanceo de carga entre servidores. Se muestra también qué cambios tendrá la versión 2.0 aún en desarrollo (30 min)
Jorge Urdaneta, Licenciado en computación con 6 años de experiencia. Uno de los nuevos desarrolladores de dotCMS involucrado en solución de bugs e implementación de mejoras al producto. @jorgeu
dotCMS: un Web CMS Open Source de perfil empresarial
1. dotCMS
un Web CMS Open Source de perfil empresarial
Jorge Urdaneta
6to Refresh Maracaibo
2. ¿Qué es un CMS?
Creación/Edición colaborativa de contenidos
Definición de permisos
Facilita almacenamiento y recuperación de
datos
En el caso Web
Facilita edición páginas Web
Controla la visualización de las páginas
Menús, Categorías, Tags, Búsquedas, etc.
3. Proyecto dotCMS
Inicia en 2005 como un fork de Liferay
Plataforma Java
Bases de datos
Postgres
MySQL
SQL Server
Oracle
Backend adminstración vía Web
Múltiples dominios
6. Múltiples dominios
Una instalación puede manejar varios dominios
Misma(s) IP(s) compartida por dichos dominios
HTTP 1.1 hace el resto ;)
Todos los dominios en el mismo backend
8. Template (Plantillas)
Código HTML usado como base para páginas
Web
Utilizan contenedores para indicar dónde
estará el contenido
Al crear una página Web se debe elegir una
plantilla
9. Containers
(Contenedores)
Definen cómo se despliega el contenido
Indican cuántos contenidos máximo se puede
agregar
Ejemplo. Si queremos una lista ordenada
Inicia con <ol> en pre-loop
Contenido entre <li> → <li>$!{BODY}</li>
Finaliza con </ol> en post-loop
10. Content (contenido)
Unidad de datos principal de dotCMS
Estructurados: se define una estructura con los
campos que puede almacenar
Indizados: su recuperación es rápida (lucene)
Consultas Lucene: = < > not
Ejemplo: contenido evento
event.date > 20111101 AND event.active=1
22. Versiones dotCMS
Community: CMS completo y funcional código
abierto
Enterprise: Community + extensiones
propietarias
Soporte DBs: Oracle & SQL Server
Editor de imágenes en línea
Editor de Formularios integrado
Autenticación LDAP & Active Directory
Host Dashboard (estadísticas visitas, clicks, etc)
23. Versiones dotCMS
Otras extensiones propietarias
Soporte/asistencia servidores de aplicaciones
JBoss, Weblogic, Glassfish, Websphere
Multinode Clustering
Caché de páginas
Ver actividades de usuarios
Con la adquisición Enterprise se incluye soporte
profesional 24/7
(Hay más)
24. Versiones dotCMS
1.7 – fuera de soporte. Aún con instalaciones
funcionando por ahí en la internet
1.9 – Estable (última 1.9.4) y soportada
2.0 – En desarrollo. Posible primer release
enero 2012
25. Infraestructura
Motor de plantillas Velocity
http://velocity.apache.org/
Integrado en plantillas, containers y páginas HTML
Muy sencillo de usar (manual de 2 páginas)
dotCMS expone en éstas objetos (view tools) que
permiten acceder a datos de la página, consultar
contenidos, usuarios, estructuras, páginas,
contenedores, carpetas, tags, configuraciones, etc
26. Infraestructura
JBoss Cache
http://www.jboss.org/jbosscache
Permite almacenar objetos en memoria RAM para
evitar consultarlos de la base de datos si se le
necesita de nuevo
dotCMS maneja el ”instance size” (small, medium,
large) según la memoria RAM disponible para
definir cuánta memoria usar para cache
Casi todos los objetos de la BD usan cache
27. Infraestructura
Apache Lucene
http://lucene.apache.org
El motor de indización y búsqueda más usado de la
industria
Los contenidos (Content) son indizados con Lucene
para acelerar las búsquedas
En dotCMS los contenidos se consultan usando
querys Lucene directamente
Las consultas se les añade los permisos del
usuario
28. Infraestructura
ElasticSearch
http://www.elasticsearch.org/
Servidor de búsquedas sobre Lucene
Ofrece API Rest y permite tener los índices en
servidores diferentes a donde se ejecuta dotCMS
Maneja la distribución del índice. No es necesario
indizar en cada nodo (importante)
Integrado en dotCMS 2.0 (aún en desarrollo)