lunes, 16 de diciembre de 2019

Arquitectura de AEM

Para entender la arquitectura de AEM debemos primero definir que es Granite:
Granite es un conjunto de tecnologías de Adobe con la que esta construida AEM, es comúnmente llamada "Open web stack", aunque Granite tenga la palabra open, esto no quiere decir que sea un proyecto open source,  al ser un proyecto compuesto de diferentes tecnologías Granite es solo abierto para desarrollo.




















Así pues, podemos definir a Granite como una plataforma modular que ofrece ciertas funcionalidades dentro de las cuales podemos destacar las siguientes:
  • Granite Ofrece un Application Launcher
  • Esta compuesto por el framework OSGi, el cual nos provee un conjunto de servicios para el desarrollo de nuestra aplicaciones en AEM
  • Hace uso de Java Content Repository o JCR a traves de Apache jackrabbit oak
  • Y del framework Apache Sling  para el mapeo de las peticiones http con los contenidos JCR 
La definición de Granite puede llegar a ser confusa ya que muchas fuentes solamente explican el framework OSGi como base de AEM, pero como podemos observar Granite es el compendio de todas las tecnologías que AEM usa.

La siguiente imagen nos puede ilustrar en mas detalle lo que es Granite, donde podemos ver que Granite es básicamente todas las tecnologías core en las que AEM esta basada:





















(Imagen tomada del curso Develop Websites and Components in Adobe Experience Manager (Tyler Mynard):https://app.pluralsight.com/library/courses/develop-websites-components-aem/table-of-contents )

Una vez que tenemos claro lo que es Granite, podemos seguir con la definición de la arquitectura de AEM y las tecnologías en las que esta basada.


(Imagen tomada del curso Develop Websites and Components in Adobe Experience Manager (Tyler Mynard):https://app.pluralsight.com/library/courses/develop-websites-components-aem/table-of-contents )

AEM usa OSGi framework de manera transversal, el cual es un conjunto de componentes Java dinámicos llamados Bundles, los cuales pueden ser  independientemente instalados, desinstalados, inicializados y detenidos en tiempo de ejecución  sin reiniciar o incluso sin detener la aplicación.

JCR y Apache Sling son los otros importantes módulos en los cuales esta basado AEM. JCR o Java Content Repository es una base de datos que soporte almacenamiento estructurado y no estructurado de datos, AEM usa Apache jackrabbit oak como implementación de la especificación JCR para almacenar todo su contenido. Por otro lado para la resolución de las peticiones http AEM usa Apache Sling el cual como se mencionó anteriormente es un framework web, que en terminos generales mapea cada peticion http con un nodo JCR en AEM.

El proceso de resolución de Sling se escapa del ámbito de este post, y para mantener este post corto, en próximas entradas explicaremos los pasos que Sling lleva a cabo para la resolución, mapeo y renderizado de una petición http.

Lecturas recomendadas:
  1. ¿Que es AEM?
  2. ¿Que es un Componente en AEM?
  3. ¿Que es un Template en AEM?
  4. ¿Cómo Sling resuelve las peticiones Http?



No hay comentarios.:

Publicar un comentario