Nuevas redes inalámbricas, nuevos retos para las “telecos”

Interesante artículo de como las empresas de telecomunicaciones deben afrontar las nuevas formas inalámbricas de conectarse a Internet.

http://www.readwriteweb.com/mobile/2011/10/the-customer-connection-isnt-t.php

En el que indica que no se deben cometer los errores, ya que deben generar infraestructuras nuevas, que se han cometido en el pasado: “so start thinking about your end-user customers first and foremost”

En el siguiente artículo, comentado en el primer enlace, plantea las dificultades que acarrea esta nueva tecnología, ya que hace al consumidor/cliente más ágil a la hora de informarse y tomar decisiones.

http://knowledge.wharton.upenn.edu/article.cfm?articleid=2860

Aplicaciones Facebook sobre SSL

mensaje https facebook

Hace unos días Facebook ha empezado a mostrar mensajes de error cuando se accedía a aplicaciones desde https, estando disponible para los desarrolladores, en la configuración de la aplicación, dos nuevos campos, para indicar las urls seguras (sobre https).

Para evitar esto debemos, claramente, añadir soporte https a nuestra aplicación, algo que si bien es sencillo, nos dará más que un quebradero de cabeza. Esto se debe a que nos encontraremos con los nuevos y vitales “bugs” con los que Facebook nos premia a todos los desarrolladores. [Read more...]

Optimizar las aplicaciones de Facebook más allá del código

Red NetLab

El desarrollo de aplicaciones para Facebook nos requiere una especial optimización de estas para que funcionen en base a dos premisas muy importantes: Seguridad y rapidez.

La rapidez depende de muchos factores, desde la optimización del código hasta la plataforma sobre la que se ejecuta esta, es por esto último que todas las aplicaciones que estamos haciendo son ejecutados con varios servidores con funciones muy específicas.

- Balanceador de carga: Con una conexión a Internet de 100MB/s con un para esta función.
- Servidores de Aplicaciones: Todos son replicas que se crean bajo demanda, permitiendo siempre dar una calidad de servicio óptima independientemente de la carga.
- Servidores de Datos: Los datos están centralizados en estos servidores, que también están replicados. Los datos están, dependiendo de la aplicación en diferentes servidores de bases de datos: SQL (MySQL, PostgreSQL), noSQL ( MongoDB, Membase ).

Las aplicaciones utilizan además un sistema optimizado de caché basado en un sistema de varios nodos de Memcache, reduciendo la carga de consultas a base de datos y a el API de Facebook.

La conectividad es también muy importante, de ahí que la red de Servidores de Aplicaciones tiene una conexión de 100MB/s a internet sólo para acceder a la API de Facebook, y la conectividad interna de todo el ecosistema es con una red GigaEthernet.

Las copias de seguridad se hacen con otra conexión de 100MB al servicio S3 de Amazon.

Evitando de esta forma encontrarnos con “cuellos de botella” en la red.

PHP-FPM sobre Ubuntu 8.10

fastcgi-fpm

Tomada la decisión de sólo desarrollar, en el caso de , para la familia 5.3 o superior. En gran medidad por todas las mejoras y cambios que aporta. Para instalarlo y ser procesado desde un servidor web , este debe ser compilado como FastCGI.

La elección de frente a la usual de php5 como fastcgi y un wrapper, es simple: Además de eliminarl el wrapper, php-fpm nos aporta muchas ventajas

Partiendo de que para esta distribución, desde los páquetes, está con la familia 5.2, el pasar a la 5.3 significa que:

a) Debemos compilarla desde las fuentes

b) Debemos instalar un nuevo repositorio donde si exista la versión 5.3.x para .

Existe un repositorio con esta familia de php, repositorio que deberemos añadir a nuestro archivo /etc/apt/sources.list

deb http://php53.dotdeb.org stable all

Una vez esto sólo deberemos actualizar y (si no teníamos instalado anteriormente ) el php5 instalar los nuevos paquetes

  1. sudo apt-get update

En nuestro caso instalaremos el php5-fqm: Un binario de php que se ejecuta como un servicio de FastCGI, facilmente configurable y con procesos separados (si así lo queremos) por usuario, grupo, …

  1. sudo apt-get install php5-fqm

Problemas:

Si queremos compilar módulos de php con pecl, necesitaremos instalar el php5-dev. La instalación de este paquete nos dará error por el paquete libtool, por lo que tendremos que hacer una instalación “peculiar”

  1. #instalamos el libtool
  2. sudo apt-get install libtool
  3. #descargamos el paquete de php5-dev
  4. cd /tmp
  5. wget http://php53.dotdeb.org/dists/stable/php5/binary-i386/php5-dev_5.3.2-0.dotdeb.2_i386.deb
  6. sudo dpkg –install –ignore-depends=libtool   php5-dev_5.3.2-0.dotdeb.2_i386.deb

Con esto tenemos el PHP5-Dev (de la 5.3.x). Al tratar de instalar cualquier módulo nos dará problemas del tipo:

  1. root@miservidor:/tmp# pecl install mongo
  2. downloading mongo-1.0.7.tgz …
  3. Starting to download mongo-1.0.7.tgz (53,750 bytes)
  4. ………….done: 53,750 bytes
  5. 16 source files, building
  6. running: phpize
  7. Configuring for:
  8. PHP Api Version:         20090626
  9. Zend Module Api No:      20090626
  10. Zend Extension Api No:   220090626
  11. configure.in:150: warning: LTOPTIONS_VERSION is m4_require'd but not m4_defun'd
  12. aclocal.m4:2943: LT_INIT is expanded from…
  13. aclocal.m4:2978: AC_PROG_LIBTOOL is expanded from…
  14. configure.in:150: the top level
  15. configure.in:150: warning: LTSUGAR_VERSION is m4_require'd but not m4_defun'd
  16. configure.in:150: warning: LTVERSION_VERSION is m4_require'd but not m4_defun'd
  17. configure.in:150: warning: LTOBSOLETE_VERSION is m4_require'd but not m4_defun'd
  18. configure:4584: error: possibly undefined macro: m4_ifval
  19.       If this token and others are legitimate, please use m4_pattern_allow.
  20.       See the Autoconf documentation.
  21. configure:7363: error: possibly undefined macro: _LT_SET_OPTIONS
  22. configure:7363: error: possibly undefined macro: LT_INIT
  23. ERROR: `phpize' failed

Esto se debe a la conf del libtool instalado (rutas y contenido), por lo que deberemos corregirlo:

  1. sudo ln -s /usr/share/libtool/config/ltmain.sh  /usr/share/libtool/ltmain.sh
  2. sudo ln -s /usr/share/aclocal/libtool.m4 /usr/share/libtool/libtool.m4
  3. cd /usr/share/aclocal
  4. cp libtool.m4  libtool.m4.original
  5. cat > bsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 >> libtool.m4

A partir de este momento ya podemos instalar cualquier módulo con pecl:

  1. pecl install mongo
  2. downloading mongo-1.0.7.tgz …
  3. Starting to download mongo-1.0.7.tgz (53,750 bytes)
  4. ………….done: 53,750 bytes
  5. 16 source files, building
  6. running: phpize
  7. Configuring for:
  8. PHP Api Version:         20090626
  9. Zend Module Api No:      20090626
  10. Zend Extension Api No:   220090626
  11. []
  12. uild process completed successfully
  13. Installing '/usr/lib/php5/20090626+lfs/mongo.so'
  14. install ok: channel://pecl.php.net/mongo-1.0.7
  15. configuration option "php_ini" is not set to php.ini location
  16. You should add "extension=mongo.so" to php.ini

Actualización claves GPG repositorios Ubuntu

Ubuntu Server

Algunas veces es posible que debamos actualizar las claves públicas de algunos repositorios de . Un síntoma es el siguiente error:

W: error: http://ppa.launchpad.net intrepid Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4FEC45DD06899068

La solución es bien sencilla.

  1. sudo apt-key adv –recv-keys \
  2.     –keyserver keyserver.ubuntu.com \
  3.     06899068