                       Argentina.com : Un estudio de caso

  Carlos Horowicz

   <ch@argentina.com>
             

   Revision: 43184

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   CVSup is a registered trademark of John D. Polstra.

   Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are
   trademarks or registered trademarks of Intel Corporation or its
   subsidiaries in the United States and other countries.

   XFree86 is a trademark of The XFree86 Project, Inc.

   Many of the designations used by manufacturers and sellers to distinguish
   their products are claimed as trademarks. Where those designations appear
   in this document, and the FreeBSD Project was aware of the trademark
   claim, the designations have been followed by the "(TM)" or the "(R)"
   symbol.

   2013-11-13 por hrs.
   [ Split HTML / Single HTML ]

     ----------------------------------------------------------------------

   Tabla de contenidos

   1. Introduccion

   2. El desafio

   3. La solucion FreeBSD

   4. Resultados

1. Introduccion

   Argentina.Com es un ISP argentino con una pequena infraestructura de menos
   de 15 empleados y cuya fuente principal de ingresos proviene del negocio
   del acceso telefonico a redes gratuito. Comenzo a operar en el ano 2000
   con solo un servidor para correo y chat.

   Desde entonces ha crecido su presencia en un mercado argentino de acceso
   telefonico a redes que genera unos 45.000 millones de minutos anualmente.
   Su producto mas famoso proporciona a cerca de medio millon de usuarios
   correo gratuito con webmail, POP3 y acceso SMPT, junto con 300M de espacio
   de disco. Hacia el final de 2002 habia alrededor de 50.000 usuarios de
   correo. Despues de dos anos y medio de reingenieria y de solidas mejoras
   tecnicas este ISP ha crecido en un factor de 3 en terminos de facturacion,
   y en un factor de 10 en cuanto a la base de usuarios de correo.

   Nuestros competidores en el mercado argentino de acceso telefonico
   incluyen a Fullzero (filial perteneciente a Clarin Media Group),
   Alternativa Gratis y Tutopia, este ultimo fundado por IFX y promocionado
   por Hotmail. Algunos de estos grandes competidores comenzaron sus
   respectivos negocios de acceso telefonico con inversiones multimillonarias
   y con campanas de publicidad agresivas en television e Internet.
   Argentina.Com no utiliza este tipo de publicidad. Ha alcanzado la cuarta
   posicion con un 8% de cuota de mercado durante los dos ultimos anos
   gracias a un calidad de servicio superior.

   En Argentina y en Latinoamerica en general las personas que no poseen
   ordenador personal van a los llamados "locutorios" (centros de Internet),
   donde por unos pocos pesos pueden utilizar un ordenador conectado a
   Internet y donde normalmente leen y escriben correos electronicos a traves
   de portales populares como Hotmail, Yahoo! o Argentina.Com.

   Debido a los limitados recursos financieros disponibles, Argentina.Com
   decidio invertir en un nuevo sistema de correo en vez de darse publicidad
   a traves de los medios. Esta decision estrategica abre las puertas a un
   futuro negocio en el campo del correo corporativo y de pago.

2. El desafio

   El desafio principal para Argentina.Com es alcanzar un tiempo de vida para
   el servicio de acceso telefonico a redes de al menos 99.95%, o menos de 5
   horas de caidas al ano. Debido a la alta rotacion y volatilidad que existe
   en este negocio, las cosas deben funcionar correctamente para que el
   usuario no cambie -voluntariamente o no- de proveedor de acceso a internet
   o de numero de telefono utilizado para conectarse. El negocio del
   "dialup", como se le conoce en su denominacion inglesa, requiere una
   estructura de soporte para tratar con las grandes operadoras de
   telecomunicaciones problemas telefonicos y de calidad de servicio, junto
   con una infraestructura tecnica donde la latencia y la perdida de paquetes
   deben minimizarse debido a la naturaleza UDP de los servicio de Radius y
   DNS, y donde el DNS recursivo deberia estar siempre disponible.

   Esto tambien implica tener un tiempo de vida alto en los servicio de POP3
   y SMTP, junto con el servicio de webmail. Para POP3 y SMTP se estimo la
   necesidad de "uptime" igual que para el servicio de "dialup", mientras que
   para el servicio de webmail se penso en un porcentaje de 99.5%, lo que
   significa alrededor de dos dias por ano sin servicio o de caida.

   Decidimos migrar el correo a una solucion propietaria de codigo abierto
   que deberia ser horizontalmente escalable y cuyos sistemas antivirus y
   antispam pudieran soportar mas de un unico tipo de "backend" o de
   almacenamiento de correos.

   La feroz competencia en el mercado del correo electronico gratuito,
   principalmente iniciada por las recientes mejoras introducidas por
   Hotmail, Yahoo! y Gmail, hacian necesario disenar el nuevo sistema con al
   menos 300M de espacio de usuario en disco para cada usuario, pero a un
   coste inferior a 3 dolares americanos por GB incluyendo cierto grado de
   redundancia. Hay que tener en cuenta que el hardware que puede disponerse
   en "rack" es dificil de encontrar en Argentina y que resulta ser entre un
   30 y un 40% mas caro que en los EEUU. Nuestro liquido financiero para
   adquisicion de equipos en dos anos fue de 75.000 dolares americanos, lo
   cual es una fraccion muy pequena de las inversiones acometidas por
   nuestros competidores directos.

   Respecto al servicio antispam, era necesario desarrollar un producto que
   pudiera competir con los sistemas ofrecidos por los grandes. Dadas las
   hostiles condiciones que impone la existencia del spam (ataques de
   diccionario, spams con alto grado de ofuscacion y refinamiento,
   "phishing", troyanos, correos-bomba, etc.) resulta muy complicado alcanzar
   tiempos de "uptime" excelentes y al mismo tiempo repeler dichos ataques.
   Uno debe tambien ser cuidadoso para que el usuario no pierda correos
   debido a falsos positivos en la estrategia de clasificacion, para que no
   se le inunde con spam o notificaciones de spam y para que el correo
   peligroso no alcance la carpeta de entrada de los usuarios. Por ultimo, el
   sistema de correo debe protegerse para que los "spammers" no lo utilicen
   en su provecho para enviar spam.

   El paradigma del codigo abierto normalmente requiere la adquisicion de
   grandes equipos de administradores de sistemas, operadores y programadores
   que se encarguen de aplicar parches, corregir "bugs" e integrar
   plataformas. El paradigma opuesto es tambien costoso debido a las caras
   licencias de software, la necesidad de hardware cada vez mas caro y debido
   al elevado numero de empleados encargados de proporcionar soporte. Asi que
   el desafio era encontrar la mezcla correcta entre recursos monetarios y
   humanos escasos, alta estabilidad y grado de prediccion, y un desarrollo
   rapido y fiable. En Buenos Aires resulta dificil encontrar profesionales
   de las ciencias de la computacion bien entrenados, la mayoria de los
   cuales viven y trabajan en el extranjero, mientras que los restantes
   poseen trabajos estables dentro de las instituciones del gobierno o en
   grades companias.

3. La solucion FreeBSD

  3.1. Introduccion

   A comienzos de 2003 teniamos un sistema de correo CriticalPath bajo
   Solaris x86 y una maquina Redhat para SMTP, Radius y DNS. Los servicios de
   DNS y Radius se caian constantemente y estabamos luchando con colas
   enormes de correo electronico. Hubo un intento de instalar CriticalPath
   para Linux en Redhat en una maquina Intel con una tarjeta Megaraid, pero
   la latencia del disco era enorme y la aplicacion de correo no llego a
   funcionar.

   El primer paso realizado hacia la "solucion FreeBSD" consitio en migrar
   este hardware y software comercial a FreeBSD 4.8 con la ayuda de la
   emulacion Linux.

  3.2. La eleccion de FreeBSD

   El sistema operativo FreeBSD goza de una merecida fama de por su gran
   estabilidad, junto con su pragmatismo y sentido comun a la hora de poner
   aplicaciones "on-line" gracias a su excelente coleccion de Ports. Nosotros
   consideramos su proceso de generacion de releases muy sencillo de
   entender, ademas de que la comunidad de usuarios de las listas oficiales
   de correo electronico mantiene un estilo educado y civilizado cuando
   ayudan o leen los problemas de otros usuarios y sus soluciones.

   Otra caracteristica importante es su rapida implantacion. Afortunadamente
   pudimos establecer nuestra politica de instalacion de SO alrededor de las
   capacidades predefinidas de FreeBSD. En una compania pequena algunas veces
   necesitas ir corriendo a un centro de datos y rapidamente levantar un
   servidor para proporcionar algun servicio. En los dos ultimos anos,
   Argentina.Com adquirio alrededor de cuarenta servidores, la mayoria
   Pentium IV pero tambien varios Xeon duales y unos cuantos Opteron duales
   para ubicarlos en los centros de datos donde tenemos los contratos de
   operaciones de "hosting" y de acceso telefonico a redes. Todos ellos
   ejecutan FreeBSD, desde 4.8 (un par de ellos con dos anos de "uptime" y
   cero problemas) hasta 6.0-BETA2.

   La politica general que tenemos para con el sistema operativo consiste en
   intentar llevar a todos los servidores a la rama de codigo estable de una
   forma periodica utilizando RELENG_4, RELENG_5 y ahora RELENG_6. Estas
   operaciones nos permiten estar mas preparados ante posibles amenazas de
   seguridad a nivel del sistema operativo o del software base del mismo,
   especialmente en los servidores web.

  3.3. Reingenieria basica

   El prime paso de reingenieria fue poner en funcionamiento dos maquinas
   FreeBSD 4.8 cuya unica tarea iba a consistir en ser DNS autorizados para
   todos nuestros dominios. El software elegido resulto ser BIND9. Estas
   maquinas se ubicaron en diferentes centros de datos, cuidandonos de
   asegurar una buena latencia entre ellos para evitar problemas en
   transferencias de zonas, haciendo posible tratar con TTLs entre 60 y 600
   segundos para asi poseer unos mejores margenes de reaccion en caso de
   problemas.

   El segundo paso consistio en desplegar dos maquinas mas del mismo tipo,
   tambien en distintos centros de datos, para solo servir Radius y DNS
   recursivo. Los servidores de acceso de red ("Network Access Servers" o
   NAS) de los operadores de telecomunicaciones se configuraron para enviar
   las peticiones de autorizacio y "accounting" de Radius hacia los nuestros,
   y tambien para asignar dichos DNS recursivos a nuestros usuarios de acceso
   telefonico.

   La tercera "regla de oro" consiste en no poner jamas en la misma maquina
   el servicio de entrada y salida de correo SMTP. Desplegamos maquinas
   FreeBSD distintas utilizando Postfix tanto para la entrada como para la
   salida.

  3.4. Migracion del correo

   La migracion del correo requeria una planificacion cuidadosa debido al
   hecho de que ibamos a a migrar tanto los frontales como los "backends". El
   primer paso fue construir un sistema perimetral antispam y antivirus con
   FreeBSD 4.x y 5.x basado en postfix, amavisd-new, clamav y SpamAssassin.
   Estos sistemas iban a entregar correos tanto a los antiguos sistemas como
   a los nuevos hasta que el nuevo "backend" estuviera en funcionamiento.
   Entre tanto anadimos pequenas maquinas FreeBSD para incrementar el "spool"
   de correo de CriticalPath sin ningun problema.

   En la primera linea de la entrada de correo pusimos varios MX del dominio
   Argentina.com para filtrar ataques de diccionario (intentos de reenviar
   correo a usuarios no existentes) ademas de una lista negra derivada de
   SURBL que resulto no dar casi ningun falso positivo. Los correos eran
   multiplexados hacia un cluster de Xeon duales y Opteron duales donde
   ejecutabamos amavisd-new junto con un filtrado basado en listas blancas y
   negras basado en MySQL. Descartamos el uso de Bayes y Autowhitelisting en
   un nivel global debido a las grandes cantidades de falsos positivos y de
   falsos negativos que proporcionaban. En su lugar definimos unos cuantos
   niveles de spam de menos a mas tolerante, cada uno con niveles de corte y
   de descarte. A cada correo electronico recibido el sistema le asigna una
   determinada puntuacion. Los correos con una puntuacion por debajo de la
   puntuacion asociada con el nivel de corte establecido por el nivel de spam
   pueden continuar hasta la bandeja de entrada del usuario. Los correos
   entre el nivel de corte y el nivel de descarte se envian a una carpeta del
   usuario denominada Spam, y por ultimo aquellos correos por encima del
   nivel de corte se descartan porque se considera una situacion muy evidente
   de spam. En aras de la simplicidad, se asocian de forma transparente los
   correos almacenados en la libreta de direcciones con el sistema antispam,
   colocandolos en las "listas blancas" de forma automatica.

   Con la introduccion de Spamassassin 3.x, el trafico de DNS utilizado para
   preguntar a las listas negras de correo crecio considerablemente, de tal
   forma que firmamos acuerdos con SpamCop, Spamhaus y SURBL para instalar
   replicas publicas de sus bases de datos en nuestro equipo FreeBSD. Gracias
   a estas replicas, que nos costaron entre 1 y 2Mbps de trafico, fuimos
   capaces de reducir drasticamente la latencia de Spamassassin.

   En un tercer nivel nos encontramos con la entrega a los buzones de correo
   de los usuarios. Tan pronto como nos pusimos a contruir el nuevo "backend"
   Cyrus-Imap con autentificacion MySQL, nos dimos cuenta de que
   necesitabamos multiplexar el correo de entrada a los usuarios en los
   formatos de los buzones nuevos y antiguos. Finalmente, conseguimos migrar
   cientos de miles de correos hacia la nueva arquitectura Cyrus utilizando
   una fenomenal herramienta denominada imapsync, que se puede instalar
   directamente desde los ports. Tambien instalamos perdition (un proxy de
   POP3 y de IMAP) entre medias para asegurar una migraci'n transparente y
   permitir la distribucion entre distintos servidores de los buzones. En
   resumen, toda la informacion de localizacion de un buzon de usuario esta
   en MySQL, y dicha informacion se encuentra disponible para todo el
   software que forma parte de la cadena.

   Respecto al hardware para el espacio de disco, actualmente utilizamos
   siete maquinas FreeBSD con Cyrus-Imap de distinto hardware. El mayor es un
   Pentium IV con 4G de RAM y tarjetas 3ware con 12 bahias extraibles en
   caliente, organizadas en 3 unidades RAID-5 de 1 Terabyte cada una. El
   software 3ware envia un correo electronico al administrador cuando el RAID
   se degrada (en la mayoria de los casos se trata de errores de disco) y es
   posible reconstruir el RAID con el sistema a pleno rendimiento. Utilizamos
   smartmontools en los casos en los que hay menor redundancia, para disponer
   inmediatamente de alertas de discos con problemas de temperatura o de
   fallos de "selftests".

   Como software de correo web elegimos un producto comercial denominado
   Atmail, disponible con sus fuentes en perl y que utiliza mod_perl. Bajo
   FreeBSD resulta extremadamente sencillo gestionar los modulos de perl y no
   es necesario usar la "shell" de CPAN; unicamente hay que seleccionar el
   port correcto y ejecutar "make install". Tras varios meses de trabajo de
   integracion pudimos integrar la parte cliente de Atmail que habla IMAP con
   nuestros "backends". Tuvimos que modificar algunas partes del codigo para
   adaptar el producto a nuestro entorno libre y para hacerlo compatible con
   nuestro perimetro antispam antivirus, ademas de aplicar nuestras
   personalizaciones y traducciones.

  3.5. Migracion web

   Con la adopcion de FreeBSD no hubo que realizar ningun esfuerzo adicional
   para tener en ejecucio en cuestion de minutos los entornos de Apache, PHP
   y MySQL. Incluso las actualizaciones de PHP4 a PHP5 se efectuaron sin
   problemas. El sistema de ports nos resulto una vez mas extremadamente util
   y nos permitio hacer cosas como comprimir los contenidos de texto y de
   html de Apache utilizando unas pocas lineas de documentacion. Ademas,
   hemos experimentado un rendimiento excelente y una estabilidad y "uptimes"
   extraordinarios.

4. Resultados

   Conseguimos implantar una arquitectura de correo electronico basada en
   FreeBSD que es escalable horizontalmente, utilizando 3 Terabytes de
   almacenamiento basado en servidores Intel incurriendo en un coste de 3
   dolares por Gigabyte con redundancia.

   La gran estabilidad alcanzada permitio a Argentina.com explorar otros
   campos como el "hosting" para terceros y el "housing" con presencia en los
   centros de datos argentinos.

   Ahora ofrecemos tambien acceso telefonico a redes corporativas para
   usuarios de "roaming" y Peru gracias a nuestra presencia y a los acuerdos
   suscritos con la mayoria de los operadores de telecomunicaciones. Entre
   nuestros clientes indirectos se encuentran las principales companias
   americanas como Ford, Exxon y Reuters. Tambien estamos en el negocio del
   acceso telefonico a redes en Brasil, Chile, Colombia y Panama.
