Ya sabes qué es cloud computing, sabes que puede ser muy bueno para tu negocio, sabes que puede ser una pieza fundamental en tu proceso de transformación digital, pero ¿por donde vas a empezar?
Hace unos días escribía acerca de las claves del cloud computing. Lo hacía desde un punto de vista de negocio, sin ahondar demasiado en los servicios que podemos contratar para llevar nuestros negocios a un entorno cloud. En aquel post, además de hablar de lo “típico” del cloud computing, hice mucho hincapié en la agilidad y flexibilidad que nos aporta un modelo cloud a la hora de innovar dentro de nuestros procesos de negocio. En este artículo voy a ir un paso más allá y te voy a contar cómo puedes empezar. Para ello vamos a descubrir los servicios principales que ofrece Amazon Web Services (AWS) y qué debes conocer antes de afrontar un proceso de transformación.
Para hacer que la lectura de este post sea mucho más amena y provechosa para ti, voy a plantear un caso práctico en el cual te puedes sentir más o menos identificado. De esta forma, en lugar de describir los servicios que Amazon te ofrece, describiremos qué aportan dichos servicios al “proyecto” del caso de estudio y que seas tú quien pueda buscar los paralelismos con tu negocio o proyecto.
AWS en un caso práctico
Pongamos que trabajas en una compañía que fabrica coches. Los clientes de dicha marca de coches compran sus vehículos mediante pedido, es decir, cuando van a realizar la compra, eligen en el concesionario el modelo, motor, color, acabados, etc. De esta forma, el cliente debe esperar cierto tiempo (varias semanas) a recibir su nuevo vehículo. La compañía en cuestión se encuentra en pleno proceso de transformación digital. En concreto, están trabajando en ser disruptivos en algunas partes de su modelo de negocio y en especial quieren transformar la relación que tienen con sus clientes. De esta forma, el equipo de innovación ha pensado que los clientes que esperan su nuevo coche, podrían estar informados como y cuando se ha empezado la fabricación de su vehículo, e incluso podrían ver imágenes o incluso videos en tiempo real de ciertos momentos de la fabricación. Debido a que es la primera vez que se realiza una experiencia de este tipo en la compañía y existe cierta incertidumbre en la aplicabilidad y trascendencia que pueda tener este servicio de cara a los clientes, se ha decidido llevar a cabo el proyecto en forma de piloto. Para ello, se implementará el sistema parcialmente y se involucrarán únicamente a un número reducido de clientes.
Para poder llevar a cabo el proyecto, va a ser necesario desarrollar un sistema con, al menos, estos componentes:
- Aplicación Mobile (Android y iOS) donde los clientes serán notificados y podrán ver el avance en la construcción de su coche. También podrá comentar y compartir en redes sociales.
- Aplicación Web para concesionarios, donde el vendedor dará de alta el vehículo y los datos del usuario que tendrá acceso a la aplicación mobile.
- Aplicación capaz de registrar videos de los distintos puestos de fabricación del vehículo, etiquetarlos con el número de chasis del coche y el punto de fabricación. Esta aplicación ejercerá de servidor para la aplicación Mobile de los clientes y deberá ser capaz de integrarse con los sistemas de la cadena de producción.
Amazon Web Services ofrece a sus clientes decenas de servicios agrupados según la naturaleza o solución que aporta cada uno de ellos (computación, almacenamiento, bases de datos, redes, mensajería, análisis, inteligencia artificial o internet de las cosas entre otros). A continuación enumero aquellos que considero muy importantes y que deberíamos conocer si queremos plantearnos el cloud computing como una alternativa dentro de nuestro proyecto.
Servicios de computación
En este grupo, AWS ofrece infraestructura (hardware) en modo servicio para el alojamiento de servidores, aplicaciones, servicios web, etc.
Amazon EC2 (Elastic Compute Cloud)
Probablemente sea uno de los servicios más famosos e importantes que ofrece Amazon. Se trata de capacidad de cómputo (“hardware”) ofrecido en modo servicio y sobre todo con la característica principal de elasticidad.
En nuestro caso de estudio, hablábamos de que iba a ser necesaria una aplicación servidora (a la que solemos llamar backend) que se encargará de:
- Recoger las grabaciones de los distintos puesto de trabajo de la cadena de producción.
- Etiquetar dichas grabaciones y almacenarlas.
- Servir los datos y videos a las aplicaciones móviles, cuando un usuario autentificado utilice su aplicación Android/iOS.
Evidentemente, la aplicación anterior debería encargarse de muchas más cosas, pero tratándose de un ejemplo, vamos a suponer que esas son sus principales responsabilidades.
Esta aplicación servidora, que podría estar desarrollada en Java o en cualquier otro lenguaje, deberá de estar desplegada en un servidor de aplicaciones, en definitiva, en un servidor. Dicho servidor deberá de ser accesible tanto por los sistemas de la cadena de producción, como por la propia aplicación móvil que utilizarán los usuarios.
Para nuestro caso de estudio, esta aplicación estaría alojada en un servidor EC2.
Con este servicio, AWS nos permite crear y arrancar instancias de servidor en cuestión de minutos. Las principales características del servicio son:
- Configurables la capacidad de cómputo, el sistema de almacenamiento y el sistema operativo.
- La capacidad (procesador, memoria y almacenamiento) es elástica, es decir, consume los recursos según sus necesidades (y no más).
- Permite el escalado automático (Auto scaling), es decir, permite incrementar el número de instancias EC2 y el tipo de las mismas según la demanda del servicio. Esta funcionalidad está pensada principalmente para atender picos puntuales de demanda y optimizar así el coste del servicio, puesto que se paga únicamente por lo que se utiliza.
- La administración se puede realizar utilizando la interfaz de AWS o una interfaz de consola tal y como si de un servidor estándar se tratara.
Las ventajas que aportaría el servicio EC2 a nuestro caso de estudio son:
- Poder contratar el servicio con una capacidad mínima para realizar las pruebas y posteriormente incrementar la capacidad, adaptando el coste al uso real.
- En caso de una alta demanda, poder utilizar el auto escalado, incrementando el número de instancias cuando el uso así lo demande y reduciéndolo en caso contrario.
- No necesitar realizar ninguna compra de hardware y tampoco tener que decidir la capacidad necesaria en tiempo de diseño de la solución.
- En caso de que el proyecto no fuera adelante o la aceptación no fuera suficiente, solo tendríamos que parar las instancias de EC2 y dejar de pagar por su uso. En el caso contrario, si el proyecto tuviera mucha aceptación y uso, podríamos incrementar la infraestructura que necesitamos sin necesitar un nuevo presupuesto de compra.
AWS ofrece distintos modelos de contratación de las instancias EC2:
- Bajo demanda: se consume por lo que se usa y no hay ningún tipo de compromiso de permanencia. Sería el mejor modo de contratación en la fase inicial o piloto del proyecto.
- Instancias de subasta: Se puja por la capacidad libre de AWS EC2. Se pueden obtener descuentos de hasta el 90% en el pago. No sería interesante para caso práctico.
- Instancias reservadas: Se obtiene hasta un 75% de descuento, adquiriendo compromisos de permanencia de 1 o 3 años. Este modo de contratación tendría mucho sentido, en caso de que el piloto de nuestro caso de estudio hubiera sido superado y el sistema pasara a una etapa de plena producción.
- Hosts dedicados: Se pueden contratar servidores físicos de EC2. Se trata de un tipo de uso muy específico.
Amazon ELB (Elastic Load Balancing)
Con este servicio, AWS permite interponer un balanceador por delante de varias instancias EC2 para poder distribuir la carga, ya sea por demanda (pico elevado de peticiones), como por tipo de servicio (podríamos enviar las peticiones de vídeo a un servidor especializado en streaming y las peticiones de datos a un servidor de datos). También permite implementar una tolerancia a fallos propia y ofrece alta disponibilidad y escalado nativo automáticos.
Amazon Lambda
Este servicio nos permite poder ejecutar código (pequeñas aplicaciones) sin ser necesario un servidor (“serverless”). Posiblemente sea uno de los servicios más innovadores de AWS, puesto que permite poder tener determinados servicios web que atienden peticiones de otras aplicaciones sin necesidad de desplegarlos en servidores de aplicaciones.
Las características principales del servicio son:
- Serverless. Se escribe el código necesario y se despliega sin servidor.
- Solo se paga por la ejecución, es decir, cada vez que se atiendan peticiones.
- Muy evitar los tiempos de parada controlada. En una actualización del sistema, siempre existe un tiempo mínimo de parada. En este caso, en la mayoría de los casos, podré reiniciar mis servidores, y los servicios lambda seguirán funcionando.
- Tiene una utilidad clara para atender multitud de peticiones simultáneas, para meterlas en una cola y redirigirlas hacia instancias EC2.
- El servicio incluye alta disponibilidad de manera nativa.
En nuestro caso de estudio, podríamos utilizar los servicios lambda en la parte del sistema de la cadena de producción. Por ejemplo, cuando recibamos una notificación de que un coche está en proceso de pintura y se comenzara a grabar el pintado, dicha notificación se enviara a un servicio lambda que pusiera en cola las distintas grabaciones simultáneas de los distintos puestos y vehículos en fabricación simultánea en la cadena de producción.
Servicios de almacenamiento de datos
Otro tipo de servicio en el cual Amazon ha sido pionero e innovador ha sido el almacenamiento. Los sistemas actuales gestionan cantidades ingentes de información: tanto el proceso de almacenado y recuperación, como el coste de almacenamiento son aspectos clave en sistemas modernos.
Amazon S3 (Simple Storage Service)
Es el servicio principal de AWS para el almacenamiento y recuperación de archivos mediante un API (Application Programming Interface). Utilizando este API, los programadores pueden desarrollar aplicaciones para almacenar y recuperar archivos de manera ágil y segura.
Amazon se encarga de almacenar nuestros archivos de manera redundante. Es totalmente escalable, solo se paga por el espacio de almacenamiento que se ocupa. Se utiliza cifrado de seguridad, tanto en almacenamiento como en tránsito (transferencia de datos desde o hacia S3). Una de las principales ventajas de este servicio es su muy bajo costo y por supuesto su integración con el resto de servicios de AWS.
En nuestro caso de estudio, S3 sería el almacén de todos los videos que será necesario almacenar. Debido a la naturaleza del contenido (videos), el coste de almacenamiento será un aspecto fundamental. El coste aproximado de almacenar un TB (terabyte) será de 47 USD mensuales para un uso estándar.
Amazon Glacier
Cuando la información que se requiere guardar no va a ser consultada con demasiada asiduidad, como podría ser un sistema de copia de seguridad, AWS ofrece el servicio Glacier, que no es más que una “extensión” de S3 para archivos que van a tener una tasa muy reducida de acceso. Es un servicio más económico si cabe que S3. En función del tiempo de recuperación, existen distintas tarifas. El almacenamiento de un TB tendrá un coste aproximado de 27 USD mensual para un uso estándar.
Servicios de bases de datos
Con este grupo de servicios, AWS ofrece la posibilidad de crear y gestionar bases de datos en modo servicio, es decir, sin ser necesario administrar a bajo nivel los gestores de bases de datos.
Amazon RDS (Relational Database Service)
Con RDS, junto a EC2 y S3, se completa la terna perfecta y básica para poder implementar sistemas software.
RDS es un servicio administrado de bases de datos relacionales (SQL). En la actualidad da soporte a seis motores distintos de bases de datos (Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle y Microsoft SQL Server). Reduce de manera drástica la administración de una base de datos (monitorización, backup, restore, …)
En nuestro caso de estudio, podríamos utilizar RDS para gestionar todos los datos del dominio del negocio, es decir, los datos de coches, propietarios, pedidos, componentes, etc.
Amazon DynamoDB
Este servicio sería el homólogo a RDS pero para bases de datos no estructuradas (NoSQL). Este tipo de bases de datos son ideales para realizar proyectos de big data, gaming, Internet de las cosas, etc.
En nuestro caso de estudio, podríamos utilizarlo para registrar el comportamiento de los usuarios: quién accede, cuándo accede, qué videos visualiza, en qué tiempo del video abandona, se espera al final o no, etc.
Como decíamos al principio del post, AWS tiene decenas de servicios en cloud computing. Todos ellos se encuentran muy bien explicados y con ayudas audiovisuales en la mayoría de los casos. El objetivo de este post no era que los conocieras todos, sino que tuvieras una idea de los que hay y, sobre todo, que tuvieras algunas pinceladas de los más importantes.
Todas las experiencias que estamos teniendo con AWS en Belike han sido excepcionales. No estoy diciendo que Amazon Web Services ni el Cloud Computing sean una bala de plata. Cada problema tiene mil soluciones, lo importante es saber cuáles de ellas van a funcionar mejor y cuáles peor. Pero, lo que está claro, es que en un ambiente cambiante, que se mueve cada vez más rápìdo, utilizar las mejores herramientas y los mejores proveedores tecnológicos debería de ser un imprescindible en cualquier un proceso de transformación digital.
Deja una respuesta