Objetivos del Proyecto
Los principales objetivos del proyecto son:
- Disponer de una infraestructura capaz de absorber la carga en los periodos punta sin necesidad de mantener una flota de servidores sobredimensionada.
- Minimizar los costes operativos de la infraestructura de servidores.
- Optimizar los procesos de despliegue de las aplicaciones de negocio.
- Mejorar la infraestructura de monitorización de la plataforma.
- Garantizar la seguridad en el acceso a las distintas aplicaciones empresariales y minimizar la superficie de aplicación expuesta al tráfico externo.
- Optimizar los procesos de copias de seguridad y recuperación frente a desastres.
Para dar solución a todos estos requerimientos se decidió migrar toda la infraestructura de servidores a Amazon Web Services, adaptando cada parte del conjunto para maximizar los beneficios que ofrecen los servicios gestionados de AWS.
E-Commerce
La plataforma de comercio electrónico de Interflora supone el principal punto de entrada del negocio y es la parte más expuesta a Internet, con lo que se hacen críticos los siguientes requerimientos:
- Maximizar la disponibilidad del servicio, incluso en escenarios de picos de carga inesperados o programados.
- Minimizar el tiempo de respuesta al cliente final
- Minimizar la exposición de servicios en Internet
Para conseguir estos objetivos se optó por la implementación de múltiples servicios gestionados de AWS:
- EC2 + Autoscaling: La implementación de Autoscaling permite a Interflora adaptar el tamaño de su infraestructura a las necesidades reales del negocio en cada momento e implantar un mecanismo de recuperación automático en caso de fallo en alguno de los nodos.
- Elastic Load Balancing (ELB): El servicio de balanceador de carga gestionado de Amazon permite minimizar la superficie de ataque expuesta en Internet y proporciona un mecanismo de balanceo de carga robusto y escalable con un tiempo de implantación de unos pocos minutos.
- Relational Database Service (RDS): Base de datos relacional con gestión automatizada de copias de seguridad, replicación, failover y escalado vertical.
- Elasticache: Caché y almacén de sesiones compartido por todos los nodos de aplicación.
- Cloudfront: Red de distribución de contenidos con modalidad de pago por uso para la optimización en la descarga de contenidos estáticos y reducir la necesidad de aprovisionar una infraestructura de servidores permanente para este fin.
Aplicaciones Empresariales
Interflora cuenta con diversas aplicaciones de gestión empresarial que facilitan la gestión de múltiples procesos de negocio más allá de la simple recepción de pedidos llevada a cabo en la parte de E-Commerce:
- Gestión de pedidos (ERP)
- Atención al Cliente (CRM)
- Gestión financiera
- Administración interna
- Business Intelligence
Toda esta actividad se desarrolla con aplicativos de gestión empresarial comercial sobre una infraestructura Windows que se apoya en diversas tecnologías Microsoft como Active Directory o MS SQL Server, siendo este último uno determinante en el rendimiento del sistema debido a la elevada demanda de memoria y almacenamiento. Para solventar este problema se ha hecho uso de instancias EC2 optimizadas para EBS (almacenamiento SAN), y volúmenes SSD, cuyo rendimiento predecible y herramientas de monitorización integradas ha permitido llegar a un equilibrio entre el rendimiento deseado y los costes de la infraestructura.
Esta infraestructura de aplicaciones requiere servidores adicionales de reporting y business intelligence, y provee una capa de servicios web para la integración del ERP con el sistema de E-Commerce, balanceada entre los distintos servidores de aplicación mediante ELB. El esquema de los distintos servicios queda como en la siguiente figura:
Para garantizar un acceso óptimo al aplicativo de gestión empresarial, y debido a las fuertes restricciones de las herramientas de cliente en cuanto a latencia con los servidores de aplicación, insalvables debido a las latencias entre España y el datacenter AWS más próximo, se decidió implantar una infraestructura de Servicios de Escritorio Remoto para proporcionar a los usuarios en España de un mecanismo óptimo en el acceso a sus herramientas de trabajo.
Infraestructura de Nube Híbrida
Una de las funcionalidades clave para Interflora a la hora de migrar todos los servicios a la nube de Amazon era garantizar una comunicación segura y eficiente con sus aplicaciones de negocio y paneles de mandos, así como seguir permitiendo una correcta sincronización dentre ciertos servicios hospedados en las instalaciones de Interflora España (Active Directory, VoIP, etc.) con el resto de infraestructura en AWS.
Para lograr este objetivo con las máximas garantías se optó por la utilización de AWS DirectConnect en colaboración con Colt, uno de los múltiples partners en España que proporcionan acceso a dicho servicio. DirectConnect otorga a los clientes finales la posibilidad de conectarse a un puerto de físico dedicado para la conectividad de red con todos los servicios de Amazon, tanto hospedados en la nube pública de AWS como aquellos alojados dentro del servicio de red privada VPC.
Gestión de la Configuración: Puppet
Con el objetivo de proporcionar un mecanismo de centralización y documentación de la configuración de la infraestructura, sobre todo en lo referente a las instancias Linux del entorno de E-Commerce, se implementó toda la configuración del sistema en forma de manifiestos y módulos de Puppet. Gracias a este servicio, toda la configuración de la plataforma se encuentra centralizada, modelada en forma de código versionable y permite simplificar enormemente la implementación de cambios en la configuración, sin necesitar acceder a cada nodo de forma independiente. Adicionalmente, para facilitar las labores de ejecución paralela de tareas y realizar consultas de información local de un grupo de instancias se implementó Mcollective como mecanismo de orquestación de tareas.
Para que este escenario sea posible con el mínimo de interacción por parte de los administradores de sistemas, se ha implementado un bootstrap personalizado de manera que todas las instancias se registran en estos servicios de gestión de forma automática y se le asignan una serie de propiedades en función de su rol dentro de la infraestructura, de manera que cada nodo o grupo de nodos sea fácilmente localizable mediante filtros simples de Mcollective.
Monitorización y Alertas
Debido al volumen y heterogeneidad de los diferentes servicios que componen la infraestructura de Interfora, se ha decidido utilizar varios servicios diferentes para la consolidación de métricas de rendimiento y logs:
- Amazon Cloudwatch: Todos los servicios de AWS se integran de forma inmediata con este servicio, lo que permite simplificar en gran medida la recolección de métricas de los servicios hospedados en AWS (ELB,RDS, Elasticache, Cloudfront…). Para monitorizar algunos aspectos clave de la infraestructura no disponibles de serie con las métricas proporcionadas por AWS, se implementaron múltiples métricas personalizadas tanto en la infraestructura Windows como Linux.
- Amazon ELB+S3: Todos los ELBs publicados, principal punto de entrada de potenciales clientes, exportan sus logs de acceso a S3 para su posterior análisis.
- ELK: Para proporcionar una visión detallada de los eventos ocurridos en cualquier punto de la plataforma, se implementó un servicio de recolección de logs basado en las herramientas de Elastic Inc. para el análisis de Syslog, Eventos de Windows, Logs de Acceso de los ELBs públicos y múltiples ficheros de log de las distintas aplicaciones internas.
- Ganglia: Aunque Cloudwatch proporciona todas las herramientas necesarias para la monitorización del rendimiento de la infraestructura, la implementación de un recolector de Ganglia y la distribución de agentes en todos los nodos permite la agregación de métricas por conceptos del negocio, ofrece un histórico de métricas mucho mayor y otorga la posibilidad de reportar métricas con una granularidad de segundos.
- Nagios: Para la ejecución de healthchecks personalizados que comprueben el estado de los distintos servicios hospedados en las instancias EC2 se ha utilizado Nagios, el estándar “de facto” para la implementación de este tipo de servicios de monitorización.
Seguridad
Una de las mayores preocupaciones de Interflora a la hora de mover sus servidores a la nube era minimizar el riesgo de brechas de seguridad en el acceso a los distintos servicios que componen la infraestructura de negocio, tanto en la parte pública del mismo (E-Commerce) como en las aplicaciones internas. Para ello, se ha hecho uso de un gran abanico de opciones proporcionadas por los diferentes servicios de red y seguridad de AWS:
- VPC: Todas las instancias EC2 del negocio se alojan dentro de VPC, un servicio de AWS que permite aprovisionar una sección de EC2 completamente aislada de Internet
- Subredes: Dentro de la VPC se aprovisionaron distintas subredes, cada una de ellas destinadas al alojamiento de ciertos tipos de servicios con base en su naturaleza: Acceso público o privado, instancias EC2 administradas por Interflora, servicios gestionados de AWS, Availability Zone, etc.
- Security Groups: En lugar de implementar complejos mecanismos de firewall y ACLs de red, se optó por la utilización de Security Groups, una característica de la gestión de redes en EC2 que permite configurar restricciones de red con base en pertenencia a grupos de cada instancia y/o servicio gestionado de AWS.
- NAT/VPN administrativa: Como se ha mencionado con anterioridad, VPC es una sección de red completamente aislada de EC2. Para proporcionar acceso a Internet y los distintos servicios de AWS hospedados fuera de la red interna (S3, SNS…) se configuró una instancia de NAT por cada zona de disponibilidad. Adicionalmente, estas instancias sirven una VPN para el acceso administrativo a VPC desde ubicaciones remotas.
- Virtual Private Gateway y DirectConnect: Para las comunicaciones con las oficinas de Interflora España de forma segura y con las máximas garantías de latencia y ancho de banda, se ha hecho uso de DirectConnect en conjunción con Virtual Private Gateway. El primero permite la comunicación directa desde las oficinas en España mediante infraestructuras de hardware dedicadas, mientras que el segundo proporciona un mecanismo totalmente gestionado para enlazar la red interna en VPC con el hardware dedicado en DirectConnect.
- ELB: Para minimizar la superficie de ataque expuesta en Internet se decidió reducir el número de instancias EC2 en subredes con acceso público al mínimo posible. Tanto es así, que únicamente las instancias de NAT y VPN Administrativa (una por zona de disponibilidad) son las únicas que cuentan con IPs públicas en toda la infraestructura. Todo el tráfico entrante correspondiente a la plataforma de E-Commerce se produce a través de los balanceadores de AWS, minimizando la superficie de ataque y centralizando la gestión de certificados SSL y algoritmos de cifrado.
Planes de Backup y Recuperación ante Desastres
Para simplificar el proceso de copias de seguridad y recuperación se ha hecho un uso intensivo de las capacidades que ofrece un servicio de Cloud computing como Amazon Web Services:
EC2 y EBS
- AMIs de todas las instancias preparadas para una eventual recuperación del servicio en caso de errores irrecuperables en las instancias de producción.
- Snapshot periódicos de volúmenes de datos.
RDS y Elasticache
- Backup integrado basado en snapshots de volúmenes de almacenamiento
- Recuperación automática de la instancia en caso de errores graves que impidan restaurar el servicio.
- Replicación de datos integrada en el servicio
S3 y Glacier
- Almacenamiento de backups de ficheros mediante tareas programadas desde las instancias EC2 dedicadas al almacenamiento de datos.
- Implementación de ciclos de vida para el archivado automático de backups en almacenamiento de bajo coste y eliminación de objetos antiguos.