HPHP Facebook

Atrae la atencion para la comunidad phpera un rumor que resuena en internet desde un blog y derivados de este en su informacion y que llega hasta twitter sobre que al parecer Facebook servicio web desarrollado en PHP esta reescribiendo el lenguaje bajo el cual ha surgido este servicio online, pero antes de escribir algo sobre este HPHP (Hyper PHP) que la gente de Facebook esta desarrollando, tambien es algo interesante el resto de la informacion que a surgido de las oficinas de desarrollo de este servicio tan conocido y muy usado por tantos.

Pues el genio ha salido de la lampara, leo en vivaphp que las personas de Facebook estan desarrollando un Hyper-PHP, informacion que surge de una reunion de dos amigos donde un empleado de Facebook invita a esta persona a ver el nuevo lugar donde la compania se mudara, incluso esta persona ajena a la compania debio firmar una especie de contrato de silencio para evitar divulgar algo referente a su visita en el lugar en un intento de evitar espias de twitter.

En los fuentes originales se describe mas extensamente algunas cosas sobre como funciona Facebook, algo interesante que se puede leer es sobre los 4 centros de DataCenter que posee Facebook en Santa Clara, San Fransico, New York y Londres, donde cada sitio tiene (si he leido bien) de 5 mil a 8 mil servidores!!??? todos con la misma informacion, asi que de ser asi, la informacion de perfiles de usuario, contactos y todas sus fotos y escritos dificlmente se perderian, un buen backup para 220 millones de subcriptores, solo hablando de usuarios activos.

Leo algo sobre que Facebook eliminara algunas fotos en busqueda de un mejor rendimiento, hacen 6 copias de cada foto que subes, asi que se podria suponer que hablan de eliminar algunas copias, mas no creo las fotos originales de los usuarios, a no ser que tambien incluyan en este borrado las fotos de cuentas viejas inactivas. Es racional y claro que busquen optimizar el rendimiento ya que al buscarse una(s) foto(s) de un perfil de usuario, como bien comenta la persona, es igual que buscar una aguja en un pajar y descargar sentenares de albunes de dicho usuario en milesimas de segundos, no es algo facil.

Tambien se lee algo que en desarrollo es normal que exista, un password que permite que se pueda acceder y ver el contenido de fotos y demas informacion de otros usuarios, porque indico esto como algo normal, cuando se desarrolla un sistema el desarrollador necesita probarlo y para esto debe pasearse por las funciones de su sistema como un usuario final accesando a todos los rincones de su creacion para evaluar si todo funciona bien, en busca de errores, comportamientos extranos que sean detectados en el proceso de su desarrollo y ser depurados, asi que es logico que los desarrolladores de Facebook tengan un password muy larga con caracteres en mayuscula, minuscula, simbolos… con lo que puedan probar nuevos modulos y demas anexos a los ya existentes de toda esta enorme plataforma, alguna irregularidad de alguna cuenta informado por algun correo de soporte, los desarrolladores obviamente deben ingresar como este usuario y ver por si mismos dicho problema para confirmar si realmente existe o es confusion y mala navegacion o entendimiento de como debe manejarse en la web y su cuenta, de confirmar un comportamiento errado ingresando supuestamente como dicho usuario, sabrian a que se debe y como atacarlo. Obviamente ese password esta bajo 7 llaves por asi decirlo y solo es de conocerse por los desarrolladores, mas nadie de la empresa deberia saberlo. Tambien sucede que cuando un empleado deja de trabajar para un empresa, lo correcto es cambiar las claves, esto hablando sobre los accesos por internet, lo que no tenga alcance exterior y solo pueda accederse por intranet, igual es un riesgo, asi que se espera que esa clave no dure por mucho sin cambios o de lo contrario podria ser liberada y seria el caos. Incluso comentan en la entrevista que dos empleados fueron despedidos por manipulacion del perfil de usuario de terceros.  Asi que como ya se ha mencionado, se entiende que un empleado de Facebook debe ingresar a un perfil de usuario si este debe ser investigado por alguna razon, todo desde un punto de vista de ingenieria en pos del servicio, y desde un punto de vista de trabajo, no de ocio o curiosidad.

No es de que preocuparse si unos ingenieros de desarrollo de Facebook ven momentaneamente la informacion de un usuario que no conocen (total acceso a su cuenta) ya que es desde un punto de vista de desarrollo, todos lo hacemos, yo lo he hecho, ingresar a programas que he hecho o he mantenido y ver informacion de pagos o recientemente informacion medica ginecologica de personas que no conozco. Aunque lo correcto (lo cual yo hago y supongo que muchos otros) es crearme un usuario de prueba y es con ese usuario con el que hago y deshago para evaluar el comportamiento de lo hecho que tendra como proposito un servicio para otros.

La gente de Facebook le hace seguimiento a todo, buscan evitar recargar toda la pagina (y quien no) donde solo algunas secciones son las que se actualizan cuando cambias algo en el perfil o subes una foto, buscan un alto rendimiento en la carga de ancho de banda del sitio y en lo posible muchos mas click! por minuto.

Tambien leo sobre una traduccion del sitio para Iran ya que usaban Facebook para expresar ciertos desconectos del gobierno, al parecer nada ilegal o terrorista, 36 largas horas de los 20 ingenieros y demas personal de Facebook que incremento enormemente la interaccion del sitio.

Casos de personas que crean cuentas falsas, tratan de ser amigos de personas que no conocen haciendose pasar por personas conocidas (nombre y apellido y su foto) al aceptarlo otras personas, descarga todas las fotos que pueda y las publica en otras cuentas falsas, creandose una fachada de interaccion de fotos que no es de esa persona, supongo que buscando fotos de famosos o similares.

Ahora si, la parte que interesa, el nuevo PHP (HPHP – Hyper PHP) que esta desarrollando la gente (o uno de sus ingenieros)…

¿Cuéntame un poco sobre los ingenieros de Facebook?
“Son extraños, pero muy inteligentes. Por ejemplo, hay uno que escencialmente está re-escribiendo por su propia cuenta todo el sitio. Nuestro sitio está codificado, yo diría, en un 90% con PHP. Él está creando HPHP, Hyper-PHP, lo que significa que literalementa está re-escribiendo el lenguaje completo.

Hay una diferencia entre codificar en un lenguaje interpretado y uno compilado. PHP es ejemplo de un lenguaje interpretado. La computadora o el navegador lee el programa como un script, de arriba hacia abajo, y lo ejecuta en ese órden: cualquier cosa que declares al final no puede ser referenciado al principio. Pero en un lenguaje compilado (todo) el programa es compilado en un archivo ejecutable. Entonces no es necesario leer el programa desde el principio al final para ejecutar los comandos. Es mucho más rápido de esta manera.

Así que este ingeniero está convirtiendo el sitio de uno que funciona con un lenguaje interpretado a uno que funciona con un lenguaje compilado. …”

¿Y cuál será el efecto de ejecutar el sitio en Hyper PHP?
“Vamos a reducir el uso del CPU en nuestros servidores en un 80%, así que, prácticamente, los usuarios simplemente verán que el sitio es más rápido. Las páginas cargarán en un quinto del tiempo que lo hacían”.

¿Cuándo saldrá esto?
“Cuando esté listo. En los próximos meses, idealmente”.

De ser cierto esto del Hyper PHP, seria interesante verlo y usarlo en un futuro no muy lejano y es bastante logico que la evolucion de PHP bien podria salir de una corporacion que ofrece un servicio online de enorme tamano mundial basado en este lenguaje, creo que es algo que no era dificil verlo venir.


About this entry