es un trabajo de investigación sobre las tecnologías detrás de las tan usadas redes sociales, para de esta forma poder conocer un poco más los lenguajes en las que han sido programadas.
Introducción:Los objetivos de Desarrollo Sostenible
Tecnología detrás de las redes sociales
1. Curso: Lenguaje de Programación II
Profesor: Eddie Christian Malca Vicente
Alumna: Geraldine Isabel Florian Guardia
2. Como sabemos hoy en día se ha generado un boom de redes sociales que nos permiten
comunicarnos mas fácilmente ente nosotros además de compartir fotos y en cierta forma
documentar nuestras vidas, pero como profesionales en la carrera de ingeniería de sistemas
debemos ir mas allá del solo hacer uso dichas redes sino preguntarnos que es lo que esta de tras
de ellas es por eso que en este documento veremos que tecnología se usa para el funcionamiento
de algunas de ellas como:
Facebook
Twitter
Whatsapp
Instagram
3. Desde su creación en febrero de 2004,Facebook ha demostrado ser un sitio de redes
sociales innovador y exitoso utilizando sólo plataformas de software de código abierto para
construir y mantener el sitio
Todo el sitio web de Facebook se basa en y alrededor del preprocesador de hipertexto PHP.
PHP es un lenguaje de secuencia de comandos del lado del servidor que crea y envía las
páginas HTML dinámicas. Un juego PHP que Facebook utiliza ampliamente para convertir
PHP a código C++ es el HipHop para el marco PHP. Este conjunto de secuencias de comandos
le permite al sitio web funcionar mejor y obtener el máximo rendimiento de sus servidores muy
utilizados.
4. Facebook cuenta con Memcached para depositar y almacenar las páginas web en la
memoria. El software actúa como una capa entre los servidores de alojamiento regulares y
sus servidores de bases de datos MySQL. Esto ayuda a que el sitio cargue mucho más
rápido que otros sitios de redes sociales, dando a los usuarios una experiencia
ininterrumpida casi sin fisuras. En general, el almacenamiento en caché ayuda a acelerar
los sitios web mediante el almacenamiento de archivos de uso común y recuperándolos del
buffer de memoria del servidor.
MySQL, una base de datos de software de código abierto, es uno de los principales
componentes de la tecnología detrás de Facebook. Se implementa por medio de cientos de
miles de sitios web, ya que escala muy bien, lo que permite al código PHP recuperar
rápidamente datos importantes, y muchas veces, seguros. Facebook cuenta con más de
30.000 servidores y una gran parte de estos son servidores de bases de datos MySQL.
Facebook para hacer frente a la gran cantidad de fotos que subidas y vistas en el sitio web,
la empresa utiliza Haystack. Este software de código abierto es una plataforma de
almacenamiento de objetos de alto rendimiento, que cuenta da potencia a la característica
de fotos de Facebook. La compañía ha ajustado Haystack para guardar una foto cargada
en cuatro resoluciones diferentes para ayudar a acelerar el proceso de recuperación, lo que
depende del tamaño de la foto requerida por el código PHP de Facebook
5. La compañía ha diseñado su interfaz desde el lenguaje Rubi on Rails. Respecto a los
mensajes que el usuario twittea, estos son almacenados en un servidor paralelo de la red
en programación a escala, además de contener su propia API, la compañía de Jack,
beneficiándose de esta manera para que desarrolladores utilicen la aplicación en nuevas
funcionalidades para móviles u ordenadores además de sitios webs o blogs.
Por otra parte, Twitter ha experimentado desde hace mucho tiempo caídas en sus
servidores, esto se debe a ataques de grupos activistas, hackers, y principalmente con los
tweets de los mismos usuarios que a veces son millones. Debido a la estructura de la
aplicación online, que se basa en un sistema centralizado, cada tweet enviado por un
usuario, pasa por un nodo, este nodo al colapsarse con millones de tweets por minuto,
genera la caída de los servidores. Por su lado, el CEO de la compañía ha anunciado que
no se descarta la posibilidad de un sistema descentralizado donde a pesar de que el
servicio Twitter se caiga, los tweets de usuarios se publiquen sin problemas.
6. Seria la mejor idea de la compañía ya que también de forma descentralizada funciona la
internet, si esta tuviera que pasar cada información web o blog por un nodo, se colapsaría
en milésimas de segundo dejando sin internet al mundo entero.
7. WhatsApp Messenger es una aplicación de mensajería
multiplataforma que permite el intercambio de
mensajes instantáneamente disponible para cualquier
smartphone actual.
Los hashtags son referencias a la tecnología detrás de
WhatsApp, la aplicación fue desarrollada en su
mayor parte en la plataforma de código abierto
FreeBSD usando el lenguaje de programación Erlang
escrito originalmente por Ericsson, su creador, es así
que FreeBSD prueba de nuevo que es un gran sistema
operativo para servidores de alta demanda.
Además el whatsapp hace uso del protocolo xmpp
(una tecnología de comunicación en tiempo real muy
potente y utilizada actualmente). para la transmisión
de datos.
Whatsapp tiene como destino el puerto
443(HTTPS) aunque todo viaja bajo texto plano.
8. Instagram, es la startup que ha revolucionado la
forma de compartir fotos por medio de una
aplicación para el iPhone
Alojamiento
Instagram usa Ubuntu Linux 11.04 en sus instancias
en Amazon EC2, las cuales manejan según las
necesidades de demanda.
Servidores de aplicaciones
Usan Django en Amazon High-CPU Extra Large
pasando de tan sólo unas maquinas a alcanzar ya
más de 25. Aunque ese no es ningún problema ya que
son capaces de escalar horizontalmente al poder
trabajar independientemente unas de otras.
Usan como servidor WSGI a Gunicorn, en lugar de
mod_wsgi y Apache, al ser Gunicorn más fácil de
configurar, y menos intensivo con la CPU. Y para la
ejecución de comandos en varias instancias en
paralelo se usan Fabric que es capaz de desplegar en
cuestión de segundos una ejecución.
9. Almacenamiento de datos
Uno de los pilares de Instagram son los datos de las fotografias y los usuarios. La
base de datos que se usa es PostgreSQL. Afirman que tiene 12 cluster de instancias de
memoria Quadruple Extra-Large y sus 12 replicas en distintos lugares.
Nos aconsejan el uso de vmtouch para la gestión de datos de memoria, sobre todo
cuando se produce un error en la conmutación de una máquina a otra. Todas las
maquinas que se usan están configurada en maestro-replica. Para la gestión de la
replicación se usa repmgr.
Para realizar las conexiones a la base de datos con PostgreSQL, principalmente desde
Django se usa Pgbouncer.
Como no podía ser de otra forma, para todo los que es contenido principal del feed de
actividad y las notificaciones de Instagram se usa Redis. Aunque como todo tiene que
caber en memoria se usa de nuevo otras instancias Quadruple Extra-Large en
configuración maestro-replica.
Para el uso de la API de geo-búsqueda se usa Apache Solr que permite el consumo de
datos por medio de JSON, lo que facilita el acceso a los datos cuando las aplicaciones
lo necesitan. Tampoco se olvidan del uso de memcached para la caché utilizando
pylibmc y ibmemcached.
10. Tareas de notificación y push
Para estos casos en los que se tiene que notificar a un usuario en tiempo real de una nueva foto
publicada se usa Gearman, un sistema de cola de tareas escrita originalmente en Danga. Colas
asíncronas para distribuir el trabajo pesado en segundo plano y que las tareas más ligeras se
realicen rápido.
Para realizar las notificaciones push usan pyapns y aseguran que les ha ido bastante bien
manejando más de mil millones de notificaciones.
Monitorización
Con más de cien instancias distribuidas en los distintos procesos que hemos descrito, en
Instragram usan Munin para revisar todos los parámetros gráficos de los sistemas. Además de
haber escrito varios plugin basado en Python. También se usa Pingdom para la supervisión
externa del servicio y PagerDuty para las incidencias y las notificaciones.
Y para el informe de errores usan Sentry, escrita usando Django por la gente de Disquis.