Pusher, Sevicio Cloud para gestión de conexiones y mensajes mediante websockets

Para añadir funcionalidades en tiempo real a aplicaciones no es necesario invertir tiempo en crear una nueva infraestructura y dedicar esfuerzo en cómo escalar según crezca el número de usuarios y conexiones concurrentes. Pusher es un servicio online que encapsula la implementación de websockets y la funcionalidad de la aplicación sin necesidad de tener que ejecutar un servidor de Websockets propio, pudiendo escalar automáticamente según el número de conexiones simultaneas y el número de mensaje enviados.

Con este tipo de servicio en la nube que ofrece Pusher pueden crearse aplicaciones como chat, colaborativas, tratar datos en tiempo real, paneles o notificaciones. En apenas unos minutos se configura de forma básica el envío de mensajes. Pusher implementa una capa de eventos abstracta que puede ser conectada con cualquier cliente o servidor.

Para implementar los servicios de Pusher existen distintas librerías clientes desde JavaScript, Java, Android, iOs, .Net, Ruby o ActionScript. Así como el servidor para Ruby, Node.js, Java, Phyton,PHP, .NET, Perl o Clojure.

La versión gratuita de Pusher cuenta con un máximo de 20 conexiones simultaneas y 100.000 mensaje al día, lo que puede servir al menos para probar como implementar servicios en tiempo real sin pensar inicialmente en la infraestructura.

Para saber más: http://pusher.com/

Rest.li, framework REST + JSON de Linkedin

Linkedin han decidido compartir la plataforma para APIs que han creado para mejorar su funcionamiento interno.

Rest.li es un framework REST + JSON para la creación de arquitecturas de servicio robustas y escalables usando descubrimiento dinámico y APIs sencillas desarrollado en Java.

Entre otras características dispone de diseño orientado a entidades, nomenclatura estándar al estilo HTTP para operar con las entidades anteriores, un esquema de serialización flexible y operaciones batch para apoyar el acceso a grandes bases de datos.

Además acompaña a este framework Rest.li una capa de balanceo y otra de transporte, que han decidido llamar R2 y D2 respectivamente. Todo bien documentado y disponible en Github.

Para saber más: http://engineering.linkedin.com/architecture/restli-restful-service-architecture-scale

JS Bin, editor de HTML, CSS y JavaScript en tiempo real

JS Bin es una herramienta que permite editar y probar código JavaScript y HTML recargando el código en la misma pantalla. Además puede ser usado para trabajar en un mismo código de forma colaborativa en tiempo real.

Según su creador Remy Sharp, la idea inicial fue intentar compartir de forma remota una parte de código AJAX sobre la que quería realizar debug junto a otro desarrollador. La primera versión fue creada en unas 4 horas, pero la segunda versión de la app ha sido reescrita totalmente y forma parte de un proyecto open source que se puede encontrar en GitHub.

El funcionamiento de JS Bin es bastante sencillo. La pantalla se divide en distintas pestañas con el código HTML, CSS, Javascript, además de la consola y la salida de la web final. A parte del código es posible añadir distintas librerías precargadas (varias versiones de jQuery, Dojo, Prototype, BootStrap o incluso Backbone o preprocesado coffee-script o LESS, etc…).

Para saber más: http://jsbin.com/welcome/1/edit

Google Chrome mantiene su ventaja

Google Chrome continúa manteniendo su posición de liderazgo en el mercado de los navegadores, por delante de sus rivales.

Según datos recogidos por StatCounter, más de uno de cada tres internautas utiliza el programa de Google para navegar a través de Internet, aunque la herramienta de la compañía del buscador parece haber frenado crecimiento. Por el lado contrario, Firefox prosigue con su caída, a pesar de los esfuerzos de Mozilla para mejorar su navegador en los últimos meses.

Hoy en día, Google Chrome es la referencia a nivel de navegación. Durante el mes de enero consiguió una cuota de mercado del 36,52%, frente a la cuota del 36,42% que se contabilizó en el mes de diciembre del año pasado.

IE se mantiene estable en segunda posición con una cuota de mercado del 30,71%, una cifra ligeramente inferior a la que logró durante el mes de diciembre (en este mes logró una cuota del 30,78%).

El navegador de Mozilla acumuló una cuota de mercado del 21.42%, casi medio punto por debajo de lo que logró en diciembre (21,89%).

Por debajo de estos tres se encuentra Safari, el navegador de Apple que está creciendo de manera lenta y constante durante los últimos meses. El navegador de los equipos Mac cuenta con una cuota de mercado del 8,21%.

Por último, la presencia de Opera en el mercado global es apenas testimonial, y en poco tiempo podría situarse por debajo del 1% (durante el mes de enero acumuló un porcentaje del 1,19%).

Extrayendo los elementos de una colección con Java 8

Hasta ahora para extraer los elementos de una Lista

que cumplieran una condición (véase Personas con edad mayor que 30) haríamos algo como:

Con Java 8 y la inclusión de Closures (Expresiones Lambda) y su nueva API Collection podríamos hacerlo de una forma más corta (que no más sencilla de leer :D):

¿Qué es un API Manager?

Un API Manager ofrece un Server Proxy que gestiona API endpoints.

Debe ofrecer como mínimo:

  • Basarse en estándares
  • Control Seguridad
  • Monitorización y Control de Calidad del Servicio (QoS)
  • Gestión y Provisión de APIs
  • Mediación
  • Rendimiento, Disponibilidad y Escalabilidad

Basarse en estándares

  • OAuth
  • XML
  • JSON
  • SOAP
  • REST

Control Seguridad

  • Políticas de Autenticación: basado en diferentes esquemas:
  • Mecanismos de Criptografía
  • Enterprise OAuth

Monitorización y Control de Calidad de Servicio (QoS)

  • Monitorización de cómo están usándose las APIs
  • Identificación de problemas
  • Control SLAs de nuestras APIs
  • Visualización indicadores

Gestión y Provisión de APIs

  • Autorización de aplicaciones que tienen acceso a APIs
  • Políticas de QoS por aplicación

Mediación

  • Conversión entre XML y JSON
  • Mediación en trasnporte: bridge HTTP/HTTPS/JMS/MQ,…
  • Conversión de APIs: entre Servicios SOAP y RESTful

Rendimiento, Disponibilidad y Escalabilidad

  • Rendimiento: Ofreciendo baja latencia y alta concurrencia
  • Disponibilidad: Despliegues stateless en cluster
  • Escalabilidad: añadir miembros al cluster sin parar el servicio