Mostrando las entradas con la etiqueta Azure. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Azure. Mostrar todas las entradas

miércoles, septiembre 09, 2009

Cloud Computing I


“The cloud is a virtualization of resources that maintains and
manages itself” Kevin Harting




Entre las nuevas tendencias en IT surge un nuevo paradigma para implementar aplicaciones
empresariales y servicios que difiere del conocido datacenter centralizado donde tenemos todas nuestras aplicaciones, bases de datos, servidores de email, de archivos etc.
Aprovechando las ventajas provistas por las mejoras en las redes de datos, virtualización, sistemas de almacenamiento entre otros este nuevo paradigma nos permite implementar aplicaciones dentro de una infraestructura no centralizada y compartida, básicamente está es la filosofía de cloud computing.
En este artículo veremos los conceptos básicos de este paradigma, describiremos aplicaciones y servicios provistos por los mayores proveedores de software y aspectos relacionados con los pros y contras de implementar en la nube aplicaciones empresariales.

¿Que es cloud computing?

“..moving computing and data away from the desktop and the portable PC and simple displaying the results of computing that take place in a centralized location and is then transmitted via the Internet on the user’s screen” John Markoff

Probablemente el término “cloud” surge de la representación que se hace a Internet en los diagramas de redes.
Conceptualmente cloud computing proporciona un nivel alto de abstracción de la nube en donde los desarrolladores y administrador implementan aplicaciones utilizando frameworks y herramientas que los abstrae de la implementación física como puede ser detalles de routers, servidores, unidades de almacenamiento etc.
Por lo tanto el usuario del servicio no necesita preocuparse de cómo se implementa esas tecnologías y como se mantienen. Solo se preocupa de como acceder a sus aplicaciones desde cualquier lado y su nivel de disponibilidad para satisfacer los requisitos de las aplicaciones.
En realidad con cloud computing se puede acceder a funciones y servicios con necesidades de cambios dinámicos.
Los frameworks que se utilizan en la nube deben proveer los siguientes mecanismos:

- Automonitoreo
- Registración y descubrimiento de recursos.
- Definición de acuerdos de nivel de servicio SLA.
- Reconfiguración automática.

Desde el punto de vista del usuario en la nube los recursos están virtualizados y se mantienen y administran por si mismos.

Mitos sobre la nube

Cloud computing no es grid computing, unit computing ni software-as-services SaaS,
pero estos paradigmas pueden utiliza una red en la nube como forma de implementarlos
El cloud no solamente es un cambio tecnológico sino también de negocio tanto para
los clientes que la utilicen como los proveedores de software e infraestructura tecnológica.
Gartner publicó los 8 mitos más comunes con respecto a cloud computing

Mito 1: Cloud computing es un infraestructura o una arquitectura.
Mito 2: Cada suministrador tendrá una nube diferente.
Mito 3: SaaS es la nube.
Mito 4: Cloud computing es una nueva revolución.
Mito 5: Toda los sistemas remotos son Cloud computing.
Mito 6: Internet y la Web con la nube.
Mito 7: Todo estará en la nube.
Mito 8: Cloud computing elimina las redes privadas.

Soluciones implementadas

Existen varios proveedores que ya poseen sistemas implementados en la nube y que están disponibles para ser utilizados en forma gratuita o mediante el pago de un costo según las caracteristicas suministradas.
Ejemplo de ellos son los servicios de Amazon mediante salesforce.com, LiveMesh de Microsoft o Moozy de EMC para compartir recursos, App Engine de Google o Blue Cloud de IBM son algunas de las aternativas disponibles. Para mayor detalle ver referencias.
La NASA tiene disponible "NEBULA Cloud computing platform", que son servicios basados en Cloud Computing que provee componenetes open sources y sistemas self-services.

Conclusiones

Cloud computing es el resultado de la evolución de la tecnología aplicada a la implementación de infraestructura hardware y estándares abiertos para interoperar sistemas.
Sobre la nube se pueden implementar servicios como software-as-service que son productos software expuestos en la nube como servicios como por ejemplo Google Docs o Microsoft Office Online, platform-as-service como por ejemplo los sistemas multi-petabyte de EMC Atmos o SimpleDB de Amazon.
Otro aspecto importante es el cambio en el modelo licenciamiento pasando de un sistema de compra o alquiler de la infraestructura a pago por uso.
Grandes proveedores como Micrososft, Google, Amazon, IBM, HP, Citrix o EMC entre otros ofrecen servicios en la nube, con carácteristicas muy variadas.
Por lo tanto es importante considerar a la hora de utilizar servicios en la nube los aspectos de seguridad, privacidad, disponibilidad, fiabilidad y cumplimiento de estádares aplicables a sistemas implementados en la infraestructura dentro de la compañía.

Con appistry http://www.appistry.com/ se pueden generar redes Cloud Computing locales.

Referencias

IBM Blue Cloud
http://www.deitel.com/ResourceCenters/Programming/CloudComputing/CloudComputingIBMsBlueCloud/tabid/3063/Default.aspx

Microsoft Cloud Computing Tools
http://msdn.microsoft.com/en-us/vstudio/cc972640.aspx

Amazon Cloud Services
http://aws.amazon.com/products/

EMC Cloud Optimized Storage
http://www.emc.com/products/category/subcategory/cloud-optimized-storage.htm

Google Cloud App Engine
http://code.google.com/intl/en/appengine/

NEBULA Cloud computing platform
http://nebula.nasa.gov/



¿Es socio del MUG?, www.mug.org.ar

viernes, mayo 29, 2009

¿(Des) Orientación a Servicios?

Un tema analizado en el Microsoft Architecture Day de Buenos Aires es un tema que a mi criterio resulta polémicos, la aplicación de SOA en la práctica.

SOA y su aplicación práctica en grandes empresas, según el disertante SOA no tuvo el exito esperado debido a multiples factores. La misma conclusión expresó Wilson Chelsa de Microsoft pero desde el punto de vista de retorno de inversión, modelos de beneficios etc.

- SOA resultó ser muy complejo de implemementar.
- La industria en general no se alineo a la filosofía de SOA en sus procesos de negocio.
- Requiere gran inversión en el cambio cultural de la organización.
- En sus etapas iniciales no existían servicios laterales de importancia cmo registry, governance etc.
- Las implemetaciones muchas veces no tuvieron los resultados esperados porque fue muy dificil adecuar la cultura del negocio a la folosofía SOA.
- Aún continua la discusión acerca de la granularidad de los servicios, pues si es muy granular se corre el riesgo de no exponer servicios de negocio, poco granular surge que es muy poco reutilizable. En mi experiencia los servicios expuestos muy pocas veces son reutilzables.
- El tema del versionado también está es discusión.
- El desempeño de las implementaciones SOA resultaron ser muy costosas por su grano grueso, muchas capas, gran overhead en sistemas laterales.

El disertante introdujo el concepto de (Des)SOA:
- Reducir la cantidad de capas lógicas y físicas.
- Framework como helpers externos en lugar de contenedores.

Actualmente la nueva arquitectura de Microsoft sobre sistemas distribuídos en clouds Azure, utilizan un modelo con menos capas en donde expone los servicios en forma independiente. Evidentemente es un tema para discutir en profundidad.

Este tema da para un interesante discusión.

miércoles, mayo 27, 2009

Microsoft Architecture Day

En el día de hoy se hizo la reunión de la Comunidad de Arquitectos de Microsoft. Fue una reunión muy interesante en la que gente de Microsoft y otra empreass presentaron sus experiencias en soluciones de sistemas utilizando las últimas tecnologías de Microsoft,también se presentaron nuevos feactures de tecnologias como Windows 7 , WPF , Siverligh etc. Los asistentes pudieron preserciar presentaciones como:

Andres Vetori y equipo de VMBC Caso de exito de un sistema con .Net 3.5 SP1, WCF, Retina.Net ,Geneva framework, AOP, IVR con Speech Server 2007 entre otra tecnologías. Fue un proyecto contruido utilizando la metodología Agile / Scrum.
Como herramientas de desarrollo utilizaron Team System con integración continua en base a Team Build y deploy con scripts de MSDeploy.

Conclusiones generadas del proyecto:
- Es deseable automatizar las implementaciones en producción
- Adaptar la metodología de desarrollo a las particularidades del proyecto.
- El merge continuo no es siempre justificable.
- Se debe tener un adecuado control de los builds y que objetos contiene cada iteración.

Recomendaciones para un exito de un proyecto de este tipo:
- Virtualización (Hiper-V).
- Equipo con buen señority.
- No reiventar la rueda (patrones, frameworks etc).
- No subestimar el test (automzatizarlo y controlar su correcta ejecución como entregable de la iteración).
- No olvidarse del monitoreo.
- Tener un adecuado procedimiento de control de cambios.
- Mantener una cultura de motivación para hacer las cosas bien hechas.
- Crear una cultura de calidad continua.

Diego Gonzales de lagash presentó una visió de las tendencias en arquitectura de software

- Arquitecturas elásticas
- Base de datos no relacionales.
- (des) orientación a servicios.
- Programación dinámica.

En el tema de arquitectura elástica se vió consideraciones sobre escalabilidad en ambientes Cloud, planificación de arquitectura y modelos de arquitectura.
Diego presentó el concepto de que las arquituras deben ser emergentes y no prescriptivas, es decir se deben diseñar en conjunto con el desarrollo del sistema.

Dentro del tema de escalabilidad horizontal existe el nuevo paradigma de Microsoft que es Azure y el sistema operativo Windows Azure, creado para aplicaciones distribuidas en infraestructura Cloud. La escalabilidad vertical ya está llegando a su límite.
Para scar provecho a este nuevo paradigma es necesario especialización en programación concurrente.
Respecto a la planificación de arquitectura Diego mencionó que en muchas ocaciones conviene que el diseño de la arquitectura sea emergente en vez de prescriptiva, haciendo participar al aquipo de desarrollo ensu definición, esto tiene la ventaja de motivarlos en la creación de la misma y el desarollo del sistema y permite un mejor refinamiento mientra se crea el sistema.
Planteó conceptos de modelado de arquitecturas que pueden ser centralizadas o satelitales.

Un tema que recordó es que por lo general es una desición por defecto que la base de datos a utilizar sea del tipo relacional, esto no siempre es una correcta elección, hay casos donde se requieren datos temporarios, no es tan exigible que sea transaccional en donde la RDBMS no resultan ser lo más apropiado. Ejemplos de uso de este tipo de base de datos son aplicaciones del tipo redes sociales como Facebook.
Las bases de datos no relacionales tienen entre otras las siguientes características:

- key-value db y document db.
- Buen soporte para lenguajes dinámicos.
- Facil cambio en la aplicación.
- Datos a-normalizados. etc.

Productos: SQL Services, Drizzle,Amazon WebServices etc.