Lección 7: Internet Communication Manager (ICM)
Las nuevas aplicaciones de SAP basadas en Business Server Pages (BSPs) y servicios SOAP se implementan en una compañía en el contexto de cambiar a una arquitectura moderna de IT y orientada a servicios.
Como miembros del equipo de administración de sistemas, es nuestra tarea configurar los sistemas SAP en virtud de estos requerimientos. Para esto, necesitamos tener una visión del proceso central para las conexiones de Intranet e Internet, el Internet Communication Manager (ICM).
2.7.1. Arquitectura del Proceso ICM
Algunos aspectos importantes son:
- Soporte para protocolos Web estándar tales como HTTP, HTTPS, WebDAV, SOAP y SMTP.
- Salida en formatos Web estándar tales como HTML, XML y XSLT.
- Completa integración dentro del entorno SAP (desarrollo, administración, concepto de autorización, monitoreo y protocolos de comunicación).
El SAP Web Application Server puede funcionar tanto como un Web server (rol de servidor) y como un Web client (rol de cliente). El rol de servidor, en el cual el SAP Web AS acepta y procesa solicitudes HTTP de cualquier cliente Web (tal como un navegador Web) y envía de vuelta una respuesta HTTP, el cual es el caso que veremos en esta lección.
Dentro de un work process, el Internet Communication Framwork (ICF) provee el entorno para manejar las solicitudes HTTP. El ICF es el puente entre el kernel del sistema SAP y el programa creado en ABAP.
Desde la versión 6.10 de SAP Web AS, los work processes pueden generar directamente contenido web-compatible de tal forma que pueden ser enviados a un navegador web mediante el ICM. Una manera de crear contenido de ese tipo es utilizar aplicaciones con Business Server Pages (BSPs), las cuales son desarrolladas en el sistema SAP utilizando como herramienta la transacción SE80.
Desde el punto de vista técnico, El proceso ICM está separado (icman a nivel sistema operativo) y es iniciado y monitoreado por el dispatcher de ABAP. La tarea del ICM es asegurar que el sistema SAP pueda comunicarse con el mundo exterior (usando HTTP, HTTPS y SMTP).
En el caso del rol de servidor web, puede procesar solicitudes que llegan desde Internet mediante URLs con el servidor y puerto para el cual el ICM está escuchando. El ICM luego llama al local handler apropiado, dependiendo de la URL.
El proceso ICM utiliza threads (hilos) de ejecución para procesar la carga de trabajo en paralelo. Los componentes del ICM son:
- Thread control: este thread recibe la solicitud TCP/IP entrante y crea (o despierta) un worker thread del pool de threads para procesar la solicitud.
- Worker Thread: este thread maneja las solicitudes y respuestas para una conexión. Un worker thread contiene un administrador I/O para las entradas y salidas de red, y varios plug-ins para los diferentes protocolos soportados.
- Watchdog: normalmente, un worker thread espera por la respuesta (ya sea que fuese el cliente o el servidor); si ocurre un timeout, el watchdog toma control sobre la tarea que está esperando la respuesta. El worker thread luego puede ser utilizado para otras solicitudes.
- Signar Handler: procesa las señales que son enviadas por el sistema operativo u otro proceso (tal como el ABAP dispatcher).
- Connection Info: esta tabla contiene información sobre las conexiones de red existentes.
- Memory Pipes: estos son objetos de comunicación basados en memoria que permite la transferencia de datos entre el ICM y el work process ABAP.
El ICM usa plug-ins para implementar varios protocolos de comunicación. Los siguientes protocolos pueden ser usados inmediatamente luego de la instalación del SAP Web AS:
HTTP
HTTPS
SMTP
2.7.2. Internet Server Cache (ISC)
El internet server cache (ICS) es una parte del ICM que es importante para la performance. Almacena objetos HTTP(S) antes de que sean enviados al navegador Web. La próxima solicitud puede ser encontrada directamente desde el ISC, mientras el tiempo de expiración no haya vencido, lo cual acelera significativamente el acceso.
Algunos aspectos del ISC:
- Jerarquía de dos niveles: cuando se almacenan objetos, las ventajas de la velocidad de la memoria principal (cache de memoria) y la capacidad de almacenamiento (cache de disco) son utilizadas.
- Cacheo Dinámico: los productos tradicionales son basados en proxis HTTP y generalmente ofrecen cacheo de contenido estático únicamente, tal como las imágenes. El ISC puede almacenar en cache contenido dinámico tal como las páginas JSP o BSP.
- Cacheo Activo: La aplicación tiene control total sobre la actualización de los objetos que se encuentran en cache, por lo que debe asegurar que estén actualizados.
- Cacheo UFO: solicitudes inválidas (UnFound Objects) que generan situaciones de error en el servidor de aplicación o la base de datos son directamente rechazadas, de esta manera el sistema queda protegido contra solicitudes invalidas o malintencionadas.
- Cacheo dependiente de navegador Web: Los desarrolladores de un BSP pueden definir si su aplicación es dependiente del tipo de navegador web. Si este indicador está marcado, el ISC usa los datos en el cache solamente para las solicitudes enviadas por ese tipo de navegador.
El ISC es configurado mediante los parámetros del perfil icm/HTTP/server_cache* y puede ser monitoreado e invalidado desde el sistema SAP.
2.7.3. Procedimiento de Inicio y Monitoreo del ICM
El parámetro del perfil rdisp/start_icman controla si un proceso ICM es también iniciado cuando un servidor de aplicación (instancia) es iniciado. Si ningún valor es especificado, el valor por defecto true (verdadero) aplica.
El ICM se configura mediante los parámetros de perfil que en su mayoría comienzan con icm/. La configuración del parámetro icm/server_port_ es de particular importancia. Este parámetro de perfil especifica el puerto utilizado para cada protocolo, así también como otras propiedades del protocolo, como el timeout.
En el sistema SAP, podemos obtener una vista rápida de los servidores de aplicación que están corriendo con un ICM mediante la vista de servidores de aplicación, transacción SM51.
Para información más detallada, tal como el ID de hilo de ejecución, podemos usar el monitor de ICM, transacción SMICM. Desde esta transacción, es posible finalizar el proceso de ICM, para esto debemos utilizar el camino de menú Administratión -> ICM y seleccionar soft termination (corresponde a una señal 2 en UNIX) o hard termination (corresponde a una señal 9 en UNIX). El dispatcher luego inicia un nuevo proceso de ICM.
Mediante la selección del menú Administration - Restart - Yes/No, controlamos si el ABAP dispatcher reinicia el ICM cuando este finaliza por un error o como se explicó recientemente por el administrador de forma manual.
La herramienta más importante para un administrador en el entorno ICM es el Monitor ICM, transacción SMICM. Tener en cuenta que los datos visualizados aquí son dependientes de la instancia donde corre el ICM, de la misma manera que la vista de work processes, en la transacción SM50.
Algunas actividades administrativas, desde la transacción SMICM, son:
- Monitorear y reiniciar el ICM.
- Configurar el nivel de traza (Goto - Trace Level - ...), los valores pueden ir de 0 a 3.
- Evaluar los archivos de traza (Goto - Trace File - ...); el sistema lee el archivo dev_icm desde el directorio work de la instancia.
- Visualización de los parámetros de perfil (Goto - Parameters - Display/Change). El ICM se configura con los parámetros de perfil. Los valores de los parámetros visualizados aplican para la instancia en la que estamos logueados. Para la documentación de los parámetros, podemos ir desde el monitor ICM (Goto - Parameters - Change y luego el botón Documentation), la transacción RZ11 y en la librería de SAP.
- Visualización de estadísticas (Goto - Statics - Display). Podemos utilizar las estadísticas para ver la cantidad de solicitudes que el ICM ha procesado desde que se inició o desde que se reiniciaron las estadísticas. El sistema también muestra información sobre la duración del procesamiento.
- Monitoreo del Cache de ICM (Goto - HTTP Server Cache - Display). El ICM server cache almacena objetos HTTP antes de ser enviados al cliente. La próxima vez que un objeto es solicitado, el contenido podrá ser enviado directamente desde el cache al cliente.
También el programa a nivel de sistema operativo icmon muestra información sobre el ICM. La llamada icmon - h muestra los parámetros que pueden usarse para este programa, el cual, también puede generar carga de trabajo.