Computacion en la nube?

Computer Rack

Cloud Computing promises to increase the velocity with which applications are deployed, increase innovation and lower costs.  Introduction to Cloud Computing Architecture. SUN

La traducción: Cloud Computing promete aumentar la velocidad de instalacion de aplicaciones, incrementar la innovacion y reducir costos. Fuente: Introduccion a la Arquitectura Cloud Computing.

En español internacional, y multidiciplinario, lo anterior significa que al utilizar la arquitectura de Cloud Computing como Amazon EC2, la instalación de los programas se facilita, y nos permite preocuparnos por factores mas sensibles de nuestras aplicaciones. Los recursos en la nube son facilmente escalables, dado a que no se depende solamente de un equipo de hardware, si no de varios, una “Granja” de equipos interconectados a manera de compartir recursos de memoria, procesamiento y almacenamiento. Esto ultimo esta basado en una particularidad de la arquitectura de Cloud Computing, que es “virtualización”

¿Pero que es Cloud Computing?

De acuerdo a SUN Cloud Computing es el uso de tecnologías de información como servicio (SaS: Software as a Service) en la red. Se define como servicios encapsulados, que tienen un API y estan disponibles a traves de la red. Esta definición incluye el uso de recursos de procesamiento y almacenamiento de datos como servicios. Cloud Computing esta basado en el principio de “Eficiencia ante todo” eficiencia que produce herramientas de alto nivel para manejar el 80% de los casos de uso para que las aplicaciones puedan ser creadas e instaladas con una facilidad impresionante.

El modelo predominante de Cloud Computing es IaaS (Infrastructure as a Service), esta tomando el mercado de TI de una forma muy rapida y concreta, debido a que brinda la ilusión de que los recursos son infinitos. La arquitectura de Cloud Computing puede ser montada sobre un Data Center privado, o uno contratado por una empresa que asume todo el riesgo de poseer la infraestructura.

Cloud Computing, incopora virtualización, instalación en demanda, software de codigo abierto, y servicios cosumidos a traves de Internet.

De estos temas estaremos hablando en los siguientes articulos sobre Cloud Computing.

Esperamos, que esta serie les sea de utilidad. Creemos que el adopatar la arquitectura de Cloud Computing, en una etapa temprana, colocara a los desarrolladores de software en la cresta de la ola, de una nueva era de Tecnologías de información.

Saludos,

Iaax Page

Ajax y Librerias Javascript

Ajax and Javascript

Ajax y librerias javascript

Ajax: Asynchronous JavaScript and XML, es un desarrollo atribuido en forma original a Microsoft, si bine quiza Microsoft jamas penso en llamarlo de esta manera, si fueron ellos los pioneros en realizar llamadas asincornas que permitian la actualizacion de cirta parte de la informacion en sitios web.

Originalmente, Ajax estaba basado en el consumo de servicios web que devolvian XML. De ahi la X de su nombre. Sin embargo JSON aparecio casi de la nada para convertirse en uno de los formatos mas importantes de nuestros tiempos.

JSON o Java Script Object Notation, como lo mencionames en el podcast de ORMs, fue desarrollado basado en YAML,

Lista de Librerias JS

Nuestras recomendaciones para la seleccion de una libreria JS es basarse en las necesidades especificas de tu desarrollo. Algunas de estas herramientas estan mas orientadas a aplicaciones Web, como lo son ExtJS, YUI y JQuery, mientras que Scriptaculous, y Prototype estan orientadas a funcionalidades esteticas.

Si nuestra necesidades es desarrollar front ends, que permitan el consumo de servicios web y presentar informacion en forma dinamica, quiza JQuery, Ext y YUI sean las mejores opciones para estos fines. Mientras que si el proposito es desarrollar efectos de presentacion, se puede optar por alguna libreria basada en Prototype, como Scriptaculous.

Mas importante que el hecho de utilizar una libreria de JS como las anteriores, es enteder su funcionamiento, para ello, lo mejor es estudiar su API, y sobre todo tener un entendimiento amplio del Document Object Model, definido por la W3C, donde tambien podemos encontrar la definicion de DTD. Es importante recalcar que recomendamos que para nuevos desarrollos se opte por usar los modelos Strict, en lugar de los transitional, ya que estos ultimos son pensados por compatibilidad hacia tecnologias antiguas, de modo tal que en un futuro todas las definiciones de DTDs Transitional quedaran obsoletas.

Herramientas ORM-Object Relational Mapping

A falta de una buena foto del puente de la presa del infiernillo, colocamos aqui una foto del emblematico Golden Gate.

San Francisco Golden Gate
San Francisco Golden Gate

Object Relational Mapping (ORM) es la herramienta que nos sirve para transformar representaciones de datos de los Sistemas de Bases de Datos Relacionales, a representaciones (Modelos) de objetos. Dado a que los RDBMS (Realational Data Base Management Systems) carecen de la fexibilidad para representar datos no escalares, como lo son arreglos, la existencia de un ORM es fundamental para el desarrollo de sistemas de software robustos y escalables.

Las herramientas ORM pues, actuan como un puente que conecta las ventajas de los RDBMS con la belleza de la representacion de estos en un lengujae Orientado a Objetos, o, dicho en otras palabras, nos lleva de la base de datos al lenguaje de programación.

El Podcast

Ventajas de los ORM

  • Ayudan a reducir el tiempo de desarrollo de software.
  • Permiten la produccion de mejor codigo.
  • No hay necesidad de saber SQL
  • Incentivan la portabilidad y escalabilidad de los programas de software.
  • Independencia de la Base de Datos

Desventajas

  • El desempeño esta ligado a la eficiencia del ORM.

Recomendaciones

¿Donde queremos estar? cuano hablamos del uso de ORMs, recomendamos que se tome en cuenta que siempre existiran exepciones, donde la latencia agregada por la libreria o framework al desempeño general del software. Por tal motivo debemos escoger una libreria o framework que nos facilite modos alternativos de acceder a datos.

Vinculos relacionados

Producido por: Iaax Page y Cesar Reyes, para RockDeveloper.com

Si te gusto este capitulo. Recuerda escuchar la serie sobre Extreme Programming en Rock Developer.

Extreme Programming Parte 3 de 3

Extreme programming parte 3 de 3
Extreme programming parte 3 de 3

Esta es la ultima entrega en nuestra serie de programacion extrema. Esperamos hayan disfrutado el contenido y sigan regresando pora mas sobre desarrollo de software en RockDeveloper, el podcast.

Programacion Extrema Parte 3 de 3

Para saber mas sobre programacion extrema no te olvides de visitar

XP Org

Y si no has escuchado los podcast anteriores de la serie, hazlo ahora en

Programacion Extrema Parte 1 de 3 y Programacion Extrema Parte 2 de 3

El podcast es producido por

Iaax Page y Cesar Reyes

Ruby On Rails

Cuello Ruby
Cuello Ruby

Me encuentro desarrollando un proyecto de Bolsa de Trabajo para la comunidad de Rock Developer. Alex Gomez y yo hemos tenido algunas charlas sobre que lenguaje y framework utilizar para el desarrollo de proyectos comunes. El se inclina por PHP y ZendFramework, yo… Prefiero estar alejado de PHP. Así pues empece ayer a estudiar Ruby y Rails, y decidí hacer la beta 1 de la bolsa de trabajo de Rock Developer en Rails.

Hasta ahora. Ruby parece ser mas poderoso que Rails y creo que tiene muchos años de futuro en el desarrollo de software, es pues algo que llego para quedarse.

El desarrollo de software ha venido creciendo a pasos agigantados, hay muchos esfuerzos de millones de personas por desarrollar las mejores tecnologías que provean no solo infraestructuras robustas, sino también agilidad en el desarrollo. RAD (Rapid Application Development) o Desarrollo Rapido de Aplicaciones, ha sido una de las áreas de mayor atención.

Pero, ¿Que determina la capacidad de hacer RAD?

Basicamente la capacidad de apoyarse en Frameworks para lenguajes de programación dinamicos como Ruby y Rails.

Ruby: Es un lenguaje de programación dinámico (Un lenguaje de programacíon dinámico es aquel lenguaje que te permite extender funcionalidad en tiempo de ejecución. Hablaremos mas sobre lenguajes dinamicos en otro artículo) creado en Japón, donde es muy usado y tiene una base de admiradores bastante grande. Algo sorprendente y grato es que la comunidad detras de Ruby es mas colaborativa y menos segmentada que en otros lenguajes. Quiza debido a que su popularización vino con Rails. Un Framework para habilitar RAD en ruby.

Rails, nos brinda una serie de scripts que nos permiten generar codigo para las tareas mas comunes de nuestras aplicaciones. Despues de instalar Ruby y Rails en tu equipo, usando NetBeans puedes virtualmente desarrollar una aplicación para administración de catalogos en una forma muy sencilla. Mucha gente con un marco teorico de Clipper y DataBase Driven Development puede creer que ha encontrado el lugar perfecto, sinembargo hay algunas desventajas en el modelo de Rails. Aunque la integración del ORM (Active Record) y su generador de codigo (Scaffold) estan hechas en una forma muy compacta, Rails presenta detalles complejos a la hora de relacionar entidades.

Es cierto. Si leemos los manuales de Ruby, nos encontraremos con documentación que dice que Ruby esta orientado a permitir a los desarrolladores de software usar un solo lenguaje y olvidarse de pensar en bases de datos y archivos de configuración XML. Esto es pues, estan concientes de sus limitaciones.

Claro esta, que Ruby y Rails son extendibles y modificables debido a que son Open Source, ademas el manejo de rutas y la capacidad de diseñar basado en templates hacen de Ruby on Rails una gran herramienta. Eso sin contar la gran comunidad afuera, soportando y apoyando el desarrollo, la penetración que tiene en el mercado de IDE’s es también considerable.

Ruby on Rails hace un trabajo decente para apoyarnos en RAD. Sin embargo, para poder realmente sentir un nivel de poder de desarrollo maximo deberemos invertir muchas horas en el framework.

Es, excelente para desarrollar aplicaciones de nivel medio. Applicaciones de tipo empresarial o con requerimientos mas especificos en la DB, pueden pues pasarlo por alto. A menos claro que deseen desarrollar todo su front en Ruby on Rails y sus prcoesos criticos en Java o algo igual de robusto.

RAD no es solo un gran lenguaje como Ruby y un buen Framework como Rails. Pero es una gran promesa, si la gente detras de Rails puede desarrollar una versión que entre otras cosas cumpla las demandas del Sr. Joel Spolski (Joel Spolski, en 2006 se encontro usando Ruby on Rails para desarrollar un sistema de seguimiento de fallas. Y tiene una opiniones que si bien pueden parecer duras, estan fundamentadas) podemos decir que su base de desarrolladores creceria mucho más, y más rapido.

Iaax Page

La arena del Desarrollo Web.

Pelea de Mike Tyson
La busqueda del mejor peleador en la arena

En una inesperada serie de eventos que me conducen hacia el mundo Indi, me encuentro desarrollando para Ruby on Rails, y para meter un poco de dinamismo y equilibrio al blog, dado a que hablamos mucho de Java (Eso de hablar mucho de Java no va a cambiar, pero ya hablaremos de mas lenguajes de programación), he decidido, instalar probar y desarrollar una misma aplicación, con tareas basicas, en 5 Lenguajes con sus frameworks más populares.

Los competidores

  1. Lenguaje Ruby usando Rails
  2. Lenguaje Java usando Forza Framework
  3. Lenguaje Python usando Django
  4. Lenguaje C# usando MVC
  5. Lenguaje PHP usando…. No se que framework vamos a usar aquí

Las pruebas

  • Facilidad de instalación.
  • Soporte de IDE’s
  • Aporte de la comunidad
  • Pruebas de Estres
  • Servicios de persistencia de datos
  • Dependencia del Entorno
  • Licencia
  • Flexibilidad del Framework

En este momento he terminado de instalar Ruby on Rails, y estoy desarrollando la primera aplicación, la cual sera replicada en los demas lenguajes y frameworks.

Para el gusto de pocos, estoy usando una MacBook Black con dos gigas de memoria, algo vieja en verdad, el hecho es que la mayoria de las instalaciones aqui se hacen en entorno de consola, al menos para los lenguajes de programación. Ides como RubyMine y NetBeans ya han superado esos problemas. Así que cuando decimos facilidad de instalación nos referimos a ambiente consola y no ambiente Windows.

Saludos,

Iaax Page

Extreme Programming Parte 2 de 3

Moto Cross Super Man
Moto Cross Super Man

Día de elecciones en México, prometí no meterme en politica en este espacio, así que no lo haré.

Solo dire que hubo un monton de cosas gratis para los que si votamos. El problema es que me acabo de enterar. 😀

Lo prometido es deuda, y dejamos con ustedes la segunda entrega de la serie Extreme Programming.

XP Parte 2

Empezamos haciendo un brevario del articulo anterior: Extreme Programming Parte 1 de 3, y entonces partimos hacia la definición de Martin Fowler,  Continous Integration (Integración Continua), para despues seguir con mas de XP. Esperamos que les guste.

Y si te sientes con flojera de ir al post anterior. Aqui te dejamos los vinculos del show!

Presentado por

Cesar ReyesIaax Page para RockDeveloper.com

Actualizacion: La ultima entrega de la serie esta aqui en Extreme Programming Parte 3

Extreme Programming Parte 1 de 3

Extreme

Siguiendo con nuestras charlas sobre desarrolllo de software, estaremos hablando en esta ocasion sobre Extreme Programming (Programacion Extrema) Una descripcion breve de lo que es y sus procesos.

El podcast

Extreme Programming: A gentle introduction

La wikipedia sobre Programacion Extrema

JetBrains Team City (Continuous Integration Server)

CruiseControl (Continuous Integration Server)

Ant (Build Tool para Java)

NAnt (Build Tool para .Net)

Presentado por

Cesar Reyes y Iaax Page para RockDeveloper.com

Actualizacion:  Ya esta disponible la segunda parte de esta serie Extreme Programming Parte 2

Actualizacion: La ultima entrega de la serie esta aqui en Extreme Programming Parte 3

Macosx y java como plataforma de desarrollo

Hoy me paso que tenia que hacer un demo de un proyecto, y no tenia acceso a mi computadora. Y le pedi prestada su mac a mi hermana para trabajar en ella.

Trabajo sobre java, así que la opción de sistemas operativos a escoger es amplia. Pero de preferencia uso mac. Y realmente resulta ser una plataforma muy practica, les comento los pasos que realice para levantar mi entorno de trabajo.

  • Actualizar Java 6 (158 MB)
  • Bajar un cliente de SVN, uso SmartSVN (6MB)
  • Bajar un IDE (IntelliJ IDEA) (120MB)
  • Bajar fuente de forzaframework (30MB)
  • Bajar Apache Tomcat (servidor de aplicaciones) (6MB)
  • Bajar Postgresql o cualquier otro motor de base de datos (30MB)
  • Apache Ant y Maven ya vienen preinstalados en Mac OS X
  • Crear el proyecto con las utilerias de forza
  • Y por ultimo abrir el proyecto en IDEA y empezar a hacer el prototipo

Bueno, a no ser por mi conexión a internet que no era la mejor, me hubiera tardado unos 40 minutos, en un viaje de negocios si me robaran mi mac, podría comprar otra y empezar a trabajar en 40 minutos, jejeje esperemos que no pase.

Pero realmente es muy rapido poner un entorno Java sobre Mac OS X, y bueno tambien es facil en cualquier otro sistema operativo. No entiendo como Microsoft en cada release hace el Visual Studio mas pesado.

Espero haber explicado un poco la practicidad de la plataforma java y que no solo se usa la mac para diseño. Hay, creo que cada vez mas, desarrolladores con Mac OS X como plataforma.

El futuro de Java en la industria del software.

Java. Uno los lenguajes de programación mas antiguos aun vigentes en el mercado se convirtio, en la apuesta mas grande de Oracle, que los llevo a invertir $7, 400 MDD en SUN y su negocio poco rentable.

Muchas alertas rojas empesaron a sonar en el momento en el que la noticia se dio a conocer. Estaremos presenciando el fin de una era, se posiciona en el pensamiento colectivo. Pero hay luz al final del tunel.

Bienvenidos a la entrega numero dos Rock Developer – El Podcast.

El Futuro de Java

Rod Johnson. Habla sobre el futuro de Java.
Rod Johnson. Habla sobre el futuro de Java.

Vinculos a twitter

No te olvides de promover el podcast usando las herramientas sociales al final de este post. Comparte con tus amigos en twitter, facebook, agreganos a digg o a delicious. Ayudanos a hacer crecer el podcast para llegar a más gente.

Los vinculos a las tecnologías:

SpringSource http://www.springsource.org/
Spring Roo http://www.springsource.org/roo
Grails http://grails.org/
Groovy http://groovy.codehaus.org/
Hibernate http://hibernate.org/
Forza http://forzaframework.org/ En construccion
  1. Spring Source
  2. Spring Roo
  3. Grails
  4. Groovy
  5. Hibernate
  6. Forza –En construccion
  7. Apache Harmony

Rock Developer. El podcast