Docker y la revolución de los containers

Docker es una plataforma open source para desarrolladores y sysadmin que permite crear, distriubuir y correr aplicaciones de forma consistente independiente de la configuración del OS y el harware que lo contenga. El proyecto Docker consiste de dos partes "Docker Engine" que es un runtime ligero y portable (lo que instalamos en nuestro servidor) con un conjunto de herramientas que nos permiten crear, iniciar y detener los contenedores. La otra parte del proyecto es "Docker Hub", que es un repositorio en la nube a través del cual podemos compartir los contenedores que hemos creado, si es que así lo queremos. Docker se ha planteado como objetivo eliminar la fricción entre el proceso de desarrollo, QA (Quality Assurance) y producción a través del uso de contenedores que son una envoltura para nuestra aplicación y todas las librerias que esta necesite. Cómo resultado de esta contenerización, el departamento TIC puede desplegar la aplicación sin ningun cambio ya sea en una latop, en un servidor físico, en un servidor virtual o en la nube, siempre y cuando tenga instalado el Docker Engine.

Seguir leyendo

Usando CouchDB en nuestro VPS

CouchDB es un sistema gestor de bases de datos orientado a documentos, similar a MongoDB y es una de las muchas alternativas NoSQL exitentes en el mercado. Es decir, los datos no están guardados en tablas y tuplas. Pongamos un ejemplo para entenderlo, imaginen que quieres tener un registro de usuarios, donde cada usuario tiene un nombre, un correo y su edad, cada "registro" (conjunto de nombre + correo + edad) pasaría a ser un documento diferente en una gran repositorio de documentos, independiente de todos los demás. No existe una sección en donde puedas separar unos documentos de otros, todos están en el mismo repositorio. ¿Qué no es CouchDB?, no es un sustituto a las bases de datos relacionales tradicionales, debes tomar en cuenta cuando vas a desarrollar que no siempre lo que parece mas nuevo es la mejor solución, CouchDB no es la solución a todos tus problemas ni una evolución de las tablas relacionales, tengamos presente eso. Este tutorial describe como instalar CouchDB en Ubuntu 12.04 y como usar Futon (el sistema de administración de CouchDB).

Seguir leyendo

node-twitter un clone de twitter en node.js

Revisando los repositorios de Github por proyectos interesantes escritos en node.js, he encontrado uno llamado node-twitter de Vinit Kumar. El código se ve limpio y sólo requiere la intalación de MongoDB como motor de base de datos, que afortunadamente ya hemos descrito en este blog como instalarlo localmente. Una version operativa del proyecto se puede visitar en este URL: http://ntwitter.nodejitsu.com/login. En este post voy a describir brevemente como hacer para tener una versión similar corriendo en tu VPS o servidor físico si es que deseas iniciar un proyecto similar.

Seguir leyendo

Implementando un chat con node.js

Una de las ventajas que ofrece node.js es su naturaleza asíncrona y por lo tanto permite escalar fácilmente sin preocuparnos por sincrónizar procesos entre sí ya que no existen procesos una aplicación node.js consiste de un único hilo de ejecución. Una de las aplicaciones que más se beneficia de esta característica es justamente un chat y ha sido uno de los selling points favoritos de los evangelistas de node.js. Pero qué tan sincillo es programar un chat en node.js, pues bien como dice Eric Raymond en La Catedral y el Bazar: "Los buenos programadores saben qué código escribir. Los grandes programadores saben qué código reescribir". Así que para que empezar desde cero, he encontrado un muy buen esqueleto con que comenzar una aplicación de chat en Github, escrita por desarrollador llamado William Mora.

Seguir leyendo

MongoDB es fácil

MongoDB es una base de datos NoSQL orientada a documentos que son guardados en una estructura JSON dinámica que es denominada BSON (Binary JSON). Debido a que JSON es un formato de datos familiar para los programodores JavaScript, es que muchos desarrolladores node.js usan esta base de datos para sus proyectos. Otra gran ventaja de MongoDB es que es un proyecto Open Source y por lo tanto es posible de ser necesario modificar el códio. El nombre MongoDB proviene de la palabra inglesa "humongous" (que significa enorme) y justamente este sistema de base de datos está diseñado para ser enorme permitiendo escalar horizontalmente la base de datos, es decir podemos agregar "X" número de nodos a nuestra base de datos expandiendo de forma casi ilimitada la capacidad de almacenamiento de la misma.

En este breve tutorial explicaremos como instalar MongoDB en un servidor Ubuntu 12.04, aunque los pasos de la instalación son los mismos para Debian los comandos para administrar el daemon del MongoDB son diferentes y a menos que indique lo contrario este tutorial debe ser usado para intalar, configurar y administrar MongoDB en un servidor Ubuntu 12.04.

Seguir leyendo

Single Page Application (SPA) una tendencia creciente

Singla Page Application (SPA) o Single Page Interface (SPI) es una aplicación web (web app) o sitio web que sólo carga la página web una sóla vez y desde alli renderiza los objetos que contituyen la página basado en las acciones del usuario, es decir el único flujo entre el servidor y la página web son datos. La llegada de tecnologías que permiten enviar datos directamente al navegador como AJAX hicieron posible el nacimiento de las SPA, pero ha sido la llegada de node.js el que ha llevado las SPA a otro nivel.

Pero la creación de SPA con JavaScript en el servidor usando node.js requiere de algún framework que nos permite mantener nuestro código ordenado y facilite su mantenimiento, de preferencia que siga el paradigma MVC (Model View Controller) que es tan popular en otros framworks como Rails o Django. En este post daremos un rápido vistazo a todas nuestras opciones de MVC para desarrollo de SPA en node.js.

Seguir leyendo

Usando PHP en Heroku

Aunque muchos no lo saben y Heroku no lo publicita es posible desplegar aplicaciones PHP o Perl en el servicio PaaS de Heroku. Claro que hay algunas limitaciones, la primera es que MySQL no es la base de datos relacional que ofrece la plataforma, sino que los es PostgreSQL. Esto hace que algunas muy populares webapps como WordPress por ejemplo no puedan ser deplegadas directamente en Heroku y tal vez es la razón por la cual no se publicita mucho el soporte a PHP. En este muy breve tutorial explicaremos como tener una aplicación PHP con base de datos PostgreSQL corriendo en Heroku.

Seguir leyendo