Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.
Comentarios: Actualización automática de enlaces Jira/Confluence: ws001 -> nuevos dominios

Image Added

Subdirección de las Tecnologías de la Información y Comunicaciones

Área de Gobernanza y Calidad

Table Excerpt Include
isFirstTimeEntertrue
v2
nameLOGO_JUNTA
merge-tablestrue
page

ARQ:

Recursos
transposenever
typepage

Versión

Table Excerpt Include
isFirstTimeEntertrue
statictrue
copytabletrue
v2
nameVERSION_ARQ_NUEVO_PROYECTO_MICROSERVICIODESARROLLO_MICROFRONTED
merge-tablestrue
pageARQ:Arq-tec-ref-toc
transposenever
typepage

Tabla de Contenido


Tabla de contenidos
maxLevel5
indent20px
exclude.*(Versión Actual|Cumplimiento Normativo|Histórico de cambios|Subdirección de las Tecnologías de la Información y Comunicaciones|Área de Gobernanza y Calidad|Tabla de Contenido)

Cumplimiento Normativo


Advertencia

Las normas expuestas son de obligado cumplimiento. La STIC podrá estudiar los casos excepcionales los cuales serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad según correspondencia y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.

La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.

En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.

Contacto Arquitectura: l-arquitectura.stic@juntadeandalucia.es

Histórico de cambios


Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución. Ordenándose de mas recientes a menos recientes, prestando especial cuidado a las cabeceras de la tablas dónde se indican las fechas de entrada en vigor y versión.

Expandir
titleHistórico de cambios
VersiónPre-release AdopciónActivaRetiroAlcance
v01r00v01r01

 



Definición de los mecanismos y requisitos de un host para la integración con los Microfrontend.

1. Introducción

1.1. Ámbito de  aplicación.

Info
titleÁmbito de aplicación obligatorio (*)

Esta arquitectura de referencia será de aplicación obligatoria(*) en los siguientes casos:

  • Desarrollo de nuevos sistemas de información corporativos.
  • Refactorización de sistemas de información existentes.
  • Evolución de sistemas de información que requieran la implementación de nuevos procesos o funcionalidades y que requiera de desarrollo en funciones "core" del sistema.

Se recomienda su aplicación:

  • Sistemas comerciales que permitan una arquitectura tecnológica flexible y alineada con este modelo de referencia.
  • Desarrollos locales con previsión de escalar a sistemas corporativos.
  • Cualquier desarrollo para implementar nuevos procesos sobre los sistemas de información existentes.

Se recomienda analizar en detalle con la unidad de Arquitectura de la STIC y particularizarla para los siguientes casos:

  • Sistemas analíticos o que gestionen grandes volúmenes de datos (**).

El objetivo de este documento es documentar pormenorizadamente las responsabilidades, mecanismos y detalles para desarrollar un microfrontend


Un microfrontend es:

  • Un componente visual que está desarrollado, implementado y gestionado de forma independiente.
  • Permiten dividir una aplicación web en varias partes más pequeñas, cada una de las cuales puede tener su propio ciclo de vida, stack tecnológico, y equipo de desarrollo.
  • Es responsable de una funcionalidad de negocio o una sección específica de la interfaz de usuario y se integra con otras partes de la aplicación para formar una experiencia de usuario cohesiva.
  • La comunicación será la estándar para los componentes web

1.1. Ámbito de  aplicación.


Info
titleÁmbito de aplicación obligatorio (*)

Esta arquitectura de referencia será de aplicación obligatoria(*) en los siguientes casos:

  • Desarrollo de nuevos sistemas de información corporativos.
  • Refactorización de sistemas de información existentes.
  • Evolución de sistemas de información que requieran la implementación de nuevos procesos o funcionalidades y que requiera de desarrollo en funciones "core" del sistema.

Se recomienda su aplicación:

  • Sistemas comerciales que permitan una arquitectura tecnológica flexible y alineada con este modelo de referencia.
  • Desarrollos locales con previsión de escalar a sistemas corporativos.
  • Cualquier desarrollo para implementar nuevos procesos sobre los sistemas de información existentes.


Se recomienda analizar en detalle con la unidad de Arquitectura de la STIC y particularizarla para los siguientes casos:

  • Sistemas analíticos o que gestionen grandes volúmenes de datos (**).



1.2.

1.2.

Ciclo de vida de la arquitectura de referencia

Los cambios normativos dentro de la arquitectura de referencia seguirán el siguiente ciclo de vida:

  • Pre-release:    Periodo durante el cual la normativa  se hace publica aunque no es necesario adherirse inmediatamente.  En este periodo aún puede sufrir pequeñas correcciones.
  • Adopción :  Periodo durante el cual la normativa inicia un periodo de tiempo flexible para su aplicación de forma obligatoria al ámbito en el cual está destinado.
  • Activa:  Periodo durante el cual es obligatorio su cumplimiento para el ámbito en el cual está destinado.
  • Retiro:  Periodo durante el cual dejará de aplicarse en el ámbito al cual está destinado en sustitución de nuevas versiones o normas.


Info
(*) Cualquier propuesta que difiera de esta arquitectura deberá ser aprobada por el Área de Gobernanza de la STIC, previa solicitud y justificación en su caso.
(**) En proceso de elaboración de una arquitectura de referencia para sistemas analíticos y big data.

2. Introducción

El objetivo de este documento es documentar pormenorizadamente las responsabilidades, mecanismos y detalles para integrar un host con un MicroFrontend. 

2.1 Definiciones

  • HOST: Aplicación contenedora, que hospeda y que requiere de la funcionalidad de otro contexto. 
  • MICROFRONTEND: Encapsulación lógica de negocio, que contiene una funcionalidad concreta en su dominio y que está diseñada para incorporarse en un host. 
  • FRAGMENT:  un componente del microfrontend que representa una parte específica de una aplicación que tiene una funcionalidad concreta y es capaz de operar de forma independiente. Son una forma de dividir una aplicación en partes más pequeñas y manejables que se pueden desarrollar y mantener de forma independiente.
  • CAPABILITY:  es una funcionalidad específica que un fragmento puede proporcionar a otras partes de la aplicación. Se refiere a una interfaz o un contrato que un fragmento puede ofrecer para ser utilizado por otros fragmentos o microfrontends. Permiten la interoperabilidad entre diferentes partes de la aplicación al definir claramente qué funcionalidades están disponibles y cómo se pueden acceder

Un host es la aplicación contenedora, que tiene la necesidad de incluir una funcionalidad provista desde otro contexto funcional a través de un microfrontend.


Ancla
Tecnología
Tecnología

🤖 Tecnología

En esta sección se listarán las pautas a seguir para la creación de un microfrontend.

Las pautas se encuentran enmarcadas en los siguientes contextos:

Ancla
Tecnología_diseño
Tecnología_diseño

🎨 Diseño

Estas pautas tratan de la fase de diseño del microfrontend

🎨 Diseño

👮 Pauta

📖 Descripción

🕵️  Verificación

TEC-DIS-P1

Los diseños deben estar alineados las pautas definidas por el sistema de diseño

Flujo de validación del diseño

TEC-DIS-P2

Se debe entregar el mapa de componentes del microfrontal

Revisión de la tabla

TEC-DIS-P3Se debe entregar un wireframe con el diseño a alto nivel y las consideraciones a nivel de UXRevisión del diseño
TEC-DIS-P4Se deben entregar los HiFi con los diseños finales a implementar Revisión del HiFi
TEC-DIS-P5Los diseños deben cubrir las necesidades funcionales acordadas en los casos de uso asignados al microfrontendRevisión de los Casos de Uso

TEC-DIS-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar realizar un diseño que esté desalineado con estas pautas  deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Tecnología_Desarrollo
Tecnología_Desarrollo

👨‍💻 Desarrollo

Estas pautas tratan los requisitos tecnológicos para el desarrollo del microfrontend

👨‍💻 Desarrollo

👮 Pauta

📖 Descripción

🕵️  Verificación

TEC-DES-P1

Deben ser codificados con Typescript

Revisión de dependencias y Revisión de código

TEC-DES-P2

Deben estar basados en el estándar de Web Component

Revisión de código

TEC-DES-P3Para el desarrollo de los Web Component, se debe usar la librería de envoltura LitRevisión de dependencias y Revisión de código
TEC-DES-P4Se debe desarrollar haciendo uso de las herramientas provistas por el SAS, para el desarrollo de microfrontends

3. Instalación

Se deberá consultar la documentación del microfrontend para conocer las posibilidades de instalación que ofrecen.

Advertencia

Los bundelizados con librerías externas aumentan la garantía de que no haya conflictos entre librerías pero hace una gestión ineficiente del uso de dependencias haciendo que el peso del entregable aumente y que el código bundelizado de esa librería se descargue tantas veces como el numero de bundles donde se encuentre. 

En caso de que el host quiera proporcionar las librerías externas (bundlelización sin librerías externas, importmaps) el host deberá consultar y garantizar la compatibilidad con la versión establecida por el microfrontend

3.1 Run Time

La instalación se hace al ejecutar el host

  • Embebida: la documentación del microfrontend especificará la url de integración por entorno. Este tipo de instalación será siempre con integración Aislada
  • Script
    • full: con librerías externas
    • kernel: sin librerías externas
  • Estado
    colourGreen
    titleRECOMENDADA
    import maps
EMBEBIDA👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNPE-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorPE-02El host deberá usar el componente @sas/wc-stic-isolated-microfrontend
Revisión de dependencias y Revisión de código
PE

TEC-DES-

03El host no deberá crear un iframeRevisión de códigoSCRIPT👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNPS-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorPS-02Se deberán utilizar ÚNICAMENTE scripts del CDN del SASRevisión de códigoPS-03Si se usa la versión full del microfrontend, se debe tener cuidado por posibles conflictos con las librerías propias del hostRevisión de la consola de desarrollador del navegador que no hay errores y del funcionamiento correcto del microfrontendPS-04Si se usa la versión kernel del microfrontend, el host debe proporcionar las dependencias necesarias del microfrontendRevisión de la consola de desarrollador del navegador que no hay errores y del funcionamiento correcto del microfrontendPS-05Se debe usar importación dinámica de módulos para una optima descarga y carga de módulos dentro del hostRevisión de códigoImportmap👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNPIM-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorPIM-02Se deberán utilizar ÚNICAMENTE scripts del CDN del SASRevisión de códigoPIM-03Se deberán incluir la configuración de importmap establecida por el microfrontendRevisión de códigoPIM-04Se debe usar importación dinámica de módulos para una optima descarga y carga de módulos dentro del hostRevisión de código

 

3.2 Build Time

La instalación se hace durante la construcción del host

  • A través de un gestor de paquetes (npm, yarn, pnpm etc...).
Gestor de paquetes👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNGP-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorGP-02Se deberán utilizar ÚNICAMENTE paquetes obtenidos a través de la DML del SASConstrucción correcta a través del Jenkins del SASGP-03Se deberán incluir en la sección dependencies del package.json de la aplicaciónRevisión de código y construcción correcta a través del Jenkins del SASGP-04En caso de ser un aplicación legacy, server render, se deberá incluir un mecanismo (Maven, Ant, Nuget) en tiempo de construcción compatible con proyectos npm que descargue las dependencias de la DML y las copie a la carpeta de script de la aplicación legacy.Construcción correcta a través del Jenkins del SAS

excepción

Estado
colourYellow
titleAlerta

En caso de necesitar realizar un desarrollo que esté desalineado con estas pautas deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Tecnología_testing
Tecnología_testing

🧪 Testing 

Estas pautas tratan los requisitos tecnológicos para el testeo del microfrontend

🧪 Testing

👮 Pauta

📖 Descripción

🕵️  Verificación

TEC-TST-P1

El framework para definir los test es @openwc/testing que se basa en chai y mocha.

Revisión de dependencias y Revisión de código

TEC-TST-P2

El runner es Web Test Runner

Revisión de dependencias y Revisión de código

TEC-TST-P3El framework para mock es SinonRevisión de dependencias y Revisión de código
TEC-TST-P4La herramienta de browser headless es PlayWrightRevisión de dependencias y Revisión de código

TEC-TST-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar realizar un testeo que esté desalineado con estas pautas deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Desarrollo
Desarrollo

👨‍💻 Desarrollo

En esta sección se listarán las pautas a seguir para el desarrollo de un microfrontend en el ámbito

Ancla
Desarrollo_general
Desarrollo_general

🌐 General

🌐 General 

👮 Pauta

📖 Descripción

🕵️  Verificación

DES-P1

El microfrontend debe extender de SticMicrofrontendView. Esta clase se puede obtener de @sas/wc-stic-microfrontend

Revisión de dependencias y Revisión de código

DES-P2

NO debe instanciar ningún theming, delegando dicha responsabilidad al contenedor del microfrontend (Host o un contenedor para el stand-alone)

Revisión de dependencias y Revisión de código

DES-P3

NO debe disponer de un layout general, delegando dicha responsabilidad al contenedor del microfrontend (Host o un contenedor para el stand-alone)

Revisión del diseño y Revisión de código

DES-P4

El microfrontend debe exponer todas las propiedades que considere relevantes para ejecutar los casos de uso de los que es responsable.

En caso de estar compuesto por otro componente que tenga propiedades relevantes para la ejecución de los casos de uso deberá hacer prop drilling y ser el responsable de exponer dichas propiedades

 

DES-P5

Debe seguir las pautas de routing

 

DES-P6

Debe seguir las pautas de comunicación

 

DES-P7Debe seguir las pautas de configuración

 

DES-P8Debe seguir las pautas de seguridad

 

DES-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Desarrollo_stand_alone
Desarrollo_stand_alone

💻 Stand-Alone

💻 Stand-Alone

👮 Pauta

📖 Descripción

🕵️  Verificación

DES-SA-P1

El contenedor será un componente en CMS independiente y su propio repositorio de código 


Revisión de dependencias y Revisión de código

DES-SA-P2

Se deberán de desarrollar un componente de tipo aplicación (sas-cli).

4. Integración

Se deberá consultar la documentación del microfrontend para conocer las posibilidades de integración que ofrecen. Estas pueden ser de dos tipos:

  • Aislada (Isolated): Esta opción tiene la ventaja de que ofrece un contexto tecnológico que evita conflictos tanto de librerías como de estilos. Tiene la desventaja de que, al construir un contexto de ejecución propio e independiente, debe obtener las librerías para su propio contexto, impidiendo la posibilidad de compartir módulos entre microfrontends, o entre el host y el microfrontend. 
  •  
    Estado
    colourGreen
    titleRECOMENDADA
    DirectaSiempre que sea posible y se ofrezca la posibilidad esta es la opción más eficiente y la recomendada por parte de las STIC. Permite una gestión más eficiente de los recursos.

A nivel de uso, el objetivo es que para el host no exista diferencia a la hora de usar una integración aislada de una no aislada. Los contratos y la interacción deben ser exactamente la misma.

Aislada👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNAIS-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorAIS-02El host debe usar el componente @sas/wc-stic-isolated-microfrontend o alguna extensión de negocio del componente

Revisión de dependencias y Revisión de código

AIS

DES-SA-

03Este tipo de integración debe ser previamente aprobada por el departamento de arquitectura de la STICTicket Jira de decisión técnica en el proyecto HostAIS-04Si se desea una integración completa, el host debe seguir las pautas de creación de theming definidas en el apartado ThemingRevisión visual del estilo aplicado para el microfrontendAIS-05Para interactuar con un host se deben hacer uso de los mecanismos definidos en la sección de comunicaciónRevisión de códigoAIS-06

El host es el responsable de determinar la correcta estrategia de carga del microfrontend:

  • Inicial: se carga los módulos requeridos para la ejecución del microfrontend al inicio de la aplicación
  • Layload: se cargan los módulos requeridos para la ejecución del microfrontend en el momento de ejecución que el host considere oportuno para mantener una optima experiencia de usuario
Uso de herramientas como lighthouse que miden los tiempos de carga de los módulosDirecta👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNDIR-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorDIR-02Si se desea una integración completa, el host debe seguir las pautas de creación de theming definidas en el apartado ThemingRevisión visual del estilo aplicado para el microfrontendDIR-03Para interactuar con un host se deben hacer uso de los mecanismos definidos en la sección de comunicaciónRevisión de códigoDIR-04

El host es el responsable de determinar la correcta estrategia de carga del microfrontend:

  • Inicial: se carga los módulos requeridos para la ejecución del microfrontend al inicio de la aplicación
  • Layload: se cargan los módulos requeridos para la ejecución del microfrontend en el momento de ejecución que el host considere oportuno para mantener una optima experiencia de usuario
Uso de herramientas como lighthouse que miden los tiempos de carga de los módulos

5. Theming

Se deberá consultar la documentación del microfrontend para conocer las posibilidades de theming y personalización de estilos que se ofrecen:

  • Aislado: El host y el theming no comparten estilos y cada uno conservará los suyos al integrarse. Si se quieren compartir, el host debe extender o estar desarrollado con el theming de la stic @sas/wc-stic-theme
  • Estado
    colourGreen
    titleRECOMENDADA
    Directa:
    El host le comparte su theming (@sas/wc-stic-theme ) y el microfrontend lo carga y se adapta tanto al theming base del host como a las características definidas por el usuario en la configuración de la interfaz del host (densidad, contrastes, accesibilidad etc)
Aislado👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNTAIS-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorTAIS-02El host debe tener cargado el theme de la stic. En caso contrario se instanciará el theme por defecto de la sticRevisión de dependencias, revisión de código y revisión visual del estilo aplicado para el microfrontendDirecta👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNTDIR-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorTDIR-02El host debe tener cargado el theme de la stic. En caso contrario no se visualizarán con corrección los componentes del microfrontendRevisión de dependencias, revisión de código y revisión visual del estilo aplicado para el microfrontend

6. Comunicación

La comunicación con el microfrontend deberá ser siempre la estándar. Se deberá consultar la documentación de la api definida del microfrontend para conocer las posibilidades de comunicación.

6.1 Información

  • Host -> Microfrontend:  lo host hará uso de las propiedades del microfrontend siempre que quiera realizar un cambio en el estado del mismo.
  • Microfrontend → Host: el microfrontend hará uso de los eventos para notificar al host cualquier cambio de estado interno o acción que se haya realizado internamente que el negocio del microfrontend considere interesante compartir con el host
Información👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCINFO-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorCINFO-02El host comunicar los datos a través de propiedades definidas en el api del microfrontendTest de integraciónCINFO-03El host recibirá respuesta o notificaciones del microfrontend a través de los eventos definidos en el api del microfrontendTest de integraciónCINFO-03Los errores ocurridos dentro del microfrontend se comunicarán al host a través de un evento de errorTest de integración

P3

Es el responsable de instanciar el theming del microfrontend cuando este se ejecute en modo stand-alone

 

DES-SA-P4

Es el responsable de instanciar el layout general del microfrontend cuando este se ejecute en modo stand-alone

Revisión del diseño y Revisión de código

DES-SA-P5

El contenedor hará uso de la versión kernel del microfrontend (ENT-RT-P4), quedando como responsable de la importación correcta de las dependencias (script o importmaps)

 

DES-SA-P6

Debe exponer un mecanismo de configuración que indique si se ejecuta de forma embebida o stand-alone.

  • Cuando se integra de forma embebida desaparecen los elementos del contenedor (theming,importaciones header, footer, navigation y notification)
  • Cuando se integra de forma stand-alone se mantienen los elementos del contenedor (theming, header, footer, navigation y notification)

 

DES-SA-P7

NO es el responsable de exponer propiedades ni emitir eventos

 

DES-SA-P8

El microfrontend NO tendrá ningún acoplamiento o conocimiento de la existencia de este componente de encapsulación, para él es una integración con un host

 

DES-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Entrega
Entrega

🚚 Entrega


Ancla
Entrega_buildtime
Entrega_buildtime

🏗️ BuildTime

🏗️ BuildTime

👮 Pauta

📖 Descripción

🕵️  Verificación

ENT-BT-P1

Se debe entregar, a través del alm del SAS, un paquete npm en el repositorio de artefactos sin incluir el contenedor (Build-time)

Revisión de dependencias y Revisión de código

ENT-BT-P2

No debe estar ni bundelizado ni minificado. 

 

ENT-BT-P3

Debe proporcionar la configuración configuración interna (CNF-01,CNF-02) para que el Host que lo integre establezca la configuración

 

ENT-BT-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Entrega_runtime
Entrega_runtime

🏃‍♀️ RunTime

🏃‍♀️ RunTime

👮 Pauta

📖 Descripción

🕵️  Verificación

ENT-RT-P1

Debe existir el paquete npm 

Revisión de dependencias y Revisión de código

ENT-RT-P2

Se debe solicitar un despliegue en el CDN (DEV, PRE, PRO)

 

ENT-RT-P3

En estas versiones serán minificadas, bundelizadas y con la configuración interna (CNF-01,CNF-02)

 

ENT-RT-P4

Versión kernel: Esta versión NO incluyen dependencias externas al componente dentro del bundlelizado, esto implica que esta versión no funciona de forma independiente, si no que necesita que quien integra cargue (como script o importmap) todas las dependencia necesarias.

 

ENT-RT-P5

Versión full: Esta versión SI incluyen dependencias externas al componente dentro del bundlelizado, esto implica que esta versión funciona de forma independiente. Dependiendo de donde y como se integre (de forma aislada o directa) pueden surgir conflictos tecnológicos y/o algunos problemas de rendimiento debido a la carga multiplicada de la misma librería por los n componentes que cargue.

 

ENT-RT-P6

A parte de los script, por entorno se debe proporcionar un listado de los importmaps necesarios para ejecutar la versión kernel del component

 

ENT-RT-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Entrega_stand_alone
Entrega_stand_alone

💻 Stand-Alone

💻 Stand-Alone

👮 Pauta

📖 Descripción

🕵️  Verificación

ENT-SA-P1

Debe entregarse el componente de tipo aplicación que permite desplegar en modo stand-alone (DES-P4)

Revisión de dependencias y Revisión de código

ENT-SA-P2

En caso de desplegarse en contenedores:

  • Debe hacerse a través del componente de helm del proyecto
  • Debe generar la imagen usando el ALM del SAS, que incluirá la versiónbundelizada ( ENT-SA-P1)
  • Deberá ofrecer la configuración interna del microfrontend por entorno a través de un fichero (*.json) generado desde el configmap (CNF-01,CNF-02)
  • Debe proveer la configuración del nginx proporcionada por el SAS por entorno a través de un fichero (*.json) generado desde el configmap

 

ENT-SA-P3

En caso de desplegarse en baremental:

  • Deberá generar un binario a través del ALM del SAS, que incluirá la versiónbundelizada( ENT-SA-P1)
  • Deberá persistir la configuración interna del microfrontend por entorno a través de un fichero (*.json) entregado en el PID (CNF-01,CNF-02)
  • Debe proveer la configuración del servidor donde se despliegue por entorno a través de un fichero (*.json) entregado en el PID

 

ENT-SA-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A



Ancla
Integración
Integración

🔗Integración

🌐 General 

6.2. Routing

Se deberá consultar la documentación del microfrontend para conocer las posibilidades de enrutado que se ofrecen. El enrutado del microfrontend será siempre interno virtual, es decir, que no se hará a través de la url del navegador, permitiendo así navegar de forma independiente y a través de múltiples microfrontends dentro de la misma ruta externa del host. El microfrontend ofrecerá en su documentación:

  • El listado de rutas y parámetros en caso de ser necesario
  • Una propiedad a través de la cual el host le puede comunicar al microfrontend a que ruta necesita navegar.
Routing👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCROU-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorCROU-02El host indicará a que ruta, de la lista definida, desea navegar a través de la propiedad definida para ello.Test de integraciónCROU-03En caso de que el host indique alguna ruta errónea, a través de eventos, se le notificaráTest de integración

6.3. Seguridad

Se deberá consultar la documentación del microfrontend para conocer las posibilidades de seguridad concreta que se ofrecen.

  • El host deberá proveer un jwt al microfrontend a través de la propiedad correspondiente. 
    • El jwt deberá estar firmado
    • El jwt deberá tener el scope adecuado del microfrontend asignado LUIS MARTINEZ FONTIVEROS como ves este punto?
  • El host deberá exponer y compartir una url con el jks que ofrezca la clave publica de firmado para poder validarlo
  • En caso de que el microfrontend requiera una claim con MACO se deberá consultar la normativa al respecto
Seguridad👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCSEC-01El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorCSEC-02El host compartirá su jwt token con el microfrontend que lo requiera, a través, de la propiedad definida para elloTest de integraciónCSEC-03En caso de que el host no tenga permisos o alguna otra situación errónea de seguridad, el microfrontend notificará un error a través del evento definido para ello.Test de integración

6.4. Configuración

  • Externa: Se deberá consultar la documentación del microfrontend para conocer las posibilidades de configuración externa concreta que se ofrecen. Dicha configuración se compartirá, como indica el estándar de comunicación, a través de la propiedad que esté definida en la api para dicho propósito.
Configuración
👮 PAUTA📖 Descripción🕵️  VERIFICACIÓN
CCNF
INT-01
El host debe ser compatible con tecnología web-componente y litSe visualiza en el navegadorCCNF-02El host NO es responsable de la configuración interna del microfrontendTest de integraciónCCNF-03El host podrá configurar el microfrontend a través de las propiedades definidas en la documentación par tal objetivoTest de integraciónCCNF-04El host NO transmitirá información sensible a través de las propiedades del microfrontend sin que estén debidamente codificada o cifrada por un servidor.Test de integraciónCCNF-05En caso de que haya algún error en la información de configuración transmitida se notificará el error a través del evento definido para elloTest de integración

6.5. Estado Compartido

Se entiende por estado compartido, cualquier información de estado del host relevante para el microfrontend, o cualquier información de estado del microfrontend relevante para el host.

Se debe determinar el tipo de integración:

  • Directa
  • Aislada
Revisión de la documentación
INT-02

Se debe determinar el modo integración:

  • stand-alone: DES-P4
  • embebida: DES-P2 y DES-P3
Revisión de la documentación

INT-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A



Ancla
Comunicación
Comunicación

✉️ Comunicación


Estado Compartido👮 PAUTA
🌐 General 
👮 PAUTA
📖 Descripción🕵️  VERIFICACIÓN
CEC
COM-01El
host será el único responsable de mantener, en caso de que lo considere necesario, el estado del microfrontend.
microfrontend recibirá información a través de propiedadesTest unitarios
COM
Revisión de códigoCEC
-02El microfrontend
mantendrá de manera interna y aislada su propio estado.Revisión de códigoCEC-03En caso de que se considere relevante a nivel del negocio, microfrontend notificará, como indica el estándar de comunicación, a través de eventos el cambio de su estado internoTest de integraciónCEC-04En ningún caso se asumirá que el microfrontend tiene la capacidad de acceder al estado del host de manera directaRevisión de códigoCEC-05

Cualquier comunicación sobre el estado que el host necesite notificar al microfrontend será , como indica el estándar de comunicación, a través de propiedades expuestas por el propio microfrontend

Test de integración

7. Versionado

El versionado de los microfrontend se llevará a cabo respetando el estándar de Semantic Version.

enviará información a través de eventosTest unitarios

COM-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A


Ancla
Routing
Routing

🗺️ Routing

Versionado
🌐 General
👮 PAUTA📖 Descripción🕵️  VERIFICACIÓN
CEC

ROU-

01

El host tendrá asegurada la retrocompatibilidad de los desarrollos realizados para un microfrontend dentro de una misma mayor. 

Test de integraciónCEC-02

En una integración en runtime, el host recibirá las actualizaciones dentro de una misma mayor de manera automática

Smoke testCEC-03En una integración en buildtime, el host será el responsable de mantenerse actualizado
Test de integraciónCEC-04En caso de que haya algún error en la integración se notificará el error a través del evento definido para elloTest de integración

P1

Se hará uso de la librería @sas/lib-stic-route que se puede descargar del repositorio de artefactos

Revisión de código

ROU-P2

La navegación será siempre interna, no se hará a través de la url

Test unitario

ROU-P3El microfrontend debe proporcionar una constante con una lista de los paths disponiblesTest unitario
ROU-P4El microfrontend debe proporcionar un método métodos para construir los paths con variablesTest unitario
ROU-P5El microfrontend debe proporcionar en la documentación los paths disponibles juntos con sus variablesRevisión de documentación
ROU-P6La cargas de las páginas asociadas a la navegación deben implementarse con importación dinámica de módulosRevisión de código

ROU-excepción

ALERTA

En caso de necesitar enrutamiento externo (URL) deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Seguridad
Seguridad

🔒 Seguridad

🌐 General
👮 PAUTA📖 Descripción🕵️  VERIFICACIÓN
SEG-P1En caso identificarse como un microfrontend seguro, el microfrontend es el encargado de gestionar su propia seguridad, proporcionando los recursos y la documentación adecuada para su garantía

Revisión del Diseño, Revisión de código y Revisión de documentación

SEG-P2EL microfrontend seguro debe exponer una propiedad que reciba un jwt con el OpenID del usuario

Revisión del Diseño 

SEG-P3El microfrontend tiene que tener la capacidad de a partir del OpenID del usuario proporcionado por el host obtener un token jwt con la información de seguridad relevante para su contextoRevisión del Diseño y Revisión de documentación
SEG-P4El microfrontend seguro será el encargado de gestionar el ciclo de vida del token (generación, refresh, revocación)Test de integración
SEG-P5El microfrontend seguro deberá estar conectado con un IDP (propio, LoginSAS) que haga la gestión en back del token.Test unitario y Test de integración

SEG-excepción

ALERTA

En caso de necesitar que alguna dependencia no sea cargada desde el CDN del SAS y quiera ser bundlelizada deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Configuración
Configuración

⚙️ Configuración

🌐 General
👮 PAUTA📖 Descripción🕵️  VERIFICACIÓN
CNF-01El microfrontend es el responsable de proveer al configuración interna para cada uno de los entornos (DEV, PRE, PRO) (ENT-RT-P3, ENT-BT-P3, ENT-SA-P2, ENT-SA-P3)Se visualiza en el navegador
CNF-02

La configuración se distribuirá de manera estática:

  • CDN: el script del microfrontend desplegado tendrá la configuración correspondiente al entorno del CDN desplegado (ENT-RT-P3, ENT-SA-P2, ENT-SA-P3)
  • Contenedores: Definido en el configmap del helm por entorno para que genere un fichero (*.json) por entorno. (ENT-RT-P3, ENT-BT-P3, ENT-SA-P2, ENT-SA-P3)
  • BareMetal: Definido un fichero (*.json) por entorno  entregado en el PID (ENT-RT-P3, ENT-BT-P3, ENT-SA-P3)



CNF-03El microfrontend debe exponer la configuración externa a través de propiedades.Test de integración

CNF-excepción

ALERTA

En caso de necesitar que alguna dependencia no sea cargada desde el CDN del SAS y quiera ser bundlelizada deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Versionado
Versionado

📦 Versionado

El versionado de los microfrontend se llevará a cabo respetando el estándar de Semantic Version.

🌐 General

8. Conflictos

 Se identifican 4 tipos de conflictos que pueden surgir a la hora de llevar a cabo una integración con microfrontend:

  • Librerías externas
    • Misma librería diferentes versiones incompatibles dentro del mismo contexto de carga de módulos (no aislado)
  • Variables Globales
    • Que dos librerías (externas o internas) hagan uso de una variable global con el mismo nombre
    • Para aplicaciones basadas en la nueva arquitectura de referencia (WC) no está permitido el uso de variables globales al contexto
    • Para aplicaciones legacy y que no estén sujetos a la normativa de la nueva arquitectura de referencia, se debe limitar el uso de variables globales a las ya existentes sin poder añadir nuevas variables, e intentando en la medida de lo posible ir eliminando la existencia de las mismas, dando prioridad aquellas que al realizar una integración estén generando conflicto
  • Estilos 
    • Todos los microfrontend estarán desarrollando haciendo uso de la nueva arquitectura de referencia, es decir, estarán desarrollados con Web Component. Esto implica que la propia tecnología ofrece un contexto aislado sobre los estilos evitando así que de forma general el host pueda entrar en conflicto con los estilos del microfrontend.
    • El único escenario donde pudiera haber un conflicto de estilos sería si el host hace uso de variables css y estas tienen el mismo nombre que el proporcionado en el componente de la stic (stic-theme) y definidas en el Sistema de diseño  . No está permitido el uso de dichas variables css fuera del componente del stic-theme
  • Registro de componentes (CustomElements): El registro de un mismo componente (mismo tag html) puede generar un conflicto y por tanto un error en la consola relacionado con el CustomRegistry.
Librerías externas
👮 PAUTA📖 Descripción🕵️  VERIFICACIÓN
CLE

CV-

01

P1

El host debe evaluar los posibles conflictos con las librerías externas documentadas en el api del microfrontend

Revisión del manual del package.jsonCLE-02

El host debe decidir si puede alinear la versión de la librería conflictiva identificada. En caso de no ser posible debe aislar el uso del microfrontend.

Test unitarios y  Test de integraciónVariables Globales👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCVG-01

El host no debe crear ni hacer uso de variable globales.

Revisión del manual del package.jsonCVG-02

El host debe evaluar si algún conflicto no puede ser resuelto desde el host. En caso de no ser posible debe aislar el uso del microfrontend.

Test unitarios y  Test de integraciónEstilos👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCE-01

El host debe evaluar los posibles conflictos de variables CSS con el theme de la stic(@sas/wc-stic-theme). microfrontend

Revisión del manual de los ficheros CSS o consola del desarrollador del navegadorCE-02

El host debe renombrar las variables css conflictivas y añadiéndole el contexto del host. En caso de no ser posible debe aislar el uso del microfrontend.

Test unitarios y  Test de integraciónCE-03

El host, salvo autorización expresa del departamento de arquitectura a través de un ticket Jira de decisión técnica en el proyecto Host, no podrá redefinir el valor de dichas variables

Revisión de códigoRegistro de componentes: Build Time👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCRCBT-01

El host debe garantizar la unicidad de las versiones de los componentes compartidos con el microfrontend utilizado.

Revisión del manual del package.jsonCRCBT-02

El host deberá bundelizar el proyecto al completo para garantizar la unicidad de los componentes. 

Test de integraciónCRCBT-03

En caso de recurrir a opciones como el peerdependency y/o el override para determinar las versiones a utilizar, el host asumirá la responsabilidad de un posible funcionamiento inesperado por parte del microfrontend

Test de integración

 

Cada microfrontend debe versionar de forma independiente y como consecuencia:

  • Debe ser registrado como un componente en CMD
  • Debe tener su propio repositorio de código

Revisión de código y Revisión de CMS

CV-P2

El control de versiones estará regido por las pautas marcadas por Semantic Version. Mayor.Minor.Patch

Test de regresión

CV-P3

Patch: Indica correcciones sobre la funcionalidad de la versión

Revisión de Changelog

CV-P4Minor: Indica nuevas funcionalidades que son retrocompatibles, es decir, no existen eliminaciones o actualizaciones en el contrato de integración (api del componente). Los añadidos en el contrato que mantengan la retrocompatibilidad están permitidos.Revisión de Changelog
CV-P5Mayor: Indica nuevas funcionalidades que no son retrocompatibles (breaking changes). Existe eliminación o actualización de elementos del contrato de integración (api del componente)Revisión de Changelog
CV-P6Cualquier elemento que se desee eliminar deberá ser marcado como deprecado en la versión mayor actual e indicar la alternativa a utilizar que mantiene la funcionalidad y a partir de que mayor está versión será eliminadaTest de regresión

CV-excepción

ALERTA

En caso de necesitar que alguna dependencia no sea cargada desde el CDN del SAS y quiera ser bundleizada deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Theming
Theming

🖌️ Tema y Estilos Compartidos

🌐 General

👮 Pauta

📖 Descripción

🕵️  Verificación

TEC-P1

El microfrontend deberá ser desarrollado estilísticamente en base a las pautas definidas en el sistema de diseño

Revisión del Diseño

TEC-P2

El microfrontend deberá ser desarrollado haciendo uso del catálogo de componentes de la STIC, que estarán acordes a lo definido en el sistema de diseño

Revisión de dependencias y Revisión de código

TEC-P3

El microfrontend deberá ser desarrollado haciendo uso de las variables expuestas por el componente del stic-themeRevisión de código

TEC-P4

El microfrontend  NO deberá instanciar el componente de theming
Test unitario

TEC-excepción

Estado
colourYellow
titleAlerta

En caso de necesitar un framework de desarrollo diferente al normativizado deberá ser justificada y previamente validada por la oficina de arquitectura creando un ticket Jira de decisión técnica (Tarea genera → tipo: decisión → subtipo: técnica) en el proyecto y asignársela al responsable del departamento LUIS MARTINEZ FONTIVEROS 

N/A

Ancla
Documentación
Documentación

Registro de componentes: RunTime👮 PAUTA📖 Descripción🕵️  VERIFICACIÓNCRCRT-01

El host debe verificar que los componentes se encuentran en la misma mayor, que aseguran retrocompatibilidad,  que los que usa el microfrontend

Revisión del manual del package.jsonCRCRT-02

La bundlelización del host debe obviar las dependencias externas y estas deben ser proporcionadas a través de los importmaps

Test de integraciónCRCRT-03

El host debe mergear los importmaps suyos con los definidos por el microfrontend

Revisión del manual de los importmaps9.

📚

Documentación

Deberá dejar cumplimentada la plantilla de integración con cada uno de los microfrontend

Normativas de la arquitectura de referencia tecnológica para el desarrollo frontal de software


Table Excerpt Include
nameNORMATIVA_CONT
merge-tablestrue
pageGOBP:TOC: Normativa, guías y recomendaciones
typepage

Guías de desarrollo frontal


Table Excerpt Include
nameGUIA_DESA_CONT
merge-tablestrue
pageGOBP:TOC: Normativa, guías y recomendaciones
typepage

Terminología

ConceptoDefinición
MicrofrontendEncapsulación lógica de negocio, que contiene una funcionalidad concreta en su dominio y que está diseñada para incorporarse en un host. 
Isolated-MicrofrontendMicrofrontend que dispone de un contexto de ejecución aislado

Referencias