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

Cómo usar node.js en producción

node.js es una de las muchas herramienta que trata de dar una solución al clásico problema C10K que aqueja al popular servidor web Apache. Para ello node.js ofrece un modelo de eventos asíncronos, de un sólo hijo de ejecución. Sin embargo la parte del non-blocking  que tanto promocionan en el website oficial de node.js asume que lo único que ejecutará node.js seran queries contra un servicio RESTful. Sin embargo en el mundo real una aplicación web es más que queries contra un servicio RESTful y es por ello que si dejamos que node.js se haga cargo del envio de los archivos css, html, las imágnes y todos los otros objetos que constituyen una página web la parte del non-blocking no se cumple y difícilmente el servicio pueda escalar a más de unos cuantos cientos de clientes simultáneos, de alli la razón de muchas de las críticas que ha recibido node.js. Cuál es la solución usar un servidor web que se haga cargo de servir el contenido estático de nuestra aplicación web y para no ello no hay nada mejor que el pequeño y ágil Nginx.

En este post les explicaré como configurar node.js y Nginx en un servidor Ubuntu 12.04 para correr una aplicación desarrollada en node.js. Por favor tengan en cuenta que estos pasos también pueden ser seguidos en Debian (omitiendo el comando sudo, siempre y cuando estemos logueados como root), si desea hacer lo mismo con distribuciones basadas en RPM como Centos o Fedora entonces siga las ideas generales pero no podrá copiar y pegar directamente los comando listados en este tutorial.

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

¿Es la web en tiempo real el futuro?

La web en tiempo real es algo que millones de personas ven todos los días en sus aplicaciones favoritas, pero que la mayoría no se da cuenta de dicha funcionalidad. Empresas como Facebook y Twitter usan los datos en tiempo real para actualizar los flujos de actividad sus usuario, lo que resulta en una experiencia que se siente menos estática y más como la mensajería instantánea.

Este nuevo paradigma implica enviar datos a los usuarios en lugar de que sea sean las aplicaciones las que busquen actualizaciones periódicamente. Los datos en tiempo real se ven en web apps como chats, flujos de actividad, juegos multijugador, paneles de control, y las experiencias de segunda pantalla. Dos principales beneficios de la web en tiempo real son que se incrementa la participación de los usuarios y se reduce la carga del servidor.

Seguir leyendo

Comandos básicos para controlar Exim

Exim es el servidor de correo usado por defecto en Debian, la distribución que uso en la mayoría de mis proyectos. Exim no es tan popular como Postfix o Sendmail, pero desde mi punto de vista resulta mucho más robusto y escalable que los dos anteriores, pero como dice el refran en gustos y colores no han escrito los autores. Este post contiene los comando básicos que se pueden usar para gestionar la cola de correos de Exim en las operaciones, espero que les sea de utilidad en caso de que les toque lidiar con un VPS debian.

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

Una introducción a la virtualización

Todo lo que conocemos hoy como Cloud Computing (la tan famosa "nube"), no existiría si no se hubiera creado la "virtualización". La virtualización, es la creación de una computadora a través de software, en otras palabras en vez de usar chips y ponerlos juntos para crear una aquitectura de computacional, se crean un programa que simula/emula esos chips. De alli que la virtualización comenzara con la emulación de arquitecturas antiguas a través de una solución software que nos permite correr todos los programas existentes para la arquitectura que emulamos. Aunque nos cueste creerlo la virtualización/emulación de hardware se remonta a mediados de los años 60, con IBM realizando investigaciones sobre el tema en el "Cambridge Scientific Center".

Seguir leyendo

Bienvenidos a Websistente

Hola a todos.

Mi nombre es Volkan Rivera, vivo en la ciudad de New York desde hace 11 años y me dedico a la administración de sistemas, este es mi blog técnico que es diferente de mi blog personal que también es o mejor dicho pretendía ser en cierta forma un blog técnico, pero que incluía temas más diversos como mi opinion personal sobre algunos hechos políticos y económicos; consejos sobre emprendimientos digitales y recuerdos personales. He decidido mantener los temas separados para evitar malos entendidos y en este blog publicaré temas exclusivamente técnicos, relacionados con mis actividades profesionales como Linux SysAdmin, he decidido también acutalizar mi perfil y ya no decir que soy un Unix/Linux SysAdmin ya que en lo personal me suena anacrónico en estos momentos en los cuales Linux practicamente ha devorado ya a todas las otras alternativas Unix (para bien o para mal). Por lo cual seguir usando el título de Unix/Linux SysAdmin cuando el 90% del tiempo la paso trabajando con Linux, no me parece adecuado.

Espero que los temas discutidos en este blog les resulten de interés, en caso de cualquier pregunta o sugerencia tienen el área de comentarios debajo de cada post para suministrar el necesario feedback. Gracias y nos leemos.