5.- Cómputo en la nube y servicio

5.1 Conceptos generales

W3C define un “servicio web” como “un sistema de software diseñado para soportar la interacción interoperable de máquina a máquina en una red“. Cuenta con una interfaz descrita en un formato procesable por máquina (específicamente Servicios Web de lenguaje de descripción, conocido por el acrónimo WSDL). Otros sistemas interactúan con el servicio Web de una manera prescrita por su descripción utilizando mensajes SOAP, típicamente transportados utilizando HTTP con una serialización XML en conjunción con otros estándares relacionados con la Web 

Servicios Web 

Además W3C indica que podemos identificar dos clases principales de servicios Web, servicios Web REST-compliant, en la que el objetivo principal del servicio es de manipular representaciones XML de recursos web utilizando un conjunto uniforme de “operacionesn stateless”; y servicios Web arbitrariOS , en el que el servicio puede exponer un conjunto arbitrario de operaciones 
Básicamente, un servicio web (webservice) es un sistema de entrada/salida, al que se le puede pasar una serie de parámetros con el fin de obtener un resultado en concreto y recuperarlo para ser mostrado en una aplicación. 

Ejemplo servicios Web 

La tecnología de los servicios web es relativamente reciente, y está basada en el protocolo SOAP (Simple Object Access Protocol), consistente en un simple documento XML que habilita el intercambio de información vía HTTP entre diversas aplicaciones. 
La ventaja de este protocolo radica en una comunicación efectiva independiente del lenguaje de programación que defina a la aplicación. 
WSDL (Web Services Description Language) es el nombre del lenguaje utilizado para describir un servicio web. El mismo utiliza el formato wsdl como extensión para sus archivos. Estos últimos son referenciados desde una URL, e incluyen una serie de métodos y operaciones que serán llamados desde la aplicación central del lado del cliente. 
De ahi la necesidad de Servicios Web en un mundo Internet. De la misma manera que el software de conectividad de componentes permite hacer uso de la funcionalidad contenida dentro de otra pieza de software en otro computador, los Servicios Web usan los protocolos de Internet para proveer una infraestructura de componentes para el desarrollo de componentes distribuidos que funcionen sobre la red pública. En pocas palabras, los Servicios Web son aplicaciones modulares que pueden ser descritas, localizadas, e invocadas sobre una red a través de un intercambio estandarizado de mensajes XML. 
REPORT THIS AD 
Definidos por nuevos estándares – como SOAP (Simpla Object Access Protocol), WSDL (Web Services Description Language), y UDDI (Universal Discovery Description and Integration) – los Servicios Web ofrecen un nuevo modelo para la creación de aplicaciones e-Business a partir de módulos reutilizables de software a los que se tiene acceso a través de la Web (Figura 6.3). 

Proveedores destacables de servicios web 
Amazon Web Services. Amazon Web Services ofrece varios servicios de informática basada en la nube, incluida una amplia selección de instancias informáticas cuyo escalado se puede aumentar y reducir automáticamente para satisfacer las necesidades de su aplicación, un servicio de equilibrio de carga gestionado y escritorios totalmente gestionados en la nube. 
Google Apps for Education. Con Google Apps for Education, todo se guarda automáticamente en la nube, lo que representa una tecnología 100% web. Esto significa que se puede acceder (y editar) a todos los mensajes de correo electrónico, documentos, calendarios y sitios con prácticamente cualquier dispositivo móvil o tableta, en cualquier momento y en cualquier luga. 
iCloud- Ahora tienes la libertad de trabajar con el archivo que quieras, en el dispositivo que quieras. Con iCloud Drive puedes almacenar de manera segura todas tus presentaciones, hojas de cálculo, archivos PDF, imágenes y todo tipo de documentos en iCloud, y acceder a ellos desde tu iPhone, iPad, iPod touch, Mac o PC. Tienes 5 GB de almacenamiento gratuito en iCloud, y puedes obtener otros planes de almacenamiento desde $12 al mes. 
Oracle. Oracle Web Services Manager ofrece una solución completa y fácil de usar para la gestión de la política y la seguridad de la infraestructura de servicios. Proporciona visibilidad y control de las políticas a través de una interfaz de administración centralizada que ofrece Oracle Enterprise Manager. 
Salesforce. Servicios de atención al cliente en la nuble 
Meltwater GroupMeltwater ayuda a las empresas a generar crecimiento y construir marcas. La plataforma de inteligencia on-line de Meltwater analiza a diario miles de millones de documentos digitales para extraer de ellos información empresarial oportuna que ayuda a más de 20.000 empresas a conocer sus mercados, a favorecer la interacción de sus clientes y a dominar el nuevo entorno de la empresa en medios sociales. Con oficinas en 27 países, Meltwater ofrece un servicio global pero personalizado, basado en la experiencia local. 
PUBLICIDAD 

5.2 Tipos de Servicios en la nube


Los servicios de cloud computing están cambiando la forma en que las empresas y las instituciones públicas utilizan la tecnología de la información. Hoy en día, los servicios en la nube están disponibles para satisfacer prácticamente todas las necesidades de TI. Aunque hay una gran variedad de servicios de cloud computing, todos tienen ciertas funciones y ventajas básicas en común, y todos se pueden clasificar en unos pocos tipos de servicios en la nube. 

Funciones y ventajas de los servicios de cloud computing 
En la actualidad la mayoría de las personas ha oído hablar de los servicios de cloud computing, pero ¿en qué consisten? Aunque las características de los servicios en la nube pueden variar, una definición de cloud computing identifica las principales características y ventajas comunes a todas las nubes. 

Desde el punto de vista de los usuarios de los servicios, los servicios de cloud computing tienen estas características principales: 
El proveedor los aloja y realiza su mantenimiento. El proveedor de alojamiento en la nube compra, aloja y realiza el mantenimiento del hardware y el software necesarios en sus propias instalaciones. Los usuarios del servicio evitan los gastos de capital y los quebraderos de cabeza relacionados con el mantenimiento que tendrían si desarrollaran el servicio de manera local. 

Autoservicio a través de una interfaz web. Los usuarios del servicio pueden iniciar funciones del servicio específicas y aumentar o disminuir su nivel de uso del servicio por medio de una interfaz web con poca o ninguna interacción con el proveedor del servicio. 
Pago por uso. Los usuarios del servicio pagan solo por la cantidad de servicio que utilizan. Esto puede suponer un importante ahorro de costes en comparación con el enfoque tradicional de desarrollar capacidades de TI in situ orientadas a escenarios de uso máximo y que luego esa capacidad se infrautilice la mayoría del tiempo. 
Escalabilidad prácticamente ilimitada. Los proveedores de servicios de cloud computing suelen tener la infraestructura necesaria para ofrecer su servicio a gran escala. Para los usuarios de servicios de cloud computing, esto significa que la nube puede adaptarse fácilmente al crecimiento empresarial o a los picos periódicos de uso de los servicios. 

Tipos de servicios de cloud computing 
La amplia gama de servicios ofrecidos por las empresas de cloud computing se puede clasificar en tres tipos básicos: 
Infraestructura como servicio (IaaS). IaaS proporciona a los usuarios acceso a los recursos informáticos primarios, como la capacidad de procesamiento, la capacidad de almacenamiento de datos y la conexión en red, en el contexto de un centro de datos seguro. 

Plataforma como servicio (PaaS). Orientadas a los equipos de desarrollo de software, las ofertas de PaaS proporcionan infraestructura informática y de almacenamiento y también un nivel de plataforma de desarrollo, con componentes tales como servidores web, sistemas de gestión de bases de datos, y kits de desarrollo de software (SDK) para varios lenguajes de programación. 
Software como servicio (SaaS). Los proveedores de SaaS ofrecen servicios de nivel de aplicación adaptados a una amplia variedad de necesidades empresariales, como la gestión de las relaciones con clientes (CRM), la automatización de marketing o el análisis empresarial. 

Aceleración de los servicios de cloud computing 
Independientemente del tipo de servicios de cloud computing que utilice, una cosa es cierta: se intercambian grandes cantidades de datos a través de Internet entre los usuarios finales y los centros de datos del proveedor de la nube. 

Por este motivo, sea cual sea el tipo de servicios en la nube que utilice, Akamai puede ayudar a su empresa a disfrutar de una mejor experiencia de la nube y obtener mayores beneficios de su inversión en servicios en la nube. 

Aprovechando nuestra propia red en la nube de alcance mundial, con más de 216 000 servidores de aceleración de aplicaciones en más de 120 países, Akamai permite a nuestros clientes disfrutar de un alto rendimiento de manera uniforme en los servicios de IaaS, PaaS y SaaS que utilizan, aumentando con ello los índices de adopción y la productividad de los usuarios. En cuanto a cloud computing móvil, también ofrecemos servicios de transformación y optimización automáticas de contenido, de manera que los usuarios finales pueden acceder a la nube desde cualquier dispositivo, desde cualquier lugar y en cualquier momento. 


5.3 Patrones de diseño. 


¿Qué son los patrones de diseño? 
Los patrones de diseño son soluciones para problemas típicos y recurrentesque nos podemos encontrar a la hora de desarrollar una aplicación. 
Aunque nuestra aplicación sea única, tendrá partes comunes con otras aplicaciones: acceso a datos, creación de objetos, operaciones entre sistemas etc. En lugar de reinventar la rueda, podemos solucionar problemas utilizando algún patrón, ya que son soluciones probadas y documentadas por multitud de programadores. 

¿Por qué usar patrones de diseño? 
Como ya vimos en el artículo sobre principios de diseño, si queremos desarrollar aplicaciones robustas y fáciles de mantener, debemos cumplir ciertas "reglas". Lo pongo entre comillas porque aunque estas reglas de diseño son recomendables (muy recomendables), no son obligatorias. Siempre podemos decidir no aplicarlas. Aunque si no lo hacemos, hay que ser conscientes de la razón de no aplicarlas y de sus consecuencias. 
Los patrones de diseño nos ayudan a cumplir muchos de estos principios o reglas de diseño. Programación SOLID, control de cohesión y acoplamiento o reutilización de código son algunos de los beneficios que podemos conseguir al utilizar patrones. 

¿Cuántos patrones de diseño existen? ¿Tengo qué conocerlos todos? 
Patrones de diseño hay muchos. Muchísimos. Y siguen apareciendo patrones nuevos cada poco tiempo. El desarrollo de aplicaciones es una disciplina en constante cambio. Por tanto los problemas a los que nos enfrentamos los desarrolladores también cambian. Así que las herramientas utilizadas, también se van actualizando y mejorando. 

Es imposible conocer todos los patrones de diseño. Lo más útil es tener un catalogo de patrones que podamos consultar. A la hora de desarrollar una aplicación, podremos consultar nuestro catálogo buscando patrones que nos ayuden a solucionar problemas de diseño concretos. 
Algunos ejemplos de catálogos podemos encontrarlos en OODesign, en la Wikipedia, o el ya famoso libro Design Patterns: Elements of Reusable Object-Oriented Software, cuyos autores son conocidos como La banda de los cuatro. 

¿Qué tipos de patrones existen? 
Existen diversas maneras de agrupar los patrones de diseño. Quizá la más extendida es agruparlos según su propósito. En este caso tendríamos las siguientes categorías: 
Patrones creacionales: utilizados para instanciar objetos, y así separar la implementación del cliente de la de los objetos que se utilizan. Con ellos intentamos separar la lógica de creación de objetos y encapsularla. 
Patrones de comportamiento: se utilizan a la hora de definir como las clases y objetos interaccionan entre ellos. 
Patrones estructurales: utilizados para crear clases u objetos que incluidos dentro de estructuras más complejas. 

5.4 Estándares en servicios


Los Servicios Web se basan en estándares y protocolos abiertos. A continuación se describen los estándares de forma breve: 

XML (Extensible Markup Language): Es el formato estándar para los datos que se vayan a intercambiar; basado en marcas y etiquetas, es muy frecuente el uso de este metalenguaje para crear otros lenguajes con entidad propia. Su simpleza, facilita su uso fundamentalmente en el intercambio de una gran variedad de datos. 
SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure Call): Protocolos sobre los que se establece el intercambio; Este protocolo permite realizar intercambios de información entre diversas aplicaciones situadas en entornos que están descentralizados y se encuentran distribuidas. puede atravesar cortafuegos corporativos y ofrece la interoperabilidad de las aplicaciones. 
WSDL (Web Services Description Language): Es el estándar que se utiliza para describir un Servicio Web. Es una descripción basada en XML de los requisitos funcionales necesarios para establecer una comunicación con los servicios Web; permite especificar cómo deben representarse los parámetros, tanto de entrada como de salida, en una invocación de tipo externo al servicio. 
Web Services Protocol Stack: Así se denomina al conjunto de servicios y protocolos de los servicios Web. Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), o SMTP (Simple UDDI (Universal Description, Discovery and Integration): Protocolo para publicar la información de los servicios Web. Permite comprobar qué servicios web están disponibles. WS-Security (Web Service Security): Protocolo de seguridad aceptado como estándar por OASIS. Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados. 
CC/PP: Capacidad de Composición/Perfiles de Preferencia (Composite Capability/Preference Profiles). Es un sistema basado en RDF, que permite estandarizar la forma de definir y transmitir información sobre las características de los dispositivos y las preferencias del usuario. 
DOM: Modelo de Objetos del Documento (Document Object Model). Es una plataforma que proporciona un conjunto estándar de objetos a través de la cual se pueden crear documentos HTML y XML, navegar por su estructura y, modificar, añadir y borrar tanto elementos como contenidos. 
EXI: El Intercambio de XML Eficiente (Efficient XML Interchange) es un formato para la representación muy compacta del conjunto de información de XML, que pretende optimizar tanto el rendimiento, como la utilización de los recursos de forma simultánea. 
URI: Identificador de Recurso Uniforme (Uniform Resource Identifiers). Los URI son cadenas que funcionan como identificadores globales que hacen referencia a recursos en la Web tales como documentos, imágenes, archivos descargables, servicios, buzones de correo electrónico y otros. 

5.5 Plataformas tecnológicas 

Arquitectura de la información web: es la disciplina encargada de la organización y estructuración de la información en los websites. 
Servidor web: es un programa diseñado para transferir hipertextos, páginas web o páginas HTML (HyperText Markup Language). Estos son textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores musicales. El programa implementa el protocolo HTTP (HyperText Transfer Protocol) que pertenece a la capa de aplicación del modelo OSI. Ejecutado en un ordenador, el servidor web se mantiene a la espera de peticiones por parte de un navegador web y responde a estas peticiones adecuadamente, mediante una página web que se exhibirá en el navegador o mostrando un mensaje si se detectó algún error. 
A manera de ejemplo, si escribimos www.google.com en nuestro navegador, éste hará una petición HTTP al servidor de dicha dirección. Acto seguido, el servidor responderá al cliente enviando el código HTML de la página. Luego el cliente recibe el código, lo interpreta y lo exhibe en pantalla. La interpretación del código HTML consiste en mostrar las fuentes, los colores y la disposición de los textos y objetos de la página. Por su parte, el servidor se limita a transferir el código de la página sin realizar interpretación alguna. 
Servicio DNS: en castellano se denomina sistema de nombres de dominio. Se trata de un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a internet o a una red privada. Asocia información variada con nombres de dominios asignados a cada uno de los participantes. Su función más importante es "traducir" nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red, con la finalidad de localizar y direccionar estos equipos mundialmente. Otra función clave de los protocolos DNS es la asignación de nombres a direcciones IP. Cada sitio web cuenta con una dirección IP, pero para tener acceso a ellas no digitamos dichas direcciones sino su nombre precedido de www y con una terminación como .org, .com, etc. La mayoría de usuarios acceden a los sitios web empleando estos nombres y no las direcciones IP. 
Sistemas operativos: quizá es el programa más complejo e importante para una computadora. El sistema operativo "despierta" a la PC y le hace reconocer al CPU, la memoria, el teclado, el sistema de vídeo, la impresora y las unidades de disco. También facilita la comunicación para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación. 
Los sistemas operativos más conocidos son: DOS, Windows 3.1, OS/2, Mac OS y UNIX. 
Sistema gestor de la base de datos: es un conjunto de programas no visibles por el usuario final que se encargan de la privacidad, integridad y seguridad de los datos, así como de la interacción con el sistema operativo. Permite la interfaz entre los datos, los programas que los manejan y los usuarios finales. 
Navegadores web: son softwares elaborados para la búsqueda de páginas web y mostrar en pantalla la lista de opciones de búsqueda. Las búsquedas abarcan textos y gráficos. Los principales navegadores son: Google Chrome, Mozilla firefox, Opera, Avanti browser, Internet Explorer, Netscape y Safari. 


5.6 Seguridad e interoperabilidad. 

La característica principal de un Servicio Web es que le permite cierto grado de flexibilidad, accesibilidad yinteroperabilidad. Esto permite que los desarrolladores abstraigan la lógica de negocio y se centren en el desarrollo del servicio sin preocuparse de los criterios anteriormente citados. 
Como objetivos básicos a cubrir por la seguridad de un servicio WEB 
El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) define interoperabilidad como la habilidad de dos o más sistemas o componentes para intercambiar información y utilizar la información intercambiada. 
La característica principal de un Servicio Web es que le permite cierto grado de flexibilidad, accesibilidad y interoperabilidad. Esto permite que los desarrolladores abstraigan la lógica de negocio y se centren en el desarrollo del servicio sin preocuparse de los criterios anteriormente citados. 
Como objetivos básicos a cubrir por la seguridad de un servicio WEB 
Es necesario asegurar que existe una autenticación mutua entre el cliente que accede a los servicios web y el proveedor de dichos servicios. 
Se debe mantener una política de autorización del acceso a recursos y, más importante, a operaciones y procesos en un entorno en el que debe administrarse y controlarse el acceso de clientes, proveedores, vendedores, competidores y los posibles ataques que reciban de personal externo. 
Mantener al cliente identificado, de manera que se identifique una sola vez y pueda acceder a servicios en diversos sistemas, sin que resulte necesario identificarse nuevamente en cada uno de ellos. 
Controlar y asegurar la confidencialidad de los datos intercambiados, ya que SOAP no es capaz de cifrar la información, la cual viaja en claro a través de la red.Es necesario asegurar la comunicación con algún estándar que permita crear un canal seguro de comunicación. El estándar ya firmemente establecido de creación de canales seguros SSL y el cifrado de partes específicas de documentos mediante el cifrado XML son las direcciones que se están siguiendo en este terreno. 
Se debe asegurar la integridad de los datos, de manera que estén protegidos a los posibles ataques o a manipulaciones fortuitas. En este campo se está utilizando el estándar de firmas XMLDSIG, que permiten la firma de partes específicas del documento XML. 
Comprobar que no se repudian las operaciones, para lo cual es necesario mantener firmas en XML. 
A continuación se ofrece una tabla resumen con los los principales elementos de seguridad dentro de los servicios Web, así como las recomendaciones de madeja al respecto. 
Seguridad, , Recomendación, Elemento, Mecanisno 
Autenticación de servicios, HTTP autenticación, , No,  
SSL x509 autenticación, No, ,  
WS-Security- tokens, Si, ,  
Autnticación de usuarios, SAML, Si, ,  
Integridad, SSL, Si, ,  
Ws-Signature, , ,  
No repudio, WS/Signature, Si, ,  
WS-Adressing, , ,  
Logs, , ,  
Confidencialidad, SSL, Si, ,  
WS-Encriyption, , ,  
Políticas de servicos, WS-Policy, Si, ,  
REPORT THIS AD 
Los protocolos de seguridad para servicios web comienzan por la especificación WS-Security que define una arquitectura basada en señales para comunicaciones seguras. Existen seis principales especificaciones de componentes construidas sobre esa base: 
WS-Policy y sus especificaciones relacionadas, que definen las reglas de políticas sobre la interacción de servicios. 
WS-Trust, que define el modelo confiable para el intercambio seguro. 
WS-Privacy, que define cómo se mantiene la privacidad de las informaciones. 
WS-Secure Conversation, que define cómo establecer una sesión protegida entre servicios para intercambiar datos usando las reglas definidas en WS-Policy, WS-Trust, y WS-Privacy. 
WS-Federation, que define las reglas de identidad distribuida y de la gestión de esa identidad. 
WS-Authorization, que maneja el procesamiento de autorización para acceder a los datos e intercambiarlos. 
Además del modelo de seguridad, existen las especificaciones específicas de las aplicaciones, incluyendo el lenguaje de ejecución de procesos empresariales para servicios web (BPEL4WS), que define las operaciones de flujos de trabajo, y WS-Transaction y WS-Coordination, que funcionan en conjunto para manejar el procesamiento distribuido de transacciones. 
Actualmente está en desarrollo una especificación para la gestión distribuida de servicios web que trata de la gestión administrativa de software de todos los servicios y de la arquitectura orientada a servicios. Por fin, existen especificaciones para interfaces de usuario (WS-InteractiveApplications) y acceso remoto a servicios web (WS-RemotePortals). 
Las especificaciones y protocolos para servicios web aún están siendo definidas y sólo están comenzando a explicar cómo los servicios deben interactuar. Sin embargo, no pueden abarcar todas las situaciones y combinaciones posibles. Así, el Web Services Interoperability Group (WS-I), constituido por prácticamente todos los grandes y pequeños proveedores involucrados en el desarrollo de los servicios web, se encargó de la tarea de desarrollar estudios de caso, ejemplos de aplicaciones, casos de ejemplo de implementación y herramientas de prueba para asegurar que esos estándares y especificaciones realmente funcionarán los unos con los otros, independientemente de las implementaciones de productos de los proveedores. 
WS-I ha definido su primer Basic Profile 1.0 para servicios web y también ha lanzado sus casos de ejemplo, ejemplos de aplicaciones y herramientas de prueba para evaluar y comparar resultados de varias implementaciones de acuerdo con los casos de ejemplo. 
Además de WS-I, una buena parte del trabajo de los estándares está siendo realizado por la Organización para el Avance de Estándares de Informaciones Estructuradas (OASIS), el World Wide Web Consortium (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF). 






Comentarios

Entradas populares de este blog

4.- Programación del lado del servidor

2.- HTML, XML y CSS