Alelujan's Blog

Cloud Computing

Cloud computing o computación en la nube, es un paradigma que permite ofrecer servicios de computación a través de Internet. La “nube” es una metáfora de Internet; normalmente, estos servicios están localizados en los centros de datos (Cloud o nubes), permitiendo el acceso a los servicios sin necesidad de contar localmente con la infraestructura requerida (poder de cómputo, capacidad de almacenamiento, etc.), y, normalmente, también sin requerir que el usuario tenga el conocimiento o la experiencia para utilizar estos servicios.

Cloud computing es un nuevo modelo de prestación de servicios de negocio y tecnología, que permite al usuario acceder a un catálogo de servicios estandarizados y responder a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado.

El cambio paradigmático que ofrece cloud computing es que permite aumentar el número de servicios basados en la web. Esto genera beneficios tanto para los proveedores, que pueden ofrecer, de forma más rápida y eficiente, un mayor número de servicios, como para los usuarios que tienen la posibilidad de acceder a ellos, disfrutando de la ‘transparencia’ e inmediatez del sistema y de un modelo de pago por consumo.

Cloud computing consigue aportar estas ventajas, apoyándose sobre una infraestructura tecnológica dinámica que se caracteriza, entre otros factores, por un alto grado de automatización, una rápida movilización de los recursos, una elevada capacidad de adaptación para atender a una demanda variable, así como virtualización avanzada y un precio flexible en función del consumo realizado.

Beneficios

  • Integración probada de servicios Web. Por su naturaleza, la tecnología de Cloud Computing se puede integrar con mucha mayor facilidad y rapidez con el resto de sus aplicaciones empresariales (tanto software tradicional como Cloud Computing basado en infraestructuras), ya sean desarrolladas de manera interna o externa.
  • Prestación de servicios a nivel mundial. Proporcionan mayor capacidad de adaptación, recuperación de desastres completa y reducción al mínimo de los tiempos de inactividad.
  • Una infraestructura 100% de Cloud Computing no necesita instalar ningún tipo de hardware, así que requerirá de menor inversión por su simplicidad.
  • Implementación más rápida y con menos riesgos. Sus aplicaciones en tecnología de Cloud Computing estarán disponibles en cuestión de semanas o meses, incluso con un nivel considerable de personalización o integración.
  • Actualizaciones automáticas que no afectan negativamente a los recursos de TI.Las personalizaciones e integraciones se conservan automáticamente durante la actualización.
  • Contribuye al uso eficiente de la energía. La energía consumida es sólo la necesaria, reduciendo notablemente el desperdicio.

Desventajas

  • La centralización de las aplicaciones y el almacenamiento de los datos origina una dependencia de los proveedores de servicios.

Ejemplos de esta tecnología:

  • Google con su oferta de Google App Engine: Con el que la compañía ofrece ,durante un periodo de prueba, 500 Megabytes de espacio en internet y suficiente capacidad y procesamiento de carga como para servir cinco millones de páginas al mes, con 10 Gigabits por segundo al día de transmisión por cada aplicación. Una oferta bastante tentadora.
“Google App Engine te permite ejecutar tus aplicaciones web en la infraestructura de Google. Las aplicaciones App Engine son fáciles de crear, mantener y actualizar al ir aumentando el tráfico y las necesidades de almacenamiento de datos. Con App Engine, no necesitarás utilizar ningún servidor: sólo tendrás que subir tu aplicación para que tus usuarios puedan empezar a utilizarla”. Google App Engine.
  • Microsoft con su oferta Microsoft Azure: Servicio para el almacenamiento de ficheros, administración de servicios y computación dirigida a desarrolladores y empresas. Los desarrolladores podrán utilizar las herramientas .NET de Microsoft para desarrollar aplicaciones sobre Windows Azure.
“La arquitectura y el entorno Windows® Azure™ dará a los desarrolladores capacidades integrales de diseño, desarrollo e implementación a través de aplicaciones y servicios con el uso de herramientas y tecnologías familiares”. Microsoft.
  • Vmware con su oferta vCloud: Con la que los usuarios tienen la seguridad de que las aplicaciones pueden gestionarse, moverse y que pueden correr en la Cloud de la misma forma que lo hacen internamente.
“VMware anuncia la Iniciativa vCloud para cloud computing empresarial con el soporte de líderes de la industria como BT, Rackspace, SAVVIS, Sungard, T-Systems o Verizone Business, entre otros”. Vmware
Referencia:

Programación Orientada a Aspectos (POA)

Definicion: La programación orientada a aspectos (POA) es una nueva metodología de programación que aspira a soportar la separación de competencias para los aspectos tales como la sincronización, la distribución, el manejo de errores, la optimización de la memoria, la gestión de seguridad y otros. Es decir, que intenta separar los componentes y los aspectos unos de otros, proporcionando mecanismos que hagan posible abstraerlos y componerlos para formar todo el sistema. En definitiva, lo que se persigue es implementar una aplicación de forma eficiente y fácil de entender.

El principal objetivo de la POA es la separación de las funcionalidades dentro del sistema:

  • Por un lado funcionalidades comunes utilizadas a lo largo de la aplicación.
  • Por otro lado, las funcionalidades propias de cada módulo.

Una ayuda para comprender mejor esta definición es definir que es aspecto:

“Un aspecto es una unidad modular que se dispersa por la estructura de otras unidades funcionales. Los aspectos existen tanto en la etapa de diseño como en la de implementación. Un aspecto de diseño es una unidad modular del diseño que se entremezcla en la estructura de otras partes del diseño. Un aspecto de programa o de código es una unidad modular del programa que aparece en otras unidades modulares del programa”.(Gregor Kiczales)

Los aspectos capturan conceptos técnicos tales como la persistencia, la gestión de errores, la entronización o la comunicación de procesos; estos aspectos se escriben utilizando lenguajes de descripción de aspectos especiales. Los lenguajes orientados a aspectos definen una nueva unidad de programación de software para encapsular las funcionalidades que cruzan todo el código. Además, estos lenguajes deben soportar la separación de aspectos como la distribución, el manejo de errores, la optimización de memoria, la gestión de seguridad, la persistencia. De todas formas, estos conceptos no son totalmente independientes, y está claro que hay una relación entre los componentes y los aspectos, y que por lo tanto, el código de los componentes y de estas nuevas unidades de programación tienen que interactuar de alguna manera. Para que ambos (aspectos y componentes) se puedan mezclar, deben tener algunos puntos comunes, que son los que se conocen como puntos de enlace, y debe haber algún modo de mezclarlos. Los puntos de enlace son una clase especial de interfaz entre los aspectos y los módulos del lenguaje de componentes. Son los lugares del código en los que éste se puede aumentar con comportamientos adicionales. Estos comportamientos se especifican en los aspectos. El encargado de realizar este proceso de mezcla se conoce como tejedor (del término inglés weaver).

El tejedor se encarga de mezclar los diferentes mecanismos de abstracción y composición que aparecen en los lenguajes de aspectos y componentes ayudándose de los puntos de enlace. Para tener un programa orientado a aspectos necesitamos definir los siguientes elementos:

  • Un lenguaje para definir la funcionalidad básica. Este lenguaje se conoce como lenguaje base. Suele ser un lenguaje de propósito general, tal como C++ o Java. En general, se podrían utilizar también lenguajes no imperativos.
  • Uno o varios lenguajes de aspectos. El lenguaje de aspectos define la forma de los aspectos – por ejemplo, los aspectos de AspectJ se programan de forma muy parecida a las clases.
  • Un tejedor de aspectos. El tejedor se encargará de combinar los lenguajes. El proceso de mezcla se puede retrasar para hacerse en tiempo de ejecución, o hacerse en tiempo de compilación.

En las aplicaciones orientadas a aspectos necesitamos ademas del compilador,un tejedor, que nos combine el código que implementa la funcionalidad básica, con los distintos módulos que implementan los aspectos, pudiendo estar cada aspecto codificado con un lenguaje distinto.

Los aspectos describen apéndices al comportamiento de los objetos. Hacen referencia a las clases de los objetos y definen en qué punto se han de colocar estos apéndices. Puntos de enlace que pueden ser tanto métodos como asignaciones de variables. Las clases y los aspectos se pueden entrelazar de dos formas distintas:

  1. Entrelazado estático:El entrelazado estático implica modificar el código fuente de una clase insertando sentencias en estos puntos de enlace. Es decir, que el código del aspecto se introduce en el de la clase. Una ventaja que tiene es que evita que el nivel de abstracción que se introduce con la programación orientada a aspectos se derive en un impacto negativo en el rendimiento de la aplicación. Pero, también tiene sus desventajas ya que es bastante difícil identificar los aspectos en el código una vez que éste ya se ha tejido, lo cual implica que si se desea adaptar o reemplazar los aspectos de forma dinámica en tiempo de ejecución nos encontremos con un problema de eficiencia, e incluso imposible de resolver a veces.
  2. Entrelazado dinámico: Una requisito para el entrelazado dinámico es que los aspectos existan de forma explícita tanto en tiempo de compilación como en tiempo de ejecución. Para conseguir esto, tanto los aspectos como las estructuras entrelazadas se deben modelar como objetos y deben mantenerse en el ejecutable. Dado un interfaz de reflexión, el tejedor es capaz de añadir, adaptar y borrar aspectos de forma dinámica, si así se desea, durante la ejecución.  Al igual que el anterior entrelazado este  enfoque presenta una desventaja basada en el rendimiento; ya que se utiliza más memoria con la generación de todas estas subclases.

Referencias:

.http://www.lafhis.dc.uba.ar/~ferto/docs/tesis.pdf

http://es.wikipedia.org/wiki/Programación_Orientada_a_Aspectos

http://iie.fing.edu.uy/~josej/docs/Programacion%20Orientada%20Aspectos%20-%20Jose%20Joskowicz.pdf

La Arquitectura Orientada a Servicios (SOA)

Definición: El SOA proporciona una metodología y un marco de trabajo para documentar los procesos del negocio y poder dar soporte técnico a las actividades de integración y consolidación de otros servicios bajo estándares internacionales que pueden ser re-utilizados y combinados para adaptarse a los posibles cambios del negocio.SOA es una arquitectura desacoplada de componentes de software que proveen funciones específicas (proveedor) y que pueden ser invocadas por otros componentes (consumidor) independientemente de la plataforma en que se encuentren ambos; el SOA hace que un negocio pueda agregar nuevas características y servicios sin tener que crearlas desde cero. En su lugar, pueden ser agregadas o modificadas según sea necesario, por lo que es simple y eficaz para ampliar el negocio. Debido a que muchos productos y servicios son ofrecidos a través de la Web, la mayoría de las implementaciones de soluciones SOA son basadas en Web.

Existen diversos estándares relacionados a los servicios web como por ejemplo:

  • XML
  • HTTP
  • SOAP
  • WSDL
  • UDDI
Hay que considerar, sin embargo, que un sistema SOA no necesariamente necesita utilizar estos estándares para ser “orientado a servicios” ya que se puede implementar cualquier tecnología basado en servicios.
Es recomendable tener un ambiente SOA debido a la disponibilidad de recursos entre diferentes servicios

Ventajas:

  • Integración._ya que contiene estándares abierto mejorando así la comunicación entre sí.
  • Menor complejidad en las Tecnologías de la Información._ al ser reutilizables y poder integrarse sin problema, se simplifica las herramientas de integración de aplicaciones
  • Los Web Service pueden ser utilizados por distintas aplicaciones
  • Reducción de costos de mantenimiento y actualización de las aplicaciones
  • Permite cambios en las infraestructuras TI

Con una Arquitectura Orientada a Servicios, los usuarios ya no tienen que iniciar sesión en varios sistemas, buscar los datos relevantes e integrar los resultados manualmente. Los datos de las actividades de los procesos de negocios se entregan como un servicio integrado, en una sola aplicación, en una sola pantalla, con un solo inicio de sesión, mientras que en las arquitecturas de TI tradicionales, las actividades del proceso de negocios, las aplicaciones y los datos con frecuencia están encerrados en silos independientes e incompatibles que son caros de mantener y dejan a los usuarios la necesidad de navegar entre redes, aplicaciones y bases de datos independientes para realizar tareas de negocios concretas; como se muestra en la siguiente figura:


http://www.techterms.com/definition/soa

http://soaction.sisorg.com.mx/definicion.html

http://www.itprofessionals.es/detalle_noticia.asp?Id=427

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

agosto 2017
L M X J V S D
« Sep    
 123456
78910111213
14151617181920
21222324252627
28293031