Comparación de los patrones de despliegue centralizados y distribuidos - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Comparación de los patrones de despliegue centralizados y distribuidos

Puede implementar la OPA en un patrón de implementación centralizado o distribuido, y el método ideal para una aplicación multiusuario depende del caso de uso. Para ver ejemplos de estos patrones, consulte las APIs secciones Uso de un PDP centralizado con PEPs APIs y Uso de un PDP distribuido y PEPs demás, que aparecen anteriormente en esta guía. Como OPA se puede implementar como un daemon en un sistema operativo o contenedor, se puede implementar de varias maneras para admitir una aplicación multiusuario.

En un patrón de despliegue centralizado, OPA se despliega como un contenedor o un daemon con su RESTful API disponible para otros servicios de la aplicación. Cuando un servicio requiere una decisión de la OPA, se recurre a la RESTful API central de la OPA para que tome esta decisión. Este enfoque es fácil de implementar y mantener, ya que solo hay una implementación de OPA. La desventaja de este enfoque es que no proporciona ningún mecanismo para mantener la separación de los datos de los inquilinos. Como la OPA solo se implementa una vez, todos los datos de los inquilinos que se utilicen en una decisión de la OPA, incluidos los datos externos a los que haga referencia la OPA, deben estar disponibles para la OPA. Puede mantener el aislamiento de los datos de los inquilinos con este enfoque, pero debe respetarse mediante la estructura de políticas y documentos de la OPA o mediante el acceso a datos externos. Un patrón de despliegue centralizado también requiere una latencia más alta, ya que cada decisión de autorización debe realizar una llamada a la RESTful API a otro servicio.

En un patrón de despliegue distribuido, OPA se implementa como un contenedor o un daemon junto con los servicios de la aplicación multiusuario. Se puede implementar como un contenedor lateral o como un daemon que se ejecute localmente en el sistema operativo. Para obtener una decisión de la OPA, el servicio realiza una llamada a la RESTful API a la implementación local de la OPA. (Como la OPA se puede implementar como un paquete Go, puedes usar Go de forma nativa para recuperar una decisión en lugar de usar una llamada a la RESTful API). A diferencia del patrón de implementación centralizada, el patrón distribuido requiere un esfuerzo mucho más sólido de implementación, mantenimiento y actualización, ya que está presente en múltiples áreas de la aplicación. Una ventaja del patrón de despliegue distribuido es la capacidad de mantener el aislamiento de los datos de los inquilinos, especialmente en el caso de las aplicaciones que utilizan un modelo SaaS aislado. Los datos específicos del inquilino se pueden aislar en las implementaciones de OPA específicas para ese inquilino, ya que la OPA en un modelo distribuido se implementa junto con el inquilino. Además, un patrón de despliegue distribuido tiene una latencia mucho menor que un patrón de despliegue centralizado, ya que cada decisión de autorización se puede tomar de forma local.

Cuando elija un patrón de despliegue de OPA en su aplicación multiusuario, asegúrese de evaluar los criterios más importantes para su aplicación. Si su aplicación multiusuario es sensible a la latencia, un patrón de implementación distribuido ofrece un mejor rendimiento a costa de una implementación y un mantenimiento más complejos. Si bien es posible gestionar parte de esta complejidad mediante DevOps la automatización, sigue requiriendo un esfuerzo adicional en comparación con un patrón de despliegue centralizado.

Si su aplicación multiusuario usa un modelo SaaS aislado, puede usar un patrón de implementación de OPA distribuido para imitar el enfoque aislado de los datos de los inquilinos. Esto se debe a que cuando OPA se ejecuta junto con cada servicio de aplicaciones específico del inquilino, puede personalizar cada implementación de OPA para que solo contenga los datos asociados a ese inquilino. No es posible aislar los datos de la OPA en un patrón de implementación de la OPA centralizado. Si utiliza un patrón de implementación centralizado o un patrón distribuido junto con un modelo SaaS agrupado, el aislamiento de los datos de los inquilinos debe mantenerse en el modelo de documentos de la OPA.