Políticas de uso de Python

Información general

Icono normas
Tipo de recurso
Guía
Etiquetas

Descripción

Código: POL_PYT

Versión actual: v01r00

La presente política establece el marco normativo para el uso de Python en la Junta de Andalucía.

El objetivo es garantizar que su utilización se alinee lo máximo posible con los principios tecnológicos generales del Modelo Global de Soluciones, asegurando la interoperabilidad, seguridad, sostenibilidad tecnológica y consistencia en el ciclo de vida de las aplicaciones.

Ámbito de aplicación de la norma

La Política de uso de Python es de obligado cumplimiento tanto para el desarrollo de software mediante contratos de servicios como para desarrollos realizados con medios propios de la Agencia Digital de Andalucía.

Los proyectos e iniciativas a los que la Política es de aplicación incluyen:

  • Proyectos de desarrollo de aplicaciones nuevas.
  • Evolución y mantenimiento de soluciones existentes.
  • Iniciativas de innovación o prototipado que puedan derivar en soluciones productivas.

Se excluyen de la presente Política:

  • Prototipos de investigación de carácter temporal sin datos productivos ni sensibles.
  • Demostraciones técnicas internas que no tengan continuidad operativa.

 

Escenarios de uso recomendados

Se establece que el uso de Python en la Agencia Digital de Andalucía debe circunscribirse a los escenarios definidos en esta sección, por tratarse de ámbitos alineados con el mercado, con suficiente capacidad técnica disponible, alcance limitado y sin impacto en los principios de la arquitectura corporativa.

En todos los casos, los proyectos deberán cumplir además con los requisitos de cumplimiento o guardarraíles técnicos de seguridad, interoperabilidad, datos y observabilidad definidos en la sección 7 de esta Política.

A continuación, se listan los escenarios donde se recomienda especialmente el uso de Python en los desarrollos backend.

Microservicios de IA / Machine Learning

Se recomienda el uso de Python para el desarrollo de microservicios cuya responsabilidad principal esté directamente relacionada con Inteligencia Artificial (IA), Machine Learning (ML) o procesamiento avanzado de datos, especialmente cuando el servicio actúa como punto de inferencia, orquestación o exposición de modelos.

Este escenario constituye el principal caso de uso admitido para Python dentro de la ADA, debido a que Python es el lenguaje predominante en el ámbito de la IA y el Machine Learning a nivel industrial y académico. La mayoría de los avances, frameworks y modelos de referencia se publican primero o exclusivamente en Python y su soporte nativo, completo y actualizado está únicamente en Python.


Ejemplos:

  • Asistente de búsqueda/consulta de normativa y procedimientos (RAG).
  • Extracción de datos de documentos aportados por el ciudadano.
  • Detección de anomalías en pagos/subvenciones.
  • Predicción de demanda de citas y recursos.
  • Priorización de casos para intervención social.

 

Data processing / ETL ligero / Feature engineering

Se recomienda el uso de Python para microservicios y jobs cuya responsabilidad principal sea el procesamiento de datos (ETL ligero), la preparación de datasets y el feature engineering para modelos de IA/ML, especialmente cuando se trabaja con datos estructurados o semiestructurados (CSV/JSON/Parquet) y el objetivo es transformar, validar, enriquecer o normalizar información antes de su consumo por otros servicios.

 

Este escenario es especialmente adecuado cuando se necesita velocidad de desarrollo, flexibilidad y un ecosistema maduro para manipulación de datos, sin requerir plataformas de Big Data distribuido.  En estos casos de uso, Python es considerado dentro del mercado como un lenguaje especialmente apropiado para la ingeniería de datos ligera y que requiere menos infraestructura de código que otros lenguajes para el parseo y la normalización de datos complejos.

Ejemplos:

  • Anonimización/pseudonimización para uso analítico
  • Normalización y calidad de datos de registro y tramitación
  • Preparación de datasets para analítica y cuadros de mando
  • Enriquecimiento con catálogos públicos y datos maestros
  • Procesamiento de datos semiestructurados (JSON) procedentes de integraciones

 

Automatización avanzada y orquestación única

Se recomienda el uso de Python para microservicios, jobs o herramientas internas cuya finalidad sea la automatización avanzada y la orquestación técnica de procesos, especialmente cuando el valor del componente reside en conectar sistemas, coordinar pasos, transformar entradas/salidas y ejecutar flujos de trabajo repetitivos.

Este escenario se considera idóneo cuando el servicio actúa como unión entre plataformas (APIs, colas, ficheros, servicios cloud, SFTP, etc.) y no como un microservicio de dominio con lógica de negocio compleja, debido a que Python es particularmente efectivo para automatizaciones más allá de scripts simples debido a su sintaxis concisa para lógica secuencial y condicional.

Ejemplos:

  • Orquestación de flujos de IA
  • Automatización de cargas nocturnas
  • Automatización de gobierno del dato 
  • Gestión de certificados, firmas y procesos criptográficos operativos
  • Automatización DevOps avanzada en plataformas corporativas

 

Escenarios no recomendados

No se recomienda el uso de Python en los siguientes escenarios y condiciones por considerarse que no son los escenarios donde Python tiene una superioridad técnica y queda en clara desventaja frente a otras tecnologías.

Lógica de negocio core

No se recomienda el uso de Python para la implementación de servicios cuya lógica de negocio principal debe mantenerse consistente, gobernada y reutilizable dentro del ecosistema de la ADA. Para la realización de estos servicios debe priorizarse un desarrollo homogéneo que permita centralizar o reutilizar estos componentes en otros proyectos frente a otros criterios técnicos.

Sistemas transaccionales

No se recomienda el uso de Python para la implementación de sistemas transaccionales por considerarse operaciones críticas para la estabilidad de un sistema de información y debe poder garantizarse su correcto mantenimiento, aunque el equipo de desarrollo cambie.  La operación transaccional tiene además que ser compatible con los sistemas de auditoría y observabilidad que actualmente se están diseñando.

Arquitecturas event-driven intensivas (Kafka heavy)

No se recomienda el uso de Python para la implementación de servicios que hagan un uso intenso de eventos ya que otros ecosistemas están más maduros y alineados con las necesidades operativas y de fiabilidad de este tipo de sistemas dentro de la ADA.

Servicios que requieran gobernanza estricta (observabilidad, resiliencia, compliance)

No se recomienda el uso de Python para la implementación de servicios que deban ser sometidos a requisitos fuertes de auditoría, compliance, observabilidad estándar, resiliencia, políticas de seguridad y operación homogéneas, porque la heterogeneidad tecnológica incrementa el coste de control y reduce la verificabilidad de los estándares.

 

Escenarios compartidos

Se identifican una serie de escenarios compartidos donde se autoriza tanto el uso de Python como de otros lenguajes como Java. Para estos casos de uso será la dirección de proyecto quien, en base a las circunstancias asociadas al desarrollo, decida que lenguaje va a utilizar. Durante la fase de validación de la arquitectura, la oficina de arquitectura emitirá sus propias recomendaciones que siempre estarán justificadas con criterios técnicos y respetarán lo que se dice en este manual y lo que está definido en las normas y estándares de la ADA.

Debe tenerse en cuenta antes de elegir Python para estos escenarios, que actualmente la ADA considera Java como su lenguaje principal y en estos momentos no existen, ni está planificada la construcción de activos y aceleradores en Python. Será el equipo de desarrollo tendrá que asumir la construcción total de todos los componentes necesarios sin la ayuda de activos o aceleradores.

APIs REST “clásicas” sin IA

Se permitirá el uso tanto de Python para la implementación de servicios que publiquen un  API REST convencional sin componentes de IA/ML ya que en este caso no existe una ventaja técnica clara para ninguno de los dos lenguajes.

Microservicios sin una lógica de negocio pesada

Se permitirá tanto el uso de Python para la implementación de microservicios que no procesen una lógica de negocio pesada. Un ejemplo de este tipo de microservicios son los servicios CRUD de acceso a datos.

Microservicios middleware

Para aquellos casos de uso donde la Oficina de Interoperabilidad autorice el uso de microservicios middleware en vez del bus de interoperabilidad corporativo NEXO, se permitirá la implementación de estos microservicios en Python siempre que estos microservicios no lleven lógica de negocio asociada.

 

Requisitos de cumplimiento (Guardarraíles)

Todo proyecto o aplicación que haga uso de Python por estar aprobado su uso para su caso particular deberá cumplir de manera estricta los requisitos establecidos en esta sección. 

Estos guardarraíles constituyen condiciones necesarias para garantizar la seguridad, interoperabilidad, sostenibilidad y alineación de las aplicaciones implementadas con Python con el modelo de soluciones tecnológicas de la Junta de Andalucía, arquitecturas de referencias y normas, pautas y estándares.

El incumplimiento de cualquiera de los siguientes requisitos podrá invalidar la aprobación del uso de Python, siendo necesaria una revisión del informe preceptivo.

APIs e integración

  • El acceso a sistemas corporativos se realizará exclusivamente a través del API Manager corporativo (NEXO):
    • Si un sistema corporativo no dispone aún de una API publicada en NEXO (API Manager), se realizará accediendo a los servicios de interoperabilidad publicados en NEXO (Bus de interoperabilidad).
    • En el caso en el que el sistema corporativo no disponga ni API en NEXO (API Manager), ni servicio de interoperabilidad publicado en NEXO (Bus de interoperabilidad), se permitirá realizar una integración punto a punto, o con los mecanismos que defina el sistema corporativo previa autorización de la Oficina de Interoperabilidad.
  • Toda escritura de datos de dominios externos a la aplicación deberá realizarse mediante APIs corporativas o a través del BUS de interoperabilidad (NEXO).
  • Se prohíbe el uso de procedimientos almacenados o triggers para integración con otros sistemas que no sean a través de APIs publicadas y gobernadas.

Seguridad

  • Todas las aplicaciones Python deberán integrarse obligatoriamente con el mecanismo corporativo de autenticación y autorización centralizado.
  • La autorización de usuarios se gestionará mediante roles y políticas centralizadas (RBAC/ABAC), evitando configuraciones locales no alineadas.
  • Se deberá garantizar el principio de mínimo privilegio en el acceso a la base de datos y componentes relacionados.
  • El almacenamiento de credenciales o secretos dentro de un sistema implementado con Python queda prohibido; estos deberán gestionarse mediante el repositorio seguro de secretos corporativo.

Observabilidad

  • Las aplicaciones desarrolladas en Python deberán generar logs estructurados, métricas y trazas y según las normas publicadas de observabilidad y la arquitectura de referencia de observabilidad.
  • Será obligatorio incluir identificadores de correlación para posibilitar el seguimiento de extremo a extremo en procesos distribuidos.
  • La aplicación deberá reportar métricas de disponibilidad, rendimiento y errores, conforme a los estándares definidos en la arquitectura de referencia de observabilidad y sus normas asociadas.

Ciclo de vida y despliegue

El equipo de Impulso DevSecOps proveerá nuevos pipelines para la construcción y despliegue de aplicaciones Python:

  • Los componentes basados en Python deberán ser exportados y versionados en el repositorio de código corporativo, junto con la documentación técnica asociada que será definida para aplicaciones Python.
  • Todo despliegue deberá realizarse mediante pipelines de integración y entrega continua (CI/CD) aprobados y publicados por DevSecOps, con trazabilidad completa del proceso.
  • Se deberán ejecutar compilación y subida al repositorio, pruebas unitarias, de mutación, análisis de calidad de código, análisis de dependencias (si existiesen) y análisis de seguridad antes de cualquier paso a producción.
  • No se permitirá la promoción manual de aplicaciones Python sin registro ni control.