Que es la Virtualizaci贸n de Servicios

Para los que ya tenemos mas experiencia en la arquitectura SOA y comprendemos perfectamente que es un Enterprise Service Bus este tema las ha de parecer muy simple pero para todos aquellos que no han tenido la oportunidad de adentrarse a los obscuros territorios de lo que es SOA les tengo buenas noticias pues en esta Entrada hablaremos que es la virtualizaci贸n.

Para empezar virtualizar viene de la palabra virtual como cuando hablamos de maquinas virtuales, pues esto es algo parecido pues un servicio virtual no es mas que una mascara que lo 煤nico que hace es exponer un WebService que por dentro hace la llamada a otro u otros WebServices para dar una funcionalidad nuevo o extendida.

Imaginemos que estamos desarrollando una aplicaci贸n m贸vil para una empresa la cual dentro de sus sistemas ya tiene un conjunto de webservices desarrollados para las principales tareas que realiza, sin embargo hasta el momento no tiene ning煤n desarrollo para m贸viles y le preocupa la seguridad ya que al exponer sus webservices tema que alguna persona mal intencionada pueda entrar y hacer alg煤n mal.

Por lo que desarrollo un WebService para que el usuario se Autentifique cuando entre a la aplicaci贸n, sin embargo eso no es todo, tambi茅n requiere que cuando el usuario realice alguna acci贸n se validen sus privilegios para denegar cualquier acci贸n no permita para ese usuario.

Otro punto importante es que el cliente quiere que cuando una persona intente hacer una acci贸n no autorizada o falle en el Login se registre tal acci贸n para poder auditar y detectar situaciones sospechosas.

El cliente nos brinda los siguientes WebServices con los que debemos dise帽ar nuestra aplicaci贸n:

SecurityService 聽//WebServices que expone el sistema de seguridad centralizado.
  • login(usuario, password) : boolean:聽Operaci贸n聽que autentifica al usuario y nos dice indica si el login fue exitoso o no.
  • autorization(usuario,password, accion聽):boolean: Operaci贸n que nos indica si un usuario tiene privilegios para realizar una acci贸n determinada, El par谩metro acci贸n representa el ID de la operaci贸n a ejecutar.
AuditService //WebService que expone el sistema de Auditoria Inform谩tica
  • intentoAccion(usuario, accion, DateTime, autorizationResult): void:聽Operaci贸n que registra cuando una acci贸n es solicitada
ClienteService //WebService para consultar los datos del cliente
  • consultaDatosPersonales(idCliente): Cliente: Operaci贸n que regresa los datos聽b谩sicos聽del聽cliente como nombre,apellido, sexo, CURP, etc.
  • 聽consultaSaldo(idCliente): double:聽Operaci贸n que regresa el saldo del cliente

Desarrollando la soluci贸n

Imaginemos que la aplicaci贸n lo 煤nico que hace es consultar los datos del cliente y su saldo sin embargo no todos los usuarios pueden saber el saldo de un cliente por lo que el servicio se separa y se consulta de forma independiente.

Lo聽primero que se nos ocurre es hacer una pantalla de login y autenticarnos con el servicio de login pasandole el nombre de usuario y password. Si el login se realiza correctamente entramos a la aplicaci贸n, sin embargo el cliente quiere que cuando un login falle o se de correctamente notifiquemos el evento al departamento de Auditoria mediante la operaci贸n de intentoAccion y pesarla el ID de la operaci贸n Login y la fecha y hora del intento.

Esto desde luego nos implicar铆a dos llamadas a Webservices, uno para Login y otro para Auditoria:

LoginNoVirtual

聽Fig.1: Muestra la comunicaci贸n con los dos webservices de forma separada.

Para la pantalla de datos del cliente tendr铆amos que implementar nuevamente un sistema de llamadas donde primero verificar铆amos si tenemos privilegios para leer los datos del cliente con el webservices de autorizacion, de darse los privilegios entonces se consulta el Webservices de consultaDatosPerosnales, seguido de consultar los privilegios para autorizar al usuario para leer el saldo del cliente y consultar el servicio de 聽consultaSaldo.聽Nuevamente si alguna autorizaci贸n falla es requerido notificar al departamento de Auditoria mediante el Webservices聽intentoAccion.聽Este esquema quedar铆a algo a s铆.

ConsultaClientNoVirtual

聽Fig.2: Fugura que muestra el n煤mero de acci贸n a realizar solo para completar la consulta de los datos del cliente y saldo.

Un esquema con Virtualizaci贸n:

Una vez que examinamos como聽tendr铆amos聽que desarrollar una aplicaci贸n sin virtualizaci贸n podemos empezar a examinar el esquema con virtualizaci贸n.

La primera acci贸n que deber铆amos hacer es crear un proxy que cumpla casi exactamente con el contrato(WSDL) que sirve como punto de entrada a nuestra aplicaci贸n pero que ademas de esto le estar铆amos pasando los datos de autenticaci贸n y autorizaci贸n en el Header del mensaje SOAP de tal forma que el proxy tomara el header lo enviara al servicio de聽autorization聽en caso de autorizaci贸n continuara con la llamada al servicio de聽consultaDatosPerosnales聽y regresara el resultado.Pero en caso de haber fallado la autorizaci贸n llamar铆a al servicio de Auditoria y regresar铆a un Throw para indicar que el servicio ha fallado por seguridad.

La aplicaci贸n se viera de esta manera para el escenario de consulta de datos del suscriptor:

ConsultaClienteVirtual

Fig.3: Escenario con virtualizaci贸n

Si nos damos cuenta en este escenario ya solo tenemos una invocaci贸n a un 煤nico servicio el cual se encarga de realizar las operaciones previas a la consulta de los datos del cliente y tambi茅n notificar al departamento de Auditoria en caso de haber fallado la autorizaci贸n.

Este enfoque tiene las siguientes ventajas:

  • Se reduce el numero de llamadas al servidor
  • Aumentan los tiempos de respuesta
  • Las operaciones se realizan desde la misma infraestructura del cliente por lo que la seguridad es mucho mejor.
  • El implementar un Enterprice Service Bus nos da la cualidad de poder medir el performance (KPI o Key Performance Indicator).
  • Definir los acuerdos de nivel de servicio o SLA.

One thought to “Que es la Virtualizaci贸n de Servicios”

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *