Conecta con nosotros

Hola, ¿qué estás buscando?

Actualidad

Entrevista a David Engberg, CTO de Evernote

La tercera entrevista que realizamos en la reciente LinuxCon Europe 2012 fue a David Engberg, Chief Technology Officer (CTO) en Evernote. Seguramente muchos conozcáis este servicio, que permite organizar nuestra información personal a través de notas que pueden contener imágenes, textos, fotografías o grabaciones de voz, por ejemplo. En la actualidad Evernote tiene 33,4 millones de usuarios registrados, 11 millones de usuarios mensuales activos, y nada menos que 450 millones de peticiones HTTPS al día.

David Engberg tuvo la oportunidad de ofrecer la segunda keynote matinal en la jornada inaugural de LinuxCon Europe 2012 el 5 de noviembre. Titulada «Mostly Sunny: While Evernote Runs Their Own Linux Servers Instead of ‘The Cloud’«, esta charla trató de ofrecer una curiosa versión: la de que utilizar la nube de computación no es siempre la opción más adecuada para las empresas.

De hecho, aunque Engberg recomendó el uso de plataformas como Amazon Web Services para la mayoría de startups, también dejó claro que en el caso de Evernote tenía sentido utilizar sus propios servidores y todo tipo de componentes Open Source controlados por el equipo técnico de la empresa.

Tras su presentación tuve la oportunidad de charlar con él en una entrevista que grabé en vídeo en el hall del hotel Fira Palace donde se celebró el evento. Como ocurrió con la entrevista a Mark Shuttleworth, la ausencia de un micrófono dedicado hizo que el sonido grabado no fuese de la mejor calidady las voces no se distinguen con la claridad que sería deseable, así que además del vídeo querría destacar los puntos más importantes tratados durante la entrevista.

Os dejamos con la entrevista en vídeo (en inglés, eso sí) y el reportaje que resume esa media hora en la que pudimos hablar con un CTO accesible y sin ningún tipo de problemas a la hora de confiarnos todo tipo de datos sobre su infraestructura.

Evernote y sus shards

El propio David Engberg es autor de muchos de los artículos del blog técnico de Evernote, y en dicho blog se descubrió hace año y medio la arquitectura básica de Evernote, que tiene como pilar básico el uso de una granja de servidores a los que ellos llaman «shards«, de los que podéis obtener más información en este otro post.

Las cosas han cambiado desde aquel post de mayo de 2011 en el que contaban con unos 90 shards y cada shard albergaba a 100.000 usuarios del servicio Evernote. En el momento de hacer la entrevista Evernote cuenta con 277 shards en total, cada uno de los cuales da servicio a 200.000 usuarios de Evernote.

De hecho, el crecimiento de Evernote ha sido notable en los últimos meses, y como comentaba Engberg, actualmente el ritmo de crecimiento es de unos 70.000 nuevos usuarios al día. Eso significa que cada nuevo servidor, que almacena esos 200.000 usuarios, completa su capacidad en aproximadamente 2 días y medio o 3 días. Engberg nos relataba el comienzo del servicio: Evernote comenzó con 2 shards que tenían 100.000 usuarios cada uno, y esos dos primeros servidores fueron suficientes para su servicio durante los primeros 6 meses.

Advertencia, desplázate para continuar leyendo

El ritmo a partir de ese momento se incrementó, y actualmente en Evernote ya no dejan preparados shards independientes cada 3 días. En lugar de eso contratan racks enteros con 18 servidores (14 de ellos en formato 1U para los metadatos de usuarios) que son capaces de dar servicio a unos 3 millones de usuarios, lo que hace que cada rack sea capaz de aguantar los nuevos registros que llegan durante unos 2 meses y medio.

«En esa escalabilidad juega un papel fundamental la automatización«, nos comentaba David Engberg, que afirmaba que el trabajo con herramientas como Puppet con Debian permite dejar preparado un nuevo shard en uno de estos racks en 30 minutos, listo para dar servicio y funcionar perfectamente.

El trabajo de los shards se conjuga en esos nuevos registros con los balanceadores de carga, que permiten establecer a qué shard pertenece cada usuario, y redireccionan las peticiones convenientemente. Esos balanceadores son máquinas específicamente destinadas a ese propósito que -sorpresa- se basan en una solución propietaria, uno de los pocos elementos donde no hacen uso de Open Source.

Le preguntamos a David Engberg por qué. «Hay alternativas Open Source válidas en el caso de transacciones HTTP convencionales, pero la cosa se complica en nuestro caso, porque trabajamos con transacciones HTTPS y protocolos SSL. Eso hace que el balanceador pueda convertirse en un cuello de botella, y por eso usamos estas máquinas, que disponen de módulos de cifrado que permiten resolver este problema«.

El secreto está en los SSD

Una de las curiosidades de la arquitectura de Evernote es el hecho de su evolución en rendimiento: mientras que hace año y medio cada servidor albergaba los datos de 100.000 usuarios, ahora esos mismos servidores llegan a los 200.000 usuarios. ¿La razón? El uso de unidades SSD en lugar de discos duros tradicionales, algo que también comentó en su post «Shard Boiled» en abril de 2012.

El CTO de Evernote explicó como investigaron el mercado de las unidades SSD y descubrieron un apartado fundamental: la superioridad manifiesta de estas unidades en operaciones Random I/O por segundo. Esas investigaciones -en las que probaron diversas unidades MLC y SLC– concluyeron con la elección de las unidades que usan actualmente, las Intel 320, que según su opinión aún no tienen competencia en el mercado en este apartado.

Por ahora Xen. Puede que el futuro sea de KVM

Otro de los componentes básicos de la arquitectura de Evernote es el uso de Xen, la plataforma de virtualización que ahora se ha visto desplazada en gran medida por KVM. Al preguntarle el por qué de esa elección, Engberg nos comentó que hoy por hoy Xen sigue siendo la mejor opción para ellos.

Aunque en diversas comparativas han comprobado que KVM se comporta mejor en algunos apartados, no ocurre así con el rendimiento de Random I/O por segundo, las citadas operaciones de entrada y salida que son el corazón del servicio ofrecido por Evernote.

Sin embargo, explicaba Engberg, siguen mostrando interés por KVM, que como él decía, es mucho más sencillo de gestionar y manejar que Xen, que es «un engorro«. Este ingeniero dejó claro que puede que en un año o año y medio migren a KVMsi se demuestra que ese rendimiento en Random I/O por segundo se equipara o supera al de Xen.

Java, MySQL y Debian, componentes fundamentales

Nos extrañó comprobar cómo Java era uno de los pilares de Evernote: este lenguaje no es precisamente el más rápido del mundo y eso haría pensar en otras alternativas más de moda como PHP o Ruby, pero David Engberg explicó que en realidad sus operaciones lo hacen perfectamente usable. En Evernote hacen uso de una potente caché en Java (Ehcache), y no tienen los requisitos que podrían resolver lenguajes teóricamente más adecuados para estos escenarios.

Además, comentaba Engberg, utilizaron Java por otra razón importante: la experiencia del equipo técnico de Evernote con Java era muy extensa. De hecho el propio Engberg fue el creador del primer compilador Java para Linux en el año 1995, guavac, del que podéis encontrar más información en este enlace. Ese argumento ya deja claro que se sienten muy cómodos con este potente lenguaje de programación.

También le preguntamos por MySQL un sistema de gestión de bases de datos cuyo futuro es incierto por las decisiones que Oracle está tomando con respecto a la mayoría de soluciones Open Source que adquirió con la compra de Sun Microsystems. Engberg no renuncia a utilizar alternativas declaradamente abiertas como PerconaDB -de hecho, usan este gestor en pequeñas partes de su infraestructura- pero de momento no hay justificación clara para dar el salto a un nuevo motor de bases de datos.

Otro de los pilares fundamentales de estos servidores o shards es el uso de Debian, un sistema operativo que Engberg calificaba como «rock -solid» y que prefería a alternativas como CentOS o la propia Red Hat Enterprise Linux, que le sugerimos que quizás era una opción interesante por sus servicios de soporte. De nuevo Engberg apostó por su equipo técnico, con muchas tablas en el uso de Debian-y certificaciones Red Hat por si se diera el caso- y con una mentalidad clara: «somos muy conservadores con el uso de versiones de software». Así es: en Evernote utilizan componentes estables y que son utilizados por el 90% de los usuarios. Ocurre lo mismo con MySQL -usan la versión 5.1- y con otros componentes en los que ante todo lo importante es la estabilidad y la fiabilidad.

A Evernote le cuesta menos funcionar sin Amazon que con él

Por último, comentamos algunos de los datos que este CTO presentó durante su keynote. En ella se analizaban los costes que tendrían sus actuales operaciones si las ofrecieran a través de Amazon Web Services.

En la comparación se analizaron los costes de networking -transferencias y ancho de banda consumido-, computación y metadatos -lecturas y escrituras que harían en EC2 y EBS-, y almacenamiento de datos -lo que harían en Amazon S3-. Las conclusiones eran claras, como podéis ver en las imágenes: al sumar todos esos costes mensuales, Evernote tendría que invertir entre 182.300 y 284.300 dólares en Amazon, mientras que con su infraestructura actual -mucho más optimizada- el coste es de 90.500 dólares al mes.

En ese ahorro habría que tener en cuenta que no están incluidos los gastos por mantener en plantilla a un equipo técnico como el de Evernote -lo que sin duda sumaría unas decenas de miles de dólares más- pero aún así Engberg se mostraba confiado en su decisión. «Algunas de las cosas que nos toca hacer son tediosas y no tendríamos que hacerlas si dejáramos todo en manos de Amazon, pero al final todo compensa a nivel económico«.

41 Comentarios

Te recomendamos

Miscelánea

Ni estábamos muertos, ni estábamos de parranda. Estábamos, como veis, dándole una vuelta a MuyLinux, que falta le hacía y se nos ha liado...

Actualidad

El pasado 28 de abril de 2011 llegaba al mercado la versión final de Ubuntu 11.04 Natty Narwhal, una distribución que ya de por...

Actualidad

Kali Linux 2022.2 es la nueva versión de la distribución especializada en seguridad, la segunda en lo que llevamos de año y trae unas cuentas...

A fondo

La información sobre la que se sustenta esta entrada tiene un par de semanas, pero vale la pena no darla por perdida por las...