Infraestructura de etece en la nube de Amazon


Hace pocas semanas que hemos lanzado etece.es, tiempo para los que no tienen tiempo. En los próximos posts iré comentando algunos aspectos que creo que merece la pena compartir por si a alguien le puede ayudar. El primero que voy a abordar es el relacionado con la infraestructura y cómo lo hemos montado en la nube de Amazon.

Antecedentes
La primera vez que analicé a fondo la nube de Amazon como alternativa al hosting tradicional fue en 2008 cuando era CTO de Toprural. En aquel momento estábamos planificando un cambio de CPD y Amazon fue una de las alternativas que estudiamos. En aquella época, los servicios de Amazon se limitaban a EC2, S3 y muy poco más lo que suponía demasiadas limitaciones para lo que Toprural necesitaba. Finalmente y hasta hace bien poco, dejamos Toprural funcionando en máquinas propias en una huella contratada en un CPD de Madrid.
El segundo contacto serio con la nube de Amazon lo tuve en Planeo. Toda la infraestructura de Planeo se montó en Amazon, aunque fue el equipo de sistemas de Medianet quien montó todo en base a los requisitos que les transmitimos. En cualquier caso, me permitió conocer de primera mano muchos de los servicios que ofrecen actualmente.

Infraestructura para etece
Tenía bastante claro que Amazon nos ofrecía todos los servicios de infraestructura que vamos a necesitar, al menos en los primeros años, y que lo podíamos montar de manera fácil y rápida. Por ello nos pusimos manos a la obra y hemos montado la infraestructura de etece usando lo siguiente:

  • EC2 (máquinas virtuales) para los servidores web donde básicamente corren los Apache con PHP
  • Los EC2 de la web están detrás de un balanceador ELB que permite añadir y quitar de manera muy fácil, rápida y dinámica (si tienes tiempo de configurarlo) servidores web en función de la demanda (autoscaling).
  • Como base de datos usamos RDS, servicio de base de datos relacional que puede correr Oracle, SQL Server o MySQL, nuestra elección.
  • ElastiCache, el servicio de Memcache que ofrece Amazon, para la caché de aplicación y la gestión de las sesiones de Apache, permitiendo así la alta disponibilidad de los servidores web.
  • CloudFront, CDN de Amazon, que sirve el contenido estático por diferentes dominios. En nuestro caso usamos subdominios distintos para estilos, imágenes y scripts.
  • SES, servicio de envío de emails (se terminaron los dolores de cabeza para mantener un SMTP que envíe correctamente sin llegar a spam) para los emails transaccionales de la aplicación.
  • Route 53, el DNS de Amazon, necesario si quieres apuntar un dominio directamente a un CNAME. Los balanceadores no tienen IP fija y si no usas este servicio necesitaras un subdominio por delante de tu dominio, por ejemplo www.
  • CloudWatch en conjunción con SNS (servicio de notificaciones) para la monitorizacion y alertas de todos los servicios anteriormente indicados. Asociado a alertas puedes lanzar acciones como levantar o parar más instancias de las mismas máquinas.

Amazon tiene más servicios pero a nosotros con esto nos basta y nos sobra.
Entrar al detalle de cómo hemos montado todos y cada uno de los elementos llevaría mucho tiempo y no es el objetivo de este post. No obstante, es posible que aborde algún aspecto en concreto bajo petición de algún lector.

Pros
Llevar tu infraestructura a la nube de Amazon tiene muchas ventajas. Algunas de las más significativas para etece son:

  • Alta disponibilidad nativa en muchos de los servicios como SES, ElastiCache, RDS, etc…
  • Escalabilidad horizontal muy sencilla si has definido todo bien desde la base.
  • Pago por uso. Puedes tener una infraestructura muy potente y pagar muy poco si tienes poco tráfico.
  • Servicios en continua mejora y evolución. Amazon está apostando fuerte por sus servicios web y se nota.
  • Olvidarte por completo de algunos servicios que son comodity y que causaban muchos dolores de cabeza como SMTP, réplicas de base de datos, rotación de backups, etc…

Contras
No todo puede ser prefecto y existen algunos puntos que hay que considerar. La mayoría tienen que ver con detalles de algunos servicios pero no por eso dejan de ser contras:

  • No es barato. La nube de Amazon te da muchas cosas pero las pagas. No es prohibitivamente caro pero si algo más que otras alternativas como VPSs de algunas empresas.
  • El servicio de base de datos relacional con MySQL (no se si pasa con los otros SGBD) sólo funciona con timezone UTC sin posibilidad de cambio lo que te obliga a tenerlo en cuenta en tus aplicaciones.
  • Si vas con Amazon es para ir con todo y no quedarse a medias tintas. Es la maneja de usar todo su potencial.
  • Debes controlar la calidad de tus emails para mantenerte dentro de unos criterios que define Amazon si quieres usar SES.
  • La invalidación de contenido servido por CloudFront es muy lenta, es mejor usar versionado de los elementos y controlar tu mismo su invalidación.
  • La consola web está muy bien pero hay cosas que se tienen que hacer mediante el uso del API a través de la SDK como el autoscaling lo que supone, en algunos casos, invertir más tiempo del deseable para dejar todo muy fino.
  • No existe a día de hoy un servicio de almacenamiento compartido. Hay gente que usa S3 para este propósito pero el tiempo de acceso a los recursos lo desaconseja totalmente. Nosotros hemos montado un servidor que comparte su almacenamiento por NFS y mientas las máquinas con las que comparte estén en la misma región, el tráfico es gratuito.

Operativa
Como parte de nuestras tareas básicas de operaciones hacemos algunas preventivas que se podrían automatizar pero de momento no tenemos tiempo:

  • Tenemos siempre una imagen actualizada de cada tipo de máquina que usamos. Así levantar nuevas imágenes clon manualmente y escalar a demanda es casi inmediato, aunque es manual.
  • Guardamos snapshots de cada máquina después de cada cambio para poder recuperar el último punto bueno conocido y poder crear nuestras propias imágenes cuando necesitemos.
  • Monitorizamos mediante CloudWatch todos los parámetros importantes de cada servicio y asociamos alarmas a los más importantes.

Todavía nos queda mucho camino que recorrer pero creo que tenemos un buen punto de partida. Espero que estas líneas puedan ayudara alguien y por supuesto, estaré encantado de contestar las preguntas relacionadas con el tema, siempre que conozca la respuesta.

Anuncios

Amazon compra BuyVIP por 70 millones


Mañana día 7 de octubre de 2010 se anunciará formalmente en rueda de prensa la noticia de la que llevan hablando varios medios como Cinco Días o Expansión e importantes blogs como el de Carlos Blanco, que una vez más demuestra tener las mejores fuentes de información. Se trata de la compra por parte de Amazon de BuyVIP, uno de los más grandes, si no el más grande, club de ventas privadas de España, por 70 millones de euros.

Antes de entrar en más detalles, mi mas sincera enhorabuena a los tres fundadores Gustavo García, José Luis Vallejo y Gerald Heindenreich. Sin duda su visión y trabajo han hecho de BuyVIP una de las empresas de comercio electrónico más importantes de España, con una visión internacional desde su nacimiento.

Buena o mala negociación

Una operación de este tipo lleva varios meses de duro trabajo y negociación por lo que sin duda cuando se cierra es siempre un éxito, aunque en las últimas horas se ha visto empañada por la excelente operación que ha cerrado Privalia, que ha hecho una ronda de 70 millones, los mismos que ha pagado Amazon por BuyVIP, lo que pone de manifiesto que quizá Amazon es buen negociador o  los responsables de BuyVIP son malos negociadores.

En mi opinión la valoración ha sido baja, teniendo en cuenta el fuerte crecimiento que siempre ha tenido BuyVIP desde su nacimiento y su presencia internacional, aunque sin duda el momento económico que vivimos habrá afectado. Además, al igual que pasa con Privalia, su mayor competidor nacional, corren rumores de su precaria situación financiera, lo que sin duda ha reforzado la posición de negociación de Amazon.

Acuerdos de permanencia

Ahora se abre una nueva etapa en BuyVIP en la que está por ver cómo se integra dentro del negocio de Amazon y cómo Amazon desembarca en España y cómo afectará esto a los directivos de BuyVIP. Se habla de que la cúpula directiva ha firmado un acuerdo de permanencia de tres años y que parte de sus participaciones en BuyVIP se transforman en phantom shares convertibles año a año. Éste es quizá el punto que veo más controvertido y al que si yo fuera todavía CTO de BuyVIP hubiera puesto más pegas, aunque no conozco los detalles de dicho acuerdo por lo que es mejor no especular.

Operaciones de este tipo son muy buenas para el sector, ya que ponen de manifiesto que Internet y el comercio electrónico son negocios con grandes posibilidades, tanto para los emprendedores como para los inversores. Espero que esta sea otra más de una larga lista de operaciones de éxito para empresas de Internet españolas.