ATC, la herramienta de Facebook para simular condiciones de red

ATC, la herramienta de Facebook para simular condiciones de red

Rubén Velasco

Antes de sacar una aplicación al mercado las grandes compañías compruebas su comportamiento dentro de diferentes entornos con el fin de evitar posibles problemas al acceder los usuarios de forma masiva a los servidores desde diferentes velocidades, regiones y dispositivos. Estas herramientas por lo general son cerradas y para funcionamiento interno, sin embargo Facebook ha querido dar un paso adelante publicando la herramienta que ellos utilizan para ese fin.

Augmented Traffic Control es una herramienta de código abierto desarrollada y publicada por Facebook y utilizada por la compañía para analizar el comportamiento de sus aplicaciones (especialmente el cliente oficial de la red social) dentro de un entorno variable con múltiples condiciones a fin de poder optimizar su funcionamiento lo máximo posible.

Esta herramienta nos permite modificar a nivel de software los diferentes aspectos de una red:

  • Ancho de banda
  • Latencia
  • Pérdida de paquetes
  • Paquetes corruptos
  • Orden de paquetes

ATC_facebook_red_foto

Instalar Augmented Traffic Control, la herramienta de Facebook

Podemos acceder al código y a la descarga de la herramienta desde el siguiente enlace. Esta herramienta cuenta con dos dependencias para poder instalarse y funcionar con normalidad:

  • Python 2.7+.
  • Django 1.7+ (se instala desde PIP).

Una vez cumplidas las dependencias podemos utilizar «pip» para instalarla en nuestro sistema de pruebas tecleando:

pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

A continuación crearemos un nuevo proyecto en el programa con:

django-admin startproject atcui
cd atcui

El siguiente paso es modificar el archivo de configuración para que el programa sepa qué aplicación enrutar. Para ello abrimos el archivo «atcui/settings.py» y añadimos al apartado «Installed Apps» lo siguiente:

INSTALLED_APPS = (
...
# Django ATC API
'rest_framework',
'atc_api',
# Django ATC Demo UI
'bootstrap_themes',
'django_static_jquery',
'atc_demo_ui',
# Django ATC Profile Storage
'atc_profile_storage',
)

Para finalizar abrimos el archivo de enrutamiento del programa «atcui/urls.py» y lo modificamos de la siguiente manera:

...

...
from django.views.generic.base import RedirectView

urlpatterns = patterns('',
...
# Django ATC API
url(r'^api/v1/', include('atc_api.urls')),
# Django ATC Demo UI
url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),
# Django ATC profile storage
url(r'^api/v1/profiles/', include('atc_profile_storage.urls')),
url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
)

Actualizamos la base de datos de Django con «python manage.py migrate» y el programa estará listo para empezar a funcionar. Puedes ver cómo virtualizar redes.

Ejecutar Augmented Traffic Control

Una vez que el programa está listo para funcionar ejecutamos el servicio (con permisos de superusuario) tecleando:

sudo atcd

Y comenzará a correr en segundo plano. Podemos ejecutar la WebUI fácilmente para configurar condiciones personalizadas sin tener que modificar loa archivos de configuración tecleando:

python manage.py runserver 0.0.0.0:8000

Y accediendo desde nuestro navegador a «http://localhost:8000».

ATC_facebook_red_foto_WebUI

 

Tanto si somos una grande compañía como Facebook como desarrolladores de software independientes esta herramienta nos ayudará a comprobar el funcionamiento de nuestros proyectos bajo diferentes entornos de forma totalmente gratuita.

¿Qué te parece la herramienta de Facebook para simular entornos de red? ¿Conoces otras herramientas similares?

Fuente: HackPlayers

¡Sé el primero en comentar!