Blog de Amazon Web Services (AWS)

AWS el hyperscaler de SAP RISE con la más amplia variedad de servicios disponibles para SAP Business Technology Platform

Por Rosmar Torres Mora, Solutions Architect, Amazon Web Services

Muchas empresas con sistemas SAP están buscando migrar sus cargas a la nube con la visión de tomar los beneficios que esta presenta, como su alta disponibilidad, agilidad a la hora de desplegar sus cargas, elasticidad, modelo de precios, además de adoptar las nuevas formas en que SAP esta presentado su oferta de valor para permitir a sus clientes seguir creciendo e innovando, como RISE WITH SAP y Business Technology Platform (BTP).

Dado que dicha oferta de SAP va asociada al despliegue de estas cargas en un proveedor de nube, la pregunta en muchos casos de parte de los clientes es, ¿Cual proveedor de nube presenta mayores beneficios?, y a eso una respuesta es, AWS es el hyperscaler con mayor soporte y extensión Global, gracias a su despliegue de infraestructura y a la disponibilidad de servicios SAP en más regiones. Además, AWS es el proveedor cloud con mayor cantidad de servicios en la Business Technology Platform (BTP) de SAP a la fecha, con un total actual de 82 servicios para distintos propósitos, donde 19 de ellos se ejecutan únicamente en AWS y de estos, 8 son la oferta servicios AI de SAP, entre ellos:

  • Intelligent intercompany reconciliation(ICR) que complementa a la solución de S/4HANA “Intercompany matching and reconciliation” (ICMR) para conciliación de transacciones entre diferentes compañías dentro de una misma organización, un proceso de complejidad alta normalmente en los clientes, ICR permite a través del uso de machine learning aprender de la data histórica intercompany e inferir que documentos pertenecen a las mismas transacciones y que deben ser agrupadas.
  • Data Attribute Recomendation, permite entrenar modelos con data propia y recomendar valores para atributos de nuevos registros (ejemplos de uso: clasificación ABC de productos, o categorización de artículos).
  • Business Entity Recognition: servicio que usaremos en nuestro ejemplo y que permite procesar texto no estructurado e identificar entidades, pero ¿qué es una entidad?, una entidad en el en el procesamiento de lenguaje natural se refiere a conceptos que pueden ser identificados en un texto, como personas, organizaciones, lugares o fechas.

Estas razones convierten a AWS en la opción más completa y segura donde podrás disponer de tus cargas tanto de RISE como de BTP dentro de la misma nube, incluso en la misma región y adicionalmente mejorar tu postura de seguridad con AWS al usar PrivateLink entre tus cargas, permitiendo que el tráfico ocurra dentro del backbone de AWS y así conseguir una comunicación más segura, sin exposición a internet y con menor latencia.

RISE with SAP, es la oferta que agrupa ERP en la nube, inteligencia y ejecución de procesos, teniendo como core SAP S/4 HANA Cloud, gestionado por SAP, quien mantiene la responsabilidad del Service Level Agreement (SLA), operación en la nube y soporte técnico para RISE. Con RISE, a diferencia de los sistemas on-premise se toma como estrategia mantener el core limpio de personalizaciones y usar SAP Business Technology Platform (BTP) como extensión para añadir capacidades totalmente adaptadas al cliente o consumir servicios creados por SAP para distintos propósitos como analítica, inteligencia artificial, desarrollo de aplicaciones, automatización e integración.

RISE with SAP y SAP BTP, permite elegir las regiones de AWS donde estas implementaciones serán ubicadas. Las regiones de AWS son ubicaciones físicas distribuidas por el mundo donde son agrupados múltiples centros de datos llamados zonas de disponibilidad, cada región consta de al menos 3 zonas de disponibilidad que tiene alimentación, refrigeración y seguridad física independientes y está conectada a través de redes redundantes con latencia de un digito en milisegundos.

En el siguiente post probaremos llamar a uno de los servicios de SAP BTP que está disponible solo en AWS y lo llamaremos desde una instancia ubicada también en AWS, simulando el mismo tipo de conectividad que tendría un ambiente SAP con BTP dentro de nuestra nube.

Visión general de la solución

Tanto RISE with SAP como BTP son servicios desplegados y gestionados por SAP dentro de la nube de AWS, uno de los mecanismos de conectividad entre ambos es a través del uso de AWS PrivateLink (ofertado en SAP como SAP private link service) lo que permite establecer una conexión sin uso de IPs públicas y sin exponer su información a internet, para otras opciones de conectividad ver el siguiente link.

Esta sería la arquitectura de alto nivel del escenario que queremos ejemplificar:

Tutorial

Pre-requisitos

  • Cuenta en SAP BTP cockpit
  • Cuenta AWS

Creación de instancia de BTP Trial

En el caso de nuestro ejemplo usaremos el servicio Business Entity Recognition de SAP BTP este servicio cuenta con los siguientes modelos pre-entrenados para la extracción de entidades (cada uno con distintos soportes de idiomas):

  • sap_address_entity
  • sap_email_business_entity
  • sap_generic_entities
  • sap_invoice_header

Aunque tambien puedes crear modelos custom, en nuestro ejemplo usaremos el modelo sap_generic_entities.

La primera tarea a realizar es la creación de la instancia de BTP → Business Entity Recognition, para esto deberás seguir las instrucciones del siguiente tutorial.

Como resultado de este tutorial vas a tener una instancia para el servicio.

Y habrás generado una key que podrás descargar.

El archivo tendrá el siguiente json:

De este output necesitaremos rescatar la url, y dentro del json “uaa” buscar la url, el clientid y clientsecret

Pasos dentro de cuenta AWS

Para efectos de prueba llamaremos a los servicios de BTP usando una jupyter notebook y llamaremos a los endpoints públicos de BTP, esto nos permitirá medir los tiempos de respuesta y compararlos con la ejecución desde un ambiente local usando Insomnia como herramienta para llamar a las APIs.

1- Dentro de la cuenta de AWS ir a sagemaker

2- Allí crea una notebook siguiendo los pasos del link

3- Crea un nuevo CondaPython 3

4- Crea un bloque con el siguiente código, en este definimos el user, password, uaa_url y realizamos login, al imprimir veremos el json que retorna donde está contenido el access_token que usaremos.

import requests
from requests.auth import HTTPBasicAuth
api_url = "<uaa_url>/oauth/token?grant_type=client_credentials"user = '<clientid>'
password = '<clientsecret>'res = requests.post(api_url, auth=HTTPBasicAuth(user, password))

print(res.json())
auth_token = res.json()['access_token']

5- Creamos otro bloque de código donde definimos el header con el token para la autenticación además de la data que le enviaremos al endpoint que crea un job para la inferencia de las entidades

headers = {'Authorization': f'Bearer {auth_token}'}

data = {

   "text":"Order number 12345678 Order type Sales Force Order abcdef Date 01/01/2001 Customer number 9876543 Customer service 123/ 456 6789 E-mail eshop@gmail.com  Your Reference: Order receipt confirmation Customer address 508 W. St Margarets St. Brooklyn, NY 11228 Billing address 508 W. St Margarets St. Brooklyn, NY 11228 Ordered by Fenton Moon Shipping type: UPS 2nd Day Air PM Terms of payment: 30 Days Net due  Your message: Item Material   Description Qty.        Price per Unit Net  steel        gray / Length 12 mm / 1 35.00         35.00  Gross Amount USD 35.00 Freight/ packaging USD 15.00 Tax 2 % USD 1 Tax 4 % USD 2 Total amount USD 53",

   "modelName":"sap_invoice_header",

   "modelVersion":"1"

}

r = requests.post('<url>/api/v1/inference/jobs', json=data, headers=headers)

seconds_response_job_creation = r.elapsed.total_seconds()

print(seconds_response_job_creation )

Respuesta en 0.632376 segundos.

6- Generamos un bloque de código para la recuperación de resultado job, para esto se invoca la api pasando el id del job como parte de la url ‘<url>api/v1/inference/jobs/’+job_id, esto nos trae en la respuesta las entidades identificadas.

job_id = r.json()['data']['id']

url = '<url>/api/v1/inference/jobs/'+job_id
headers = {'Authorization': f'Bearer {auth_token}'}
data = {}

r = requests.get(url, json=data, headers=headers)

print(r.json())
segundos_get_job = r.elapsed.total_seconds()
print(segundos_get_job)

Respuesta en 0.204205 segundos.

7- Al ejecutar estos mismos pasos con insomnia los tiempos obtenidos son:

Creación del job  1.01 s.

Recuperación de resultados de job 303ms.

Limpieza

Elimine todos los recursos antes de cancelar la suscripción dentro del SAP BTP cockpit. Y elimine los recursos creados en la cuenta de AWS, en este caso la jupyter notebook generada para la prueba.

Conclusión

En este blog se explicaron algunos beneficios de elegir AWS como hyperscaler:

  • AWS es el único hyperscaler con una región que cuenta con servicios BTP de SAP en Latinoamérica, específicamente Sao Paulo.
  • Al correr sus instancias SAP RISE en AWS puede ampliar su ERP con las 81 extensiones de SAP BTP disponibles en AWS manteniendo una conectividad entre cargas con mejor performance y más segura ya que estas se moverán adentro del backbone de AWS, esto cobra más sentido aun cuando parte de las cargas de trabajo son para procesamiento de datos como sería el caso de extraer data de SAP usando en BTP los servicios de data intelligence, Data Sphere o SAP Analytics Cloud.
  • La extensión de la infraestructura de AWS le permite elegir entre múltiples regiones la que más capacidades le otorgue manteniendo el perfomance de su operación.
  • Gracias a la distribución de infraestructura de AWS con sus múltiples Zonas de disponibilidad por región, SAP puede ofrecer un “short distance Disaster recovery” lo que permite un RTO = 0 para todas las regiones en las que SAP ofrece los servicios de RISE with SAP.

Adicionalmente a lo comentado en este artículo, es importante mencionar que AWS es el único hyperscaler que provee procesadores a SAP para su base de dato en memoria en la nube, permitiendo a SAP optimizar costos de cómputo y que sus clientes se beneficien de esta eficiencia. Con AWS Graviton, SAP ha visto hasta un 30% de mejora de rendimiento de cómputo para cargas de trabajo analíticas y redujo sus costos de cómputo en un 15%.

Si quiere leer más sobre este tema en el siguiente blog puede encontrar 10 razones para correr BTP en AWS.

Autora

Rosmar Torres es Arquitecto de Soluciones en Amazon Web Services, basado en Santiago, Chile.

Revisores

César Páez Román Senior Migrations Solutions Architect para Amazon Web Services, basado en Santiago de Chile.

Damian Maldonado Gonzalez es Senior Specialist Solution Architect, SAP on AWS, basado en Colombia. Con cerca de 22 años manejando proyectos de tecnología y 17 específicamente en SAP.