SlideShare a Scribd company logo
1 of 20
Download to read offline
Gestión de la configuración
en aplicaciones web
Dr. Pedro J. Molina @pmolinam
Málaga, 2022.11.12
Dr. Pedro J. Molina
@pmolinam https://linkedin.com/in/pjmolina
Agenda
▪ Entornos
▪ Gestión de la configuración
▪ Tipos de configuración
▪ Segregación de responsabilidades
▪ Herramientas e inercia
▪ Inyección en tiempo de compilación vs
despliegue
Entornos
▪ LOCAL, DES, PRE, QA, PRO, etc.
▪ Independientes
▪ HW y dependencias físicas probablemente diferentes
Tipos de configuración
Mantenidaspor el desarrollador
Dependendelcódigo
Sefijanentiempodecompilación
▪ Versionesde librerías
▪ Configuración interna de aplicación
▪ Des/habilitación de características según su
madurez
▪ Configuración dependiente del HW
▪ URLs internas de aplicación
▪ Etc.
Mantenidaspor el operador
Dependendelentorno
Sefijanendespliegueocambianenoperación
▪ IPs, nombresDNS de servicios dependientes
▪ Usuarios, contraseñas
▪ Cadenas de conexión a BD
▪ Claves criptográficas
▪ Volúmenes y rutas a disco
▪ Cuotas: limitaciones de memoria, CPU, E/S y disco
▪ Habilitar/Deshabilitarcaracterísticas: A/B testing
Problema habitual
▪ Cuando aparecenmezcladas
▪ Mismo mecanismo
▪ Fichero o variable de entorno
Porque:
1. Fugan credenciales (inyectadas en compilación)
2. Exponen la complejidad de la conf. interna al operador, provocando errores de despliegue
(configuración incompleta, invalida o desfasada)
3. Un cambio de configuración externa → implica un redespliegue (cuando no debería) → más
lento
Gestión de la configuración
▪ Auditoria y control de los recursos de una organización
▪ Versionado
▪ Manifiesto 12 Factor Apps. https://12factor.net/es/
▪ Recomendación I. Basedecódigoúnicasobre laquegenerarNdespliegues
▪ Recomendación III. Guardarlaconfiguraciónenelentorno
▪ Recomendación V. SepararcompletamentelasetapasdeConstruir,distribuiryejecutar
Rec. I. Base de código única desde
donde construir versiones
▪ Versionado: SemVer para las publicaciones (release)
https://semver.org/lang/es/
<mayor>.<menor>.<parche>
LOCAL DES PRE PRO
Rec. III. Guardar la configuración en el entorno
▪ Entorno ➔ Fuera de la aplicación
▪ Variables de entorno (SO)
▪ Ficheros
▪ Servicios de configuración
Entorno
Aplicación
desplegada
CI
Rec. V. Separar construcción, distribución
y despliegue
▪ Construir: CI
▪ Distribución: repositorios de versiones
▪ Despliegue: Instalación en 1 entorno
Entorno E1
Aplicación
desplegada
CI
Segregación de Responsabilidades
▪ Principio de seguridad: SegregationofDuties
▪ Ejemplo: Elque emite recibe lafactura esdiferente alque paga.
▪ En IT, donde la seguridad es importante:
▪ El desarrollador no conoce las claves de producción (y no suele tener acceso de
admin, salvo para acciones puntuales).
▪ El operador/administrador no desarrolla (evita caballos de troya)
▪ Son personas diferentes, con permisos en la organización diferentes
Herramientas e Inercia
▪ Visual Studio permite diversos Web.config paraNentornos(selecciónen
tiempode compilación)
▪ Angular permite Nentornos (selecciónentiempodecompilación)
▪ Cómodo para de desarrollador, pero contraproducente para la
seguridad y despliegues bien gestionados
▪ Porqué:
1. La configuración acaba dentro del repositorio de código
2. Permite la fuga de credenciales, impidiendola segregación de
responsabilidades
3. Son ficheros que se combinanen tiempo de compilación (demasiadopronto)
4. El desarrollador no tiene porque saber nada del entorno final donde corre la
aplicación (entorno desconocido)
Tiempo de compilación
Soluciones
▪ Separar la configuracióninterna de la externa
▪ Inyectar la interna en tiempode compilación
▪ Inyectar la externa en tiempo dedespliegue u operación
▪ Permitir cambios en caliente si lo necesitamos: p.e. ajustes a
A/B Testing
▪ Aplicacionesweb SPA. Inversión decontrol.
▪ Hacer que el backend proporcione TODA la configuración
externa al SPA.
▪ SPA = JS, se puede depurar en el navegador. Toda su
configuración es potencialmente visible → no debe contener
ninguna credencial privada.
CI
Entorno E1
Alternativas: SPA
Mecanismo de configuraciónen tiempo de ejecución(inicialización)
▪ Angular:https://juristr.com/blog/2018/01/ng-app-runtime-config/
1. Embebidoen código ❌ No puedes cambiarlo
2. Fichero JSON en /assets ❌ Obliga a reescribir el fichero tras despliegue
3. Descargadodesde un servicio GET/spa-config
✅ Más flexible
GET /spa-config
Navegador envía cabeceras HTTP
GET https://api.acme.com:876/api/spa-config
origin: https://spa1.qa.acme.com:456/
remote-address: 67.45.34.213:456
accept-language: es-ES,es;q=0.9,en-US;q=0.8,en;q=0.7
Servidor evalúa y retorna
origin: ¿Autorizado para CORS? sí/no
La URL determina el entorno (QA)
remote-address: Geo-IP → Provincia, País → A/B Testing
Seguridad / Baneo de IPs
accept-language: Preferencia de idioma del cliente (i18n)
{
"env": "qa",
"audience": "https://id.qa.acme.com",
"clientId": "spa1-qa",
"user-lang": "es-ES",
"lang-resources": "https://cdn.acme.com/i18n/es-ES.json",
"branding": "https://cdn.acme.com/red-acme",
"feature-a": true,
"feature-b": false
}
Alternativas: Backend
1. Fichero (e.j. appsettings.json) ❌ Requiere reescritura
2. Persistido en base de datos ❌ Requiere cadena de conexión
3. Variables de entorno ✅ Flexible. Estándar en contenedores
4. Servicio de configuración ✅ Más Flexible. A/B Testing
ejemplo: Consul
Montaje completo
GET/spa-config
Entorno E1
API
Integración congit
¿Preguntas?
Código demo:
https://github.com/pjmolina/configuration-management-demo
Cenv:
https://github.com/metadevpro/cenv
¿Más Preguntas?
Seguimos después en:
Twitter: @pmolinam
Linkedin: https://linkedin.com/in/pjmolina
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web

More Related Content

Similar to dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web

Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDJuan Fabian
 
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...atSistemas
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoToni de la Fuente
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 
Fases de instalacion de un sistema operativo [jabbawockeez]
Fases de instalacion de un sistema operativo [jabbawockeez]Fases de instalacion de un sistema operativo [jabbawockeez]
Fases de instalacion de un sistema operativo [jabbawockeez]Reiber Gonzales
 
Administrador Simatic conecptos básicos Step 7
Administrador Simatic conecptos básicos Step 7Administrador Simatic conecptos básicos Step 7
Administrador Simatic conecptos básicos Step 7sap5576
 
FASES DE INSTALACION DE UN SISTEMA OPERATIVO
FASES DE INSTALACION DE UN SISTEMA OPERATIVOFASES DE INSTALACION DE UN SISTEMA OPERATIVO
FASES DE INSTALACION DE UN SISTEMA OPERATIVOReiber Gonzales
 
Fases de instalacion de un sistema operativo.
Fases de instalacion de un sistema operativo.Fases de instalacion de un sistema operativo.
Fases de instalacion de un sistema operativo.Reiber Gonzales
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeQuito Lambda
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7Eudris Cabrera
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupalcamposer
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversionEudris Cabrera
 
Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5AdrianAsisVegaSegura
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalSiteGround España
 

Similar to dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web (20)

Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
 
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...
Meetup En mi local funciona - Serverless... ¡en local! con Serverless Framewo...
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con Alfresco
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
Fases de instalacion de un sistema operativo [jabbawockeez]
Fases de instalacion de un sistema operativo [jabbawockeez]Fases de instalacion de un sistema operativo [jabbawockeez]
Fases de instalacion de un sistema operativo [jabbawockeez]
 
Administrador Simatic conecptos básicos Step 7
Administrador Simatic conecptos básicos Step 7Administrador Simatic conecptos básicos Step 7
Administrador Simatic conecptos básicos Step 7
 
FASES DE INSTALACION DE UN SISTEMA OPERATIVO
FASES DE INSTALACION DE UN SISTEMA OPERATIVOFASES DE INSTALACION DE UN SISTEMA OPERATIVO
FASES DE INSTALACION DE UN SISTEMA OPERATIVO
 
Fases de instalacion de un sistema operativo.
Fases de instalacion de un sistema operativo.Fases de instalacion de un sistema operativo.
Fases de instalacion de un sistema operativo.
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
sesion03-traspa.pdf
sesion03-traspa.pdfsesion03-traspa.pdf
sesion03-traspa.pdf
 
avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7[ES] Introducción a Java EE 7
[ES] Introducción a Java EE 7
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 

More from Pedro J. Molina

Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformPedro J. Molina
 
LangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with EssentialLangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with EssentialPedro J. Molina
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLsPedro J. Molina
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaPedro J. Molina
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web ComponentsPedro J. Molina
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web componentsPedro J. Molina
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDEPedro J. Molina
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi SpecPedro J. Molina
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)Pedro J. Molina
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPIPedro J. Molina
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosPedro J. Molina
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 

More from Pedro J. Molina (20)

MDE en la industria
MDE en la industriaMDE en la industria
MDE en la industria
 
Terraform
TerraformTerraform
Terraform
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
LangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with EssentialLangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with Essential
 
Are Startups for me?
Are Startups for me?Are Startups for me?
Are Startups for me?
 
Meow Demo
Meow DemoMeow Demo
Meow Demo
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Quid
QuidQuid
Quid
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 

dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web

  • 1. Gestión de la configuración en aplicaciones web Dr. Pedro J. Molina @pmolinam Málaga, 2022.11.12
  • 2. Dr. Pedro J. Molina @pmolinam https://linkedin.com/in/pjmolina
  • 3. Agenda ▪ Entornos ▪ Gestión de la configuración ▪ Tipos de configuración ▪ Segregación de responsabilidades ▪ Herramientas e inercia ▪ Inyección en tiempo de compilación vs despliegue
  • 4. Entornos ▪ LOCAL, DES, PRE, QA, PRO, etc. ▪ Independientes ▪ HW y dependencias físicas probablemente diferentes
  • 5. Tipos de configuración Mantenidaspor el desarrollador Dependendelcódigo Sefijanentiempodecompilación ▪ Versionesde librerías ▪ Configuración interna de aplicación ▪ Des/habilitación de características según su madurez ▪ Configuración dependiente del HW ▪ URLs internas de aplicación ▪ Etc. Mantenidaspor el operador Dependendelentorno Sefijanendespliegueocambianenoperación ▪ IPs, nombresDNS de servicios dependientes ▪ Usuarios, contraseñas ▪ Cadenas de conexión a BD ▪ Claves criptográficas ▪ Volúmenes y rutas a disco ▪ Cuotas: limitaciones de memoria, CPU, E/S y disco ▪ Habilitar/Deshabilitarcaracterísticas: A/B testing
  • 6. Problema habitual ▪ Cuando aparecenmezcladas ▪ Mismo mecanismo ▪ Fichero o variable de entorno Porque: 1. Fugan credenciales (inyectadas en compilación) 2. Exponen la complejidad de la conf. interna al operador, provocando errores de despliegue (configuración incompleta, invalida o desfasada) 3. Un cambio de configuración externa → implica un redespliegue (cuando no debería) → más lento
  • 7. Gestión de la configuración ▪ Auditoria y control de los recursos de una organización ▪ Versionado ▪ Manifiesto 12 Factor Apps. https://12factor.net/es/ ▪ Recomendación I. Basedecódigoúnicasobre laquegenerarNdespliegues ▪ Recomendación III. Guardarlaconfiguraciónenelentorno ▪ Recomendación V. SepararcompletamentelasetapasdeConstruir,distribuiryejecutar
  • 8. Rec. I. Base de código única desde donde construir versiones ▪ Versionado: SemVer para las publicaciones (release) https://semver.org/lang/es/ <mayor>.<menor>.<parche> LOCAL DES PRE PRO
  • 9. Rec. III. Guardar la configuración en el entorno ▪ Entorno ➔ Fuera de la aplicación ▪ Variables de entorno (SO) ▪ Ficheros ▪ Servicios de configuración Entorno Aplicación desplegada CI
  • 10. Rec. V. Separar construcción, distribución y despliegue ▪ Construir: CI ▪ Distribución: repositorios de versiones ▪ Despliegue: Instalación en 1 entorno Entorno E1 Aplicación desplegada CI
  • 11. Segregación de Responsabilidades ▪ Principio de seguridad: SegregationofDuties ▪ Ejemplo: Elque emite recibe lafactura esdiferente alque paga. ▪ En IT, donde la seguridad es importante: ▪ El desarrollador no conoce las claves de producción (y no suele tener acceso de admin, salvo para acciones puntuales). ▪ El operador/administrador no desarrolla (evita caballos de troya) ▪ Son personas diferentes, con permisos en la organización diferentes
  • 12. Herramientas e Inercia ▪ Visual Studio permite diversos Web.config paraNentornos(selecciónen tiempode compilación) ▪ Angular permite Nentornos (selecciónentiempodecompilación) ▪ Cómodo para de desarrollador, pero contraproducente para la seguridad y despliegues bien gestionados ▪ Porqué: 1. La configuración acaba dentro del repositorio de código 2. Permite la fuga de credenciales, impidiendola segregación de responsabilidades 3. Son ficheros que se combinanen tiempo de compilación (demasiadopronto) 4. El desarrollador no tiene porque saber nada del entorno final donde corre la aplicación (entorno desconocido) Tiempo de compilación
  • 13. Soluciones ▪ Separar la configuracióninterna de la externa ▪ Inyectar la interna en tiempode compilación ▪ Inyectar la externa en tiempo dedespliegue u operación ▪ Permitir cambios en caliente si lo necesitamos: p.e. ajustes a A/B Testing ▪ Aplicacionesweb SPA. Inversión decontrol. ▪ Hacer que el backend proporcione TODA la configuración externa al SPA. ▪ SPA = JS, se puede depurar en el navegador. Toda su configuración es potencialmente visible → no debe contener ninguna credencial privada. CI Entorno E1
  • 14. Alternativas: SPA Mecanismo de configuraciónen tiempo de ejecución(inicialización) ▪ Angular:https://juristr.com/blog/2018/01/ng-app-runtime-config/ 1. Embebidoen código ❌ No puedes cambiarlo 2. Fichero JSON en /assets ❌ Obliga a reescribir el fichero tras despliegue 3. Descargadodesde un servicio GET/spa-config ✅ Más flexible
  • 15. GET /spa-config Navegador envía cabeceras HTTP GET https://api.acme.com:876/api/spa-config origin: https://spa1.qa.acme.com:456/ remote-address: 67.45.34.213:456 accept-language: es-ES,es;q=0.9,en-US;q=0.8,en;q=0.7 Servidor evalúa y retorna origin: ¿Autorizado para CORS? sí/no La URL determina el entorno (QA) remote-address: Geo-IP → Provincia, País → A/B Testing Seguridad / Baneo de IPs accept-language: Preferencia de idioma del cliente (i18n) { "env": "qa", "audience": "https://id.qa.acme.com", "clientId": "spa1-qa", "user-lang": "es-ES", "lang-resources": "https://cdn.acme.com/i18n/es-ES.json", "branding": "https://cdn.acme.com/red-acme", "feature-a": true, "feature-b": false }
  • 16. Alternativas: Backend 1. Fichero (e.j. appsettings.json) ❌ Requiere reescritura 2. Persistido en base de datos ❌ Requiere cadena de conexión 3. Variables de entorno ✅ Flexible. Estándar en contenedores 4. Servicio de configuración ✅ Más Flexible. A/B Testing ejemplo: Consul
  • 19. ¿Más Preguntas? Seguimos después en: Twitter: @pmolinam Linkedin: https://linkedin.com/in/pjmolina