Servidores en la nube con Amazon Web Services

Servidores en la nube con Amazon Web Services

Desde hace ya varios años, en Imaginanet hemos estado usando las soluciones de Amazon Web Services como sistema de servidores virtualizados online. La experiencia en cualquier caso, ha sido muy buena con los servicios EC2, S3, CloudFront, RDS, Route 53, SES, SNS, etc. y no deja de crecer en cuanto a los servicios que ofrece.

 

Ventajas de los servicios de AWS sobre los hostings tradicionales

La gran ventaja es que se puede dar una solución a medida para cualquier proyecto, que sólamente está por detrás de montar por nosotros mismos, con todas las desventajas que a su vez supone.

La personalización es total:

  • Crear redes virtuales entre servidores

  • Distribución de archivos desde CDN

  • Configuración de firewall

  • Balanceo de carga

  • Gran infraestructura de red que nos protege de ataques DDoS

  • Snapshots de los discos duros

  • Envíos masivos de emails

  • Notificaciones Push para apps móviles

  • Servidores externos específicos para bases de datos SQL y NoSQL

y mucho más. Todo ello con una API de desarrollo que permite una total automatización de todos los servicios. Como podemos ver, AWS es mucho más que un hosting tradicional, por lo que deberían ser categorizados de servicios de virtualización online.

 

Amazon EC2: Elección del tipo de instancia

El servicio principal de AWS, en el que se pueden lanzar servidores (también llamados instancias) del tamaño que se necesite y nosotros podremos configurar según nuestras necesidades las aplicaciones que deben correr.

En primer lugar deberemos elegir el tamaño, que pueden ser de muy diferentes tipos. Podemos ver las características de las instancias en http://aws.amazon.com/es/ec2/instance-types/  y hay de múltiples tipos:

  • Uso básico y entorno de desarrollo: Instancias T2, que sirven como servidores de pruebas ya que sus vCPUs están compartidas y se el procesamiento se comporta a modo de ráfagas.

  • Uso general, en el que destacan las del tipo M3 y M4, que según la elección constan de 1 a 40 vCPU  con procesadores Intel Xeon E5-2676 v3 y E5-2670 v2 con una memoria RAM de 3,75GB A 60GB. Los usos son los de trabajos sencillos de servidores web, bases de datos como SQL Server o MySQL.

  • Optimizadas para la computación, de los tipos C3 y C4 de 1 a 36 vCPUs, con procesadores Intel Xeon E5-2666 con una memoria RAM de 3,75GB A 60GB. Al igual que las M3 y M4, el uso es general, como por ejemplo aplicaciones web con base de datos, pero a diferencia del anterior, los procesadores son más potentes obteniendo un mayor rendimiento.

  • Optimizadas para alto uso de memoria RAM, que son la familia R3, donde nos permiten tener desde 15,25GB a 244GB de RAM. Se recomiendan las instancias con memoria optimizada para bases de datos de alto uso y rendimiento, cachés de memoria distribuida e implementaciones grandes de SAP, Microsoft SharePoint, Alfresco y otras.

  • Optimizadas para el procesamiento de gráficos y vídeo, los tipos G2 con GPU NVIDIA de alto rendimiento, con 1536 núcleos CUDA y 4 GB de memoria de vídeo. Las aplicaciones son render de gráficos o 3D con software como por ejemplo 3D Studio o Blender, computación de altas prestaciones basadas en GPUs, codificación de vídeo como por ejemplo para streaming de vídeo en directo a través del códec H.264

  • Optimizadas para el operaciones E/S en almacenamiento, la familia I2, basadas en discos duros SSD de altas prestaciones. Se utilizan en las bases de datos NoSQL como Cassandra y MongoDB, aumentan el escalado de las bases de datos transaccionalesde tipo SQL, el almacenamiento de datos requieran un alto movimiento de operaciones I/O, los sistemas de archivos de clúster distribuidos y de Apache Hadoop.

  • Optimizadas en densidad de almacenamiento, la familia D2, que proporciona discos duros de 4TB. Los usos son almacenamiento de datos Massively Parallel Processing (MPP), clúster de MapReduce y Hadoop, sistemas de archivos distribuidos, sistemas de archivos de red, aplicaciones de registro o almacén de datos.

Evidentemente según elijamos, cada tipo de instancia tendrá un coste u otro como podemos ver en http://aws.amazon.com/es/ec2/pricing/

El coste hora, como todas estas plataformas de soluciones cloud a medida, será un precio hora, con cargos adicionales según el uso que se le haga.


Amazon EC2: Monitorización, configuración de red, almacenamiento, balanceo de carga y seguridad

Una vez elegida la instancia, podremos modificar todo lo relevante entorno a ella en un entorno de virtualización de servidores

Monitorización

Podremos monitorizar y ser informados vía email ante las alarmas que definamos, del uso de CPU, uso de RAM, E/S de disco, transferencia de disco y de red de forma básica, y si además queremos métricas más avanzadas podremos con el servicio CloudWatch.

Almacenamiento

Podremos definir discos duros del tipo EBS (equivalente a las prestaciones de SATA) y del tipo SSD, añadírselos en caliente a nuestros servidores, además de gestionar los snapshots de cada uno de ellos. Como ejemplo de optimización, podríamos tener unos servidores de base de datos transaccionales en discos duros SSD, mientras los archivos web en discod duros EBS.

Red y seguridad

En el apartado de networking, podremos definir las reglas a nivel de firewall de red antes de que lleguen a nuestra propia instancia, direcciones IP e interfaces de red.

También podremos definir opciones avanzadas como balanceo de carga entre varias instancias y replicaciones.

Auto escalado

El auto scaling nos permite que en función de la carga, de manera automática una instancia haga uso de más o menos vCPUs y memoria RAM, con el consiguiente ahorro de costes.


Amazon RDS y DynamoDB

Estos servicios proporcionan servidores dedicados para nuestras bases de datos transaccionales y NoSQL. En el caso de RDS nos proporciona las bases de datos SQL del tipo MySQL, PostgreSQL, Oracle y SQL Server, mientras que el servicio DynamoDB proporciona un servicio NoSQL.

Lo que nos proporciona este servicio es evitar el típico cuello de botella en la base de datos que producen proyectos con un elevado tráfico, separándolo así del servidor.

El grado de configuración es el mismo que si instalamos nuestro propio servidor de base de datos y de igual manera podemos programar actualizaciones de la versión, snapshots, recuperación, etc.


Amazon S3 + CloudFront

Nos permite el almacenamiento de archivos estáticos en servidores externos a los nuestros que están especializados en el almacenamiento y distribución de archivos.

Los archivos son guardados en buckets, que luego contienen las carpetas y archivos que almacenamos. Lo más interesante es integrarlo con el API REST que S3 nos proporciona desde programación, ya que por ejemplo, podemos desde un servidor EC2 generar un gran archivo que de manera automatizada lo servimos desde S3 y liberamos al servidor EC2 de servirlo. Podemos encontrar más información sobre el API REST de S3 en http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html o incluso una implemente de un SDK en PHP oficial en http://aws.amazon.com/es/sdk-for-php/

Un añadido muy importante es la inclusión de CloudFront, que es un CDN para S3 que nos proporciona que el archivo se replique por todo el mundo y gracias a la misma URL de descarga, sea descargado desde el servidor más cercano al usuario. Lo mejor, es que este proceso es totalmente transparente al desarrollador, y símplemente con activarlo desde el panel de control de CloudFront ya lo tendríamos funcionando.


Costes y soporte en AWS

Como era de esperar, lo bueno tiene un coste. Los costes de AWS son significativamente superiores a los de un hosting tradicional, no pudiendo competir con ellos. También hay que decir que realmente el servicio que nos proporciona AWS no es el de un hosting profesional, ya que el control y servicios que tenemos es muy superior.

Los costes deben ser calculados a modo orientativo a través de su calculadora de precios, que puede visitarse en http://calculator.s3.amazonaws.com/index.html que siempre puede variar en función del tráfico. Una buena manera de ahorrar en costes es usar la opción de reserva, en la que los costes bajan un porcentaje razonable si se realiza el pago por adelantado

Una característica es que la instalación, soporte y resolución de problemas corren a nuestro cargo. Esto nos supone que en aplicaciones críticas, el soporte 24x7 corre a nuestro cargo.


Otros servicios online como Heroku, Digital Ocean o Google Cloud Platform

En próximas entradas hablaremos de otros servicios de características parecidas pero con algunas diferencias:

  • Heroku: el sistema es diferente ya que se basa en no dejarnos un servidor que nosotros pondremos en marcha, si no que ellos nos dan un servidor en el que luego nosotros pondremos nuestra aplicación en ella. La replicación y clustering es muy sencillo con un SDK de desarrollo muy amplio.

  • Digital Ocean: proporciona sólo los principales servicios de AWS pero con un precio mucho más competitivo.

  • Google Cloud Platform: de igual manera, tiene menos servicios que AWS pero es el más serio competidor de AWS. Los costes son bastante parecidos.



Comentarios

Sin comentarios
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: