Ir al contenido principal

3.- Infraestructuras

En el mundo de la computación en la nube, existen diferentes infraestructuras que proporcionan servicios y recursos para almacenar, procesar, administrar datos y aplicaciones. Estas infraestructuras se clasifican en tres modelos principales: nube pública, nube privada y nube híbrida.

A continuación, exploraremos cada uno de ellos:

  • Nube pública:

    La nube pública es una infraestructura en la que los servicios y recursos se ofrecen a través de proveedores de servicios accesibles a través de Internet. Estos proveedores, como Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, entre otros, poseen y administran la infraestructura subyacente, incluidos los servidores, redes y sistemas de almacenamiento.

    En la nube pública, los usuarios pueden acceder a servicios y recursos bajo demanda, como almacenamiento, servidores virtuales, bases de datos y herramientas de desarrollo. Esto permite a las empresas y a los individuos escalar sus operaciones sin necesidad de invertir en infraestructura física. Un ejemplo práctico sería una empresa que utiliza la nube pública para alojar su sitio web y almacenar sus datos en servidores externos.

  • Nube privada:

    La nube privada es una infraestructura en la que los servicios y recursos se implementan y operan exclusivamente para una única organización. La infraestructura de la nube privada puede estar ubicada en las instalaciones de la organización o ser gestionada por un proveedor de servicios externo. En este modelo, la organización tiene un control total sobre la infraestructura y puede adaptarla a sus necesidades específicas.

    Las nubes privadas son utilizadas principalmente por organizaciones que requieren un alto nivel de seguridad y control sobre sus datos y aplicaciones. Por ejemplo, un banco puede optar por utilizar una nube privada para almacenar información confidencial de sus clientes, garantizando así un mayor nivel de protección y cumplimiento normativo.

  • Nube híbrida:

    La nube híbrida es una combinación de la nube pública y la nube privada. En este modelo, las organizaciones utilizan una infraestructura mixta que integra servicios y recursos de la nube pública y la nube privada. Esta combinación permite a las organizaciones aprovechar los beneficios de ambos modelos, equilibrando la flexibilidad y escalabilidad de la nube pública con el control y la seguridad de la nube privada.

    En una nube híbrida, las aplicaciones y los datos pueden moverse de forma transparente entre la nube pública y la nube privada según las necesidades y los requisitos específicos de la organización. Por ejemplo, una empresa puede utilizar una nube privada para almacenar datos sensibles, mientras que utiliza la nube pública para escalar sus recursos de manera rentable durante períodos de alta demanda.

En resumen, en la computación en la nube existen tres modelos principales de infraestructura: nube pública, nube privada y nube híbrida. Cada uno de estos modelos ofrece distintas características y beneficios. La elección de la infraestructura adecuada depende de las necesidades y requisitos de la organización en términos de control, seguridad, escalabilidad y costos.


 

3.1.- Plataformas de Cloud Computing

En el mercado de la computación en la nube, existen diversas plataformas que ofrecen servicios y recursos para respaldar las necesidades de empresas y usuarios individuales. A continuación, analizaremos algunas de las principales alternativas y compararemos sus ventajas y desventajas.

AWS.pngMicrosoft_Azure_Logo.svg.pnggoogle_cloud_platform.png

 

  1. Amazon Web Services (AWS):

    Ventajas: AWS es una de las plataformas líderes en el mercado de la nube, ofreciendo una amplia gama de servicios y soluciones altamente escalables. Cuenta con una gran variedad de servicios, como almacenamiento, cómputo, bases de datos y herramientas de desarrollo. Además, tiene una amplia presencia global con múltiples regiones y zonas de disponibilidad.
    Desventajas: La complejidad de AWS puede resultar abrumadora para los usuarios sin experiencia previa en la nube. Algunos servicios pueden tener un costo elevado, y su amplia gama de opciones puede dificultar la selección de los servicios adecuados para las necesidades específicas.

     

  2. Microsoft Azure:

    Ventajas: Azure es otra plataforma líder que ofrece una amplia gama de servicios en la nube. Es conocida por su integración con otras herramientas y servicios de Microsoft, como Office 365 y Active Directory. Además, Azure proporciona una experiencia fluida para aquellos que ya están familiarizados con el entorno de Windows.
    Desventajas: Al igual que con AWS, la complejidad de Azure puede dificultar la comprensión para los principiantes. Algunos servicios pueden tener un aprendizaje inicial más costoso y su presencia global puede ser menor en comparación con AWS.

  3. Google Cloud Platform (GCP):

    Ventajas: GCP ofrece una amplia gama de servicios en la nube y se destaca por su enfoque en la inteligencia artificial y el análisis de datos. Google tiene una infraestructura global sólida y ofrece servicios como Google Kubernetes Engine para la administración de contenedores.
    Desventajas: Aunque GCP ha ganado popularidad, aún se encuentra en un segundo plano en comparación con AWS y Azure. La documentación puede ser menos completa y algunos servicios pueden tener menos características en comparación con sus competidores.

Es importante tener en cuenta que estas son solo algunas de las muchas plataformas de computación en la nube disponibles en el mercado. Al seleccionar una plataforma, es esencial considerar las necesidades específicas del proyecto, los costos asociados, el soporte y la comunidad de usuarios, así como la curva de aprendizaje requerida.

 

3.1.1.- Comparativa de los servicios ofrecidos por las tres principales plataformas de Cloud Computing

 

Amazon Web Services (AWS)

Microsoft Azure

Google Cloud Platform (GCP)

Almacenamiento

Amazon S3, Amazon EBS, Amazon Glacier

Azure Blob Storage, Azure Files

Google Cloud Storage, Google Cloud Filestore

Cómputo

Amazon EC2, AWS Lambda, AWS Batch

Azure Virtual Machines, Azure Functions

Google Compute Engine, Google Cloud Functions

Bases de datos

Amazon RDS, Amazon DynamoDB

Azure SQL Database, Azure Cosmos DB, Azure Database for MySQL

BigQuery

Redes

Amazon VPC, Amazon CloudFront

Azure Virtual Network, Azure ExpressRoute

Virtual Private Cloud (VPC), Cloud Load Balancing

Herramientas de desarrollo

AWS CloudFormation, AWS CLI, AWS SDK

Azure Resource Manager, Azure DevOps

Google Cloud Deployment Manager, Cloud SDK

IA y analítica de datos

Amazon Redshift, Amazon Athena, AWS Glue

Azure Machine Learning, Azure Cognitive Services

BigQuery ML, AI Platform, TensorFlow, AutoML

Seguridad

AWS Identity and Access Management, AWS CloudTrail

Azure Active Directory, Azure Security Center, Azure Sentinel

Google Cloud Identity and Access Management, Cloud IAM

 

Esta tabla es solo una muestra de los servicios ofrecidos por cada plataforma y que cada proveedor de servicios en la nube tiene una amplia gama de opciones disponibles. Al seleccionar una plataforma, es recomendable investigar más a fondo y considerar las necesidades específicas del proyecto.

En resumen, AWS, Azure y GCP son algunas de las principales plataformas de computación en la nube. Cada una tiene sus ventajas y desventajas, y la elección depende de los requisitos del proyecto y las preferencias individuales.


3.2.- Tipos de virtualización utilizados por las plataformas AWS, Microsoft Azure y Google Cloud Platform

En la computación en la nube, los proveedores de servicios como AWS, Azure y GCP ofrecen diferentes tipos de virtualización para aprovechar al máximo los recursos y garantizar un entorno eficiente y escalable. A continuación, analizaremos los principales tipos de virtualización utilizados por estos proveedores:

  1. Virtualización basada en hardware (virtualización tradicional):

    AWS: Amazon EC2 (Elastic Compute Cloud) de AWS utiliza virtualización basada en hardware para asignar recursos virtuales a instancias virtuales en servidores físicos. Esto permite a los usuarios ejecutar múltiples instancias virtuales en un solo servidor físico, maximizando la utilización de recursos y facilitando la escalabilidad.
    Azure: Azure Virtual Machines también utiliza virtualización basada en hardware para proporcionar instancias virtuales a los usuarios. Al igual que AWS, Azure aprovecha esta tecnología para optimizar la utilización de los recursos físicos y permitir la escalabilidad según la demanda.
    GCP: Google Compute Engine utiliza un enfoque similar de virtualización basada en hardware para asignar recursos virtuales a las instancias de máquinas virtuales. Esto permite a los usuarios ejecutar sus cargas de trabajo en servidores físicos compartidos de manera eficiente.

  2. Contenedores (paravirtualización):

    AWS: Amazon Elastic Container Service (ECS) y Amazon Elastic Kubernetes Service (EKS) ofrecen servicios de contenedores gestionados. Los contenedores son unidades de software que enjaulan las aplicaciones y sus dependencias, lo que permite una implementación más rápida y eficiente, así como una mayor portabilidad y seguridad de las aplicaciones.
    Azure: Azure Container Instances y Azure Kubernetes Service (AKS) brindan servicios de contenedores en Azure. Estos servicios permiten a los usuarios implementar y administrar fácilmente contenedores en la nube.
    GCP: Google Kubernetes Engine (GKE) es el servicio de contenedores administrados de GCP. Permite a los usuarios orquestar y administrar contenedores de manera eficiente utilizando la plataforma Kubernetes, lo que simplifica el proceso de implementación y escalado de aplicaciones en contenedores. Kubernetes fue originalmente diseñado por Google y con posterioridad liberó su código a la comunidad, por eso las tres compañías que estamos comparando utilizan Kubernetes en sus plataformas.

  3. Funciones como servicio (Function as a Service):

    AWS: AWS Lambda es un servicio de computación sin servidor que permite a los desarrolladores ejecutar código en respuesta a eventos sin necesidad de administrar la infraestructura. Los desarrolladores solo necesitan cargar su código y AWS se encarga de la ejecución y el escalado automático según la demanda. Es el servicio más barato de cómputo en la nube a costa de no garantizar la disponibilidad inmediata, cuando los servidores se encuentran a su máxima capacidad. Este servicio no se debe utilizar para aplicaciones críticas en una organización.
    Azure: Azure Functions es el servicio de funciones sin servidor de Azure que permite a los desarrolladores ejecutar código en respuesta a eventos. Al igual que AWS Lambda, Azure Functions se encarga de la administración de la infraestructura, permitiendo a los desarrolladores centrarse en el desarrollo de sus aplicaciones.
    GCP: Google Cloud Functions es el servicio equivalente en GCP que permite a los desarrolladores escribir y ejecutar funciones sin servidor en la nube. Google Cloud Functions proporciona un entorno de ejecución sin servidor y escalado automático basado en la demanda.

En resumen, los proveedores de servicios en la nube como AWS, Azure y GCP ofrecen diferentes tipos de virtualización, incluyendo la virtualización basada en hardware, los contenedores y las funciones sin servidor. Cada tipo tiene sus propias características y beneficios, y es importante evaluar cuidadosamente las necesidades del proyecto para seleccionar la opción más adecuada.


3.3.- Almacenamiento en la nube

En la computación en la nube, el almacenamiento de datos es un aspecto fundamental. Los proveedores de servicios en la nube, como AWS, Azure y GCP, ofrecen diferentes tipos de almacenamiento para satisfacer las necesidades de los usuarios. A continuación, analizaremos los principales tipos de almacenamiento disponibles en cada plataforma:

  1. Almacenamiento en bloque:

    Características: El almacenamiento en bloque se basa en la asignación de bloques de datos que se pueden acceder y manipular a nivel de bloques individuales. Proporciona un rendimiento de E/S de alto rendimiento y es ideal para aplicaciones que requieren acceso directo y rápido a los datos en un formato estructurado, como bases de datos y sistemas de archivos.
    Ejemplo: Si estás ejecutando una base de datos en la nube, como un sistema de gestión de bases de datos relacional (RDBMS), puedes utilizar el almacenamiento en bloque para alojar los archivos de datos y los registros de transacciones. Esto garantizará un acceso rápido y una alta disponibilidad de los datos, lo que es esencial para aplicaciones que requieren una alta velocidad de lectura y escritura.

    AWS: Amazon Elastic Block Store (EBS) proporciona almacenamiento en bloque persistente para instancias de Amazon EC2. Es ideal para aplicaciones que requieren un alto rendimiento y persistencia de datos. EBS permite crear y adjuntar volúmenes de almacenamiento a instancias EC2 y es compatible con características como instantáneas para la copia de seguridad y la recuperación.
    Azure: Azure Managed Disks es el servicio de almacenamiento en bloque de Azure. Permite a los usuarios crear y administrar discos virtuales persistentes para las máquinas virtuales de Azure. Los discos administrados ofrecen durabilidad, disponibilidad y redundancia de datos, lo que garantiza la integridad de la información almacenada.
    GCP: Google Compute Engine ofrece Google Persistent Disk como su servicio de almacenamiento en bloque. Es similar a EBS y Managed Disks, proporcionando almacenamiento persistente y de alto rendimiento para las máquinas virtuales de GCP. Google Persistent Disk ofrece opciones de lectura y escritura rápidas, así como características de seguridad y confiabilidad.

     

  2. Almacenamiento de objetos:

    Características: El almacenamiento de objetos está diseñado para almacenar y acceder a grandes cantidades de datos no estructurados, como archivos multimedia, archivos de copia de seguridad y documentos. Los datos se organizan en objetos que contienen los datos y los metadatos asociados. El almacenamiento de objetos proporciona una escalabilidad masiva, durabilidad y capacidad de almacenamiento económica.
    Ejemplo: Si tienes una aplicación de transmisión de videos en la nube, puedes utilizar el almacenamiento de objetos para almacenar los archivos de video y los metadatos relacionados, como información sobre el título, la duración y el formato. El almacenamiento de objetos es ideal para este caso, ya que permite un acceso eficiente a los archivos de video y puede manejar una gran cantidad de datos sin problemas.

    AWS: Amazon Simple Storage Service (S3) es un servicio de almacenamiento de objetos escalable y duradero. S3 permite almacenar y recuperar grandes cantidades de datos, como archivos multimedia, archivos de copia de seguridad y archivos estáticos de sitios web. Ofrece una alta durabilidad, redundancia y capacidad de recuperación de datos.
    Azure: Azure Blob Storage es el servicio de almacenamiento de objetos de Azure. Proporciona almacenamiento de objetos altamente escalable y duradero, adecuado para almacenar y acceder a datos no estructurados. Azure Blob Storage es compatible con diferentes niveles de acceso, lo que permite optimizar los costos según la frecuencia de acceso a los datos.
    GCP: Google Cloud Storage es el servicio de almacenamiento de objetos de GCP. Permite almacenar y acceder a datos de manera segura y escalable. Google Cloud Storage ofrece opciones de clase de almacenamiento para adaptarse a diferentes requisitos de rendimiento y costo, lo que permite optimizar el almacenamiento en función de las necesidades del proyecto.

     

  3. Almacenamiento de archivos:

    Características: El almacenamiento de archivos proporciona un sistema de archivos compartido en la nube, similar al sistema de archivos utilizado en los sistemas locales. Permite compartir archivos entre múltiples instancias o servicios y es adecuado para aplicaciones que requieren una colaboración y un acceso compartido a los datos.
    Ejemplo: Imagina que tienes un equipo de desarrollo trabajando en un proyecto en la nube. Puedes utilizar el almacenamiento de archivos para compartir el código fuente, los archivos de configuración y otros recursos necesarios entre los miembros del equipo. El almacenamiento de archivos facilita la colaboración y garantiza que todos los miembros del equipo tengan acceso a los mismos archivos actualizados.

    AWS: Amazon Elastic File System (EFS) ofrece almacenamiento de archivos escalable y compartido para instancias de EC2. EFS proporciona un sistema de archivos accesible desde múltiples instancias, lo que facilita el uso compartido de datos y la colaboración en entornos distribuidos.
    Azure: Azure Files permite compartir archivos en la nube de Azure. Proporciona almacenamiento de archivos totalmente administrado y compatible con el Protocolo de Transferencia de Archivos (FTP), el Protocolo de Sistema de Archivos de Red (NFS) y el Protocolo de Bloque Extendido de Microsoft (SMB).
    GCP: Google Cloud Filestore es el servicio de almacenamiento de archivos de GCP. Proporciona un sistema de archivos de red (NFS) administrado y escalable para cargas de trabajo de alto rendimiento. Google Cloud Filestore permite compartir archivos entre instancias de GCP y proporciona una experiencia similar a la del almacenamiento en red local.

Cada tipo de almacenamiento tiene sus propias ventajas y desventajas, y la elección depende de los requisitos del proyecto en términos de rendimiento, durabilidad, escalabilidad y costo.

En resumen, los proveedores de servicios en la nube como AWS, Azure y GCP ofrecen diferentes tipos de almacenamiento, incluyendo almacenamiento en bloque, almacenamiento de objetos y almacenamiento de archivos. Cada tipo tiene sus propias características y beneficios, y es importante evaluar cuidadosamente los requisitos del proyecto para seleccionar la opción de almacenamiento más adecuada.


3.4.- Bases de datos en la nube

Las bases de datos son elementos fundamentales en la mayoría de las aplicaciones, y los proveedores de servicios en la nube, como AWS, Azure y GCP, ofrecen una variedad de opciones para satisfacer las necesidades de almacenamiento y gestión de datos de los usuarios. A continuación, analizaremos los principales tipos de bases de datos disponibles en cada plataforma:

  1. Bases de datos relacionales (SQL):

    Características: Las bases de datos relacionales se basan en el modelo relacional, donde los datos se organizan en tablas con filas y columnas. Utilizan un lenguaje de consulta estructurado (SQL) para gestionar y manipular los datos. Proporcionan una estructura fija y definida, garantizan la integridad de los datos y admiten relaciones complejas entre las tablas.
    Ejemplo: Una tienda web que necesita almacenar información de productos, clientes y pedidos podría utilizar una base de datos relacional. Las tablas se crearían para representar cada entidad (productos, clientes, pedidos), y se establecerían relaciones entre ellas para garantizar la integridad de los datos. Esto permite realizar consultas complejas, como encontrar todos los pedidos de un cliente específico.

    AWS: Amazon Relational Database Service (RDS) ofrece bases de datos relacionales administradas, como MySQL, PostgreSQL, Oracle y SQL Server. Proporciona una gestión simplificada de las bases de datos y opciones de escalabilidad para adaptarse a las necesidades del proyecto.
    Azure: Azure SQL Database es el servicio de base de datos relacional administrada de Azure. Proporciona una base de datos SQL totalmente administrada y escalable que admite tanto aplicaciones pequeñas como empresariales. Azure SQL Database ofrece opciones de rendimiento y escalabilidad flexibles.
    GCP: Google Cloud SQL es el servicio de base de datos relacional de GCP. Permite ejecutar bases de datos MySQL y PostgreSQL administradas en la nube. Google Cloud SQL ofrece alta disponibilidad, rendimiento y seguridad para aplicaciones que requieren bases de datos relacionales.

     
  2. Bases de datos NoSQL:

    Características: Las bases de datos NoSQL (Not Only SQL) son diseñadas para manejar grandes volúmenes de datos no estructurados o semiestructurados. No siguen el modelo relacional y pueden almacenar datos en formatos como documentos, grafos o claves-valor. Ofrecen una alta escalabilidad, flexibilidad y rendimiento.
    Ejemplo: Un sistema de análisis de registros de servidores, que recopila y analiza grandes volúmenes de datos de registros generados por servidores, puede utilizar una base de datos NoSQL. Cada registro se almacenaría como un documento independiente, y la base de datos permitiría realizar consultas y búsquedas rápidas en función de diferentes campos, sin la necesidad de definir una estructura fija de antemano.

    AWS: Amazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado y escalable en la nube. Es adecuado para aplicaciones que requieren un acceso rápido a datos estructurados y no estructurados. DynamoDB ofrece una latencia baja y una escalabilidad automática.
    Azure: Azure Cosmos DB es una base de datos NoSQL globalmente distribuida y escalable en la nube. Proporciona una latencia baja y una alta disponibilidad, y es compatible con múltiples modelos de datos, como documentos, grafos y claves-valor.
    GCP: Google Cloud Firestore es una base de datos NoSQL flexible y escalable de GCP. Permite almacenar, sincronizar y consultar datos en tiempo real. Firestore es adecuado para aplicaciones web y móviles que requieren una sincronización de datos en tiempo real y una escalabilidad horizontal.

     
  3. Bases de datos en memoria:

    Características: Las bases de datos en memoria almacenan y acceden a los datos en la memoria principal en lugar de utilizar el almacenamiento en disco. Esto permite un acceso extremadamente rápido a los datos, lo que resulta en un rendimiento superior. Son ideales para aplicaciones que requieren tiempos de respuesta ultra rápidos y un acceso eficiente a los datos.
    Ejemplo: Una aplicación de transmisión en vivo, como un servicio de transmisión de música, podría utilizar una base de datos en memoria para almacenar la información sobre las canciones que se están reproduciendo actualmente y las preferencias de los usuarios. Al tener los datos en memoria, se logra una latencia baja, lo que garantiza una experiencia de transmisión fluida y sin interrupciones.

    AWS: Amazon ElastiCache es un servicio de almacenamiento en caché en memoria compatible con Redis y Memcached. Proporciona un rendimiento de alta velocidad y una capacidad de escalado automático para aplicaciones que requieren un acceso rápido a datos en memoria.
    Azure: Azure Cache for Redis es un servicio de caché en memoria basado en Redis. Permite almacenar datos en memoria y acelerar las aplicaciones con una latencia baja y un alto rendimiento.
    GCP: Google Cloud Memorystore es un servicio de almacenamiento en memoria basado en Redis. Proporciona un almacenamiento de caché en memoria totalmente administrado y escalable para mejorar el rendimiento de las aplicaciones.

En resumen, los proveedores de servicios en la nube ofrecen una variedad de tipos de bases de datos, incluyendo bases de datos relacionales (SQL), bases de datos NoSQL y bases de datos en memoria. Cada tipo tiene sus propias características y beneficios, y es importante considerar las necesidades del proyecto al seleccionar la opción de base de datos adecuada.