Está en la página 1de 39

2.

- Cloud Storage y almacenamiento en la nube

¿Qué es Cloud Storage?


Es un servicio de almacenamiento de objetos,

 un objeto es una pieza de datos inmutable identificada por un nombre de objeto.


(una vez que se almacena en la nube, el contenido no podrá cambiar)
 un bucket es un contenedor de objetos, es un lugar donde almacenamos colecciones
o grandes cantidades de objetos.

Principales características

 Experiencia unificada
 Listado fuertemente consistente
 Geo - redundante
 Escalable a exabytes

Link parta calcular costos de almacenamiento:


https://cloud.google.com/products/calculator

3.- Dónde podemos usar Cloud Storage?

Usos Cloud Storage

 Almacenamiento y entrega de contenido: Imágenes o videos.


 Cómputo, analítica y ML: Grandes volúmenes de información y usar Cloud Dataproc para
analizar esa información.
 Respaldos y archivado: Respaldos de bases de datos, máquinas virtuales, sistemas de
información, etc.

Estructura típica

Los objectos están asociados a Buckets. Los Buckets están relacionados con proyectos y los
proyectos se asocian a una Organización.

Seguridad

 Podemos gestionar el acceso a los objetos dentro de Cloud Storage.


 El 100% de los objetos en Cloud Storage están cifrados todo el tiempo; tanto en reposo
como en movimiento.
 Capacidad de retención; la cantidad de tiempo que garantizamos el almacenar de un
objeto.
 Control de versiones, como git, podemos “reescribir” los objetos con la nueva versión de
los mismos y conservar el historial de cada cambio.
Cifrado

Control flexible a la hora de cifrar los datos.

 Default: Google gestiona las claves de forma transparente.


 Customer-managed (CMEK) : Gestionas tus llaves en Google Cloud KMS.
 Customer-supplied (CSEK): Almacena tus llaves fuera de Google Cloud.

Usar Cloud Storage

Podemos desarrollar nuestras herramientas para interactuar con Cloud Storage.

 Desde nuestros programas.


 Construir nuestras librerías.
 Rehusar las librerías que Google nos ofrece.
Herramientas que ya existentes para usar Cloud Storage:

 Cloud Console
 Gsutil

4.- Cloud Storage en acción

Para interactuar con el Cloud Storage podemos hacer uso de la Cloud Shell. Esta se abre,
primero creando un proyecto en alguna organización (sin organización es posible también)
y luego haciendo click en la parte derecha superior.

Una vez adentro podemos interactuar con cloud storage de la siguiente manera:

 Con el comando gsutil seguido de otros comandos que usaremos para navegar e
interactuar con el storage dentro de nuestro proyecto.
 Los comandos son parecidos o iguales a los que uno usaría en una computadora
Linux, los vistos en clase fueron:
o ls
o cp
 Estos comandos se usan para lo mismo que los usarías en una computadora linux,
con la particularidad de que no estás interactuando solo con una computadora
común y corriente sino con el sistema de storage de google.
 Para crear objetos tenemos que crear buckets para almacenarlos dentro del proyecto,
esto se hace con el comando mb (claro, con gsutil en frente) que significa make
bucket, a continuación le tenemos que poner un nombre al bucket y la convención
es la siguiente:
o gsutil mb gs://<bucket_name>-bucket-<bucket_number>. Donde el
nombre del bucket tiene que estar relacionado con el nombre de tu proyecto
y el número es el número de bucket que has creado.
 Y para subir un objeto al storage se hace simplemente:
o gsutil cp <file_name> gs://<bucket_name>-bucket-
<bucket_number>. Donde <file_name> es el nombre del archivo o del
objeto que vamos a subir.

gsutil

Se sugiere ponerle al Bucket que este asociado con el proyecto, para que sea fácil de ubicar.
El nombre del Bucket debe ser único.

Crear un Bucket (make Bucket)

gsutil mb gs://mi-proyecto-bucket-01

Ver mis Buckets

gsutil ls

Ver los objetos en un Bucket

gsutil ls gs://mi-proyecto-bucket-01

Copiar objetos a un Bucket

gsutil cp ./archivo.txt gs://mi-proyecto-bucket-01


Copiar objetos de un Bucket a otro lado

gsutil cp gs://mi-proyecto-bucket-01/archivo.txt .

Activar el versionamiento en los objetos de un Bucket

gsutil versioning set on gs://mi-proyecto-bucket-01

Desactivar el versionamiento en los objetos de un Bucket

gsutil versioning set off gs://mi-proyecto-bucket-01

5.- Clases de almacenamiento de Cloud Storage

Al crear un Bucket debemos definir la ubicación y clase.

Ubicación

Define donde residirán nuestros datos.

Tipos de ubicación

 Regional: Los datos se replican en las zonas de una sola región. Para datos a los que se
accede con frecuencia dentro una región.
 Dual-regional: Los datos se replican en regiones cercanas. Para disponibilidad de datos
accedidos frecuentemente en un área específica.
 Multi-regional: Los datos se replican en diferentes regiones (continentes). Para la más alta
disponibilidad de datos frecuentemente accedidos.
Clases

Se refieren a la frecuencia con la que accedemos y disponibilidad que deseamos sobre los
objetos dentro del bucket. Además del precio.

 Standars: Objetos a los que accedemos frecuentemente (más caro).


 Nearline: Acceso a los objetos una vez al mes.
 Coldline: Acceso a los objetos una vez al trimestre.
 Archive: Acceso a los objetos una vez al año.
Clases vs. ubicación

Podemos combinar las clases con diferentes ubicaciones, de acuerdo a nuestras


necesidades.

Cuando creamos un Bucket debemos de especificar la ubicación y la clase de


almacenamiento

UBICACION
• define el centro de datos o los centros de datos donde recibirán los datos que vamos
almacenar en nuestro bucket
• un bucket y los objetos que almacena pueden estar ubicados en una o múltiples regiones
Regiones y zonas
• Existen diferentes regiones y zonas donde podemos alojar recursos de computo
o Una región: es un espacio geográfico donde Google tiene uno o mas centros de datos,
estos centros de datos se llaman zonas y cada uno de estos es independientes uno de otro de
tal manera que si en una región falla no afecto las otras zonas.
• ¿Qué tipos de ubicación hay?
o Existen 3 tipos:
 Regional: los datos se almacenan en una región especifica con replicación en las zonas
de disponibilidad de esta región
 Dual-regional: los datos se replican en un par especifico de regiones.
 Multi-regional: los datos se distribuyen se forma redundante en america, Europa o Asia

Multi-regional Dual-region Regional

Uso típico para la mas alta disponibilidad de datos frecuentemente accedidos Para
disponibilidad de datos accedidos frecuentemente en un área especifica Para datos a los que
se accede con frecuencia dentro de una región
Algunos casos de uso • Streaming de video y música
• Imágenes
• Sitios web
• Documentos • Streaming de video y música
• Imágenes
• Sitios web
• Documentos • Codificación de video
• Genómica
• Análisis de datos generales
CLASES
Clases de almacenamiento
• establece ciertas condiciones asociadas a la frecuencia en que estos datos van hacer
accedidos, los niveles de disponibilidad y los esquemos de precios que van a tener estos
buckets
• Permite que los objetos se almacenan y sirvan con diferentes frecuencias de acceso,
niveles de disponibilidad y perfiles de precios
Clases
• Estándar: Duración mínima de 0 dias
• Nearline: Duración mínima de 30 dias
• Coldline: Duración mínima d 90 dias
• Archive: Duración mínima de 365 dias
Estándar Nearline Codline Archive
Para datos a los que se accede frecuentemente Para datos a los que se accede menos de una
vez por mes Para datos a los que se accede menos de una vez por trimestre para retención a
largo plazo
• Streaming de video y música
• Documentos de acceso frecuente
• Análisis de datos
• Codificacion de video transcoding • Documentos de acceso poco frecuente
• Respaldos
• Datos para análisis poco frecuente
• Documentos de acceso muy poco frecuente
• Respaldos • Archivos regulatorios
• Reemplazo de cintas.
6.- Clases de almacenamiento en acción

Crear tu primer bucket:

1. Seleccionar del menú tipo hamburguesa la opción Cloud Storage.

2. Darle clic a “Create Bucket”.


3. Darle un nombre único al “bucket” (puedes usar como prefijo el nombre del
proyecto) y Continuar.
4. Seleccionar donde se almacenará (Multi-Región, Región Dual o Región) y
Continuar.

5. Seleccionar la clase de almacenamiento (Standard, Nearline, Coldline, Archive) y


Continuar.
6. Seleccionar control de acceso (Uniform, Fine-grained) y Continuar.
7. Escoger la Configuración Avanzada que necesites (Encriptación, política de
retención,etc.).

8. Darle clic al botón CREATE.


7.- Google Cloud Bigtable

Cloud Bigtable es el servicio de base de datos de Big Data NoSQL de Google,


Cuando Utilizar SQL: Cuando ya sabes la cantidad de usuarios que vas a tener y no vas a
tener un crecimiento acelerado, tienes previsto el crecimiento.

Cuando Utilizar NoSQL: Cuando la base de datos es muchísima, los picos son muy altos y
el crecimiento muy acelerado.

Cloud Bigtable es un servicio de base de datos NoSQL que avanza a Petabytes si es


necesario, completamente administrado a escala de patabytes para casos de uso en los que
el acceso de datos aleatorios de baja latencia, la escalabilidad y la confiabilidad son
fundamentales

 Características
o Alto capacidad y procesamiento
o Procesamiento de baja latencia
o Cantidades muy grandes de datos
o Cambios de tamaño sin tiempo de inactividad
o Replicación flexible y automatizada
o Google Search, Maps y otros productos de Google

 ¿Cómo interactuamos con Cloud Big Table?


o Api de aplicación: Podemos leer y escribir datos a través de una capa de
servicio llamada rede Hbase, que es un gestor de código abierto que nos
ayuda exponer el point que nos proveen estas operaciones de escribir leer
actualizar y borrar y esto se usa normalmente para enviar datos a las
aplicaciones o paneles de control
o Streaming / Transmisión: Datflow Streaming, Spark Streaming y Apache
Storm
o Batch Processing / Procesamiento por lotes: Los datos se pueden leer y
escribir en Big Table en forma de batch (cantidades grandes) esto se puede
hacer a través de hadoop, Datflow, Apache Spark.
8.- Google Cloud Bigtable en acción

1. En la sección de DataBases de GCP y seleccionamos BigTable.


2. Creamos la instancia. Llenamos los datos:
1. Nombre, ID.

2. Seleccionamos el tipo de disco (SSD o HDD)


3. Seleccionamos región y zona.
3. Interactuamos con nuestra base de datos con Cloud Shell

Interactuamos con nuestra base de datos con Cloud Shell


1. cbt: Comando para interactuar con bigtable. Debemos setearlo hacia el ID de
nuestro proyecto, esto lo podemos hacer: echo project =gcloud config get-value
project> ~/.cbtrc (El archivo .cbtrc es el archivo de configuración de variables de
bigtable.
2. echo instance = NOMBRE_DE_LA_INSTANCIA_CREADA >> ~/.cbtrc Le dije a
mi perfil que quiero usar el comando y ahora le digo sobre que instancia quiero
actuar con el comando anterior.
3. cbt createtable my_table : Creamos una tabla llamada my_table
4. cbt ls : listamos todas las tablas que tiene nuestra base de datos
5. cbt createfamily my_table cf1: Creamos una columna familia, donde en ella
ingresaremos columnas relacionadas entre sí.
6. cbt set my_table r1 cf1:c1-test-value: Ingresamos datos en la tabla
7. cbt read my_table: Leemos los datos de la tabla. Veremos una marca de tiempo o
timestamp agregada por bigtable para identificar al valor como único.

9.- Cloud SQL

Recuerda que BigTable es una base de datos NoSql o no relacionales.

Transacciones ACID
Las transacciones son operaciones que las bases de datos realizan y que siguen cuatros
propiedades básicas.
¡SIEMPRE LAS DEBEN DE CUMPLIR!
Estas cuatro propiendas viven bajo el acrónimo ACID.
Atomicity - Atomicidad
Consistency - Consistencia
Isolation - Aislamiento
Durability - Durabilidad

Atomicidad
Te asegura una transacción que tiene varias operaciones, se complete satisfactoriamente. Si
no es así, todas las operaciones que se alteraron por esa transacción, tienen que regresar al
estado inicial.

Consistencia
La que nos va asegurar que efectivamente todas las transacciones que se completaron, estén
completadas de forma exitosa.

Aislamiento
Lo que permite que las operaciones sean aisladas y transparentes.

Durabilidad
Lo que nos asegura que el resultado de una operación permanezca a pesar de un resultado
en el sistema.

¿Qué es Google Cloud SQL?


Un servicio de base de datos completamente administrada que facilita la configuración y
administración de bases de datos MySQL, PostgreSQL y SQL Server en la nube.
Cloud SQL Características clave

 Totalmente administrada.
 Una solución integrada.
 Confiable
 Migraciones sencillas a Cloud SQL.

Get a Highly Consistent, Scalable Database Service with Cloud Spanner | Google
Cloud Labs https://www.youtube.com/watch?v=_JsuTeXOjQg
10.- Cloud Spanner

Google Cloud Platform

 Ir a Spanner
 Aceptamos
 Create Instance (Creamos una instancia de Spanner)
 Indicamos un nombre (example-db)
 En configuración ponemos (Regional, us-central1)
 Aceptamos capacidad de inicio (por defecto)

Dentro de la instancia que creamos de Spanner, creamos nuestras bases de datos:

 Create Database
 example-db-db (en este caso pone dos veces db para distinguir de la instancia de
Spanner)

NO CREA UN SCHEMA, ESTO LO DEFINIMOS DESPUES_

 Create

Una vez dentro de la base (te deja ahí luego de hacer el paso anterior)

 Create table

CREATE TABLE Singers {


SingerId INT 64 NOT NULL,
FIrstName STRING(1024),
LastName STRING(1024),
SingerInfo BYTES(MAX),
BirthDate DATE,
} PRIMARY KEY(SingerId);
 Submit (corre la sentencia SQL para crear la tabla)
Automáticamente al terminar vemos la tabla y podemos acceder a ella.

Ahora cargamos datos:

 vamos a Data
 Insert

Automáticamente nos da un script, lo que haremos es editarlo.


Se editan los que están dentro de <FIrstName> = Nombre, eliminar los <>

Luego de terminar, hacemos click en RUN y por consola nos dice que inserto un registro.

En una aplicación grande usamos un script como el de arriba a la N, es decir con la


cantidad de datos que quisiéramos.

Para editar, seleccionamos el registro y luego click en EDIT

El proceso que se ejecutara es update sobre la tabla Singer, y por consola tendremos el
resultado.

Para visualizar:
Vamos a Query y escribimos.

SELECT * FROM Singers

Seleccionamos TODO lo que tenga la tabla Singers

Luego RUN y en la pestaña RESULTS nos muestra el resultado de la ejecución del query.
11.- Firestore

**Documento **= Conjunto de datos asociados a un mismo concepto


Ejemplo: Producto, Nota, Jugador.
Colección: Conjunto de documentos.
Cloud Firestore:

 Serverless
 Tiempo Real
 Soporte Offline

Características:
 Escalable
 Confiable
 Flexible
 Disponible
 Transaccional

Algunos casos de uso pueden ser:

 Gestión de perfiles de usuario


 Inventarios en tiempo real
 Cambios de estados
 Sincronización de datos
Elegir entre modo nativo y el modo datastore

.
Firestore en modo nativo
.

Considerada como la unión de lo mejor de Datastore y Firebase Realtime Database,


enfocando el desarrollo para aplicaciones móviles y web.

.
Por definición, posee la abstracción de Datastore sumándole:

 Modelo de datos colección y documento


 Actualizaciones en tiempo real
 Bibliotecas para el eso en dispositivos móviles y web

.
Firestore en modo Datastore
.

Selecciona la abstracción principal de Firestore, removiendo las eventualidades o


capacidades en tiempo real de Firestore.
.
Por definición, su uso está pensado en proyectos de servidor.
.

Elección final para el modo de base de datos

.
Si buscas el desarrollo de aplicaciones de servidor, deseando escalar automáticamente
mediante escrituras y acceso a datos, la elección será el modo Datastore.
.
Si buscas el desarrollo de aplicaciones web y/o móvil, deseando escalar automáticamente el
uso simultáneo de usuarios. la elección será el modo Nativo.

.
📚 Referencia

12.- Firestore en acción

En consola de GCP

 01 - Menú
 02 - Firestore
 03 - Elegir modo de operación (no se puede cambiar)
 04 - En este caso NATIVO
 05 - Ubicación (us-east4(Northrn-Virginia))
 06 - Crear base de datos (esperar unos segundos)
Podemos crear manualmente o mediante carga por procesos
 07 - Abrír la consola de GCP
 08 - node createTestData 5
En este caso el numero 5 es el equivalente a la cantidad de documentos
 09 - ls
Listamos todo incluyendo ahora .csv
 10 - cat customers_5.csv
 11 - node importTestData customers_5.csv
 12 - Vamos a Firestore y actualizamos
 13 - Tenemos la colección y los documentos
13.- Comparativa de las opciones de almacenamiento

Pensemos que estamos diseñando nuestra infraestructura en la nube, y nos toca abordar el
caso de almacenamiento.
.

Nuestra aplicación MVP es un marketplace que da servicio a clientes móviles y web, los
cuales requieren almacenar imágenes, relacionar la información existente en modelos como
usuarios y artículos, además de medir el impacto de nuestros artículos con respecto a
nuestros usuarios.

.
En este caso, emplearía los siguientes servicios:

 Para nuestro CDN (Content Delivery Network)


o Cloud Storage porque me interesa el volumen no estructurado, regional porque
de momento es un MVP local y standar porque accederemos frecuentemente a
los recursos.
 Para gestionar las relaciones de información
o Cloud SQL porque me interesa controlar la información en registros y
preferentemente en PostgreSQL
 Para las analíticas
o Cloud Firestore en modo nativo porque me interesa la información en tiempo real
con crecimiento acelerado
.

Conclusión

Recomiendo que, en la elección de nuestros servicios, cuando dudes por inexperiencia


generes proyectos aislados y verifiques la implementación de manera asilada para evaluar
costos y uso. Por demás, considero que es posible empezar por lo conocido SQL / NoSQL
y en una distribución de servicios externos mientras migramos a la nube GCP por
completo.

14.- Conclusiones.

Los datos son pieza clave, destaco este apunte que hice del curso de Coursera:
“Google cree que en el futuro todas las empresas sin importar su tamaño o sector se
diferenciarán de sus competidores por medio de la tecnología en su mayoría en forma de
software. Y el mejor software se centra en los datos. Así, cada una se convertirá en una
empresa de datos, si no lo es ya.”

16.- Creación del almacenamiento

Con la herramienta de GCP llamada Manage Resources se creo el proyecto de la


aplicación sin asociarlo a ninguna organización, luego ingresamos al proyecto creado y
accedimos a Cloud Storage en donde creamos un Bucket con el mismo nombre del
proyecto, pero agregándole el sufijo -bucket al cual se le configuro una ubicación
Regional en us-central1 y una clase Standard porque los datos van a estar constantemente
siendo consultados.
A este bucket se le tiene que quitar la prevención del acceso publico, ya que los datos van
a ser accedidos por los usuarios a través de la aplicación, sin embargo estos usuarios solo
pueden tener permiso de visualizar este bucket, para esto entramos a la pestaña de
Permisos y hacemos clic en Agregar, para poder agregar un nuevo permiso al Miembro
allUsers al cual le asignamos el rol Storage Object Viewer y guardamos.
GCP nos muestra la advertencia de que nuestro Bucket esta siendo accesible al publico que
tenga la url del bucket por lo tanto debemos estar muy seguros de permitir el acceso publico
a los datos.

1.

¿Cuál de las siguientes opciones NO es una característica de Google Cloud Bigtable?

Tiene procesamiento de alta latencia.

2.

La ventaja de usar Bigtable para escalar tu base de datos es que:

Te permite el cambio en gran escala sin tiempo de inactividad.

3.

Las columnas deben ser usadas en una fila.

4.

Las 4 propiedades de las transacciones de base de datos son:


Durabilidad, aislamiento, consistencia, atomicidad

5.

¿Qué son transacciones en base de datos?

Operaciones que realizan las base de datos. Estas transacciones necesitan seguir 4 propiedades
básicas (ACID).

6.

¿A qué propiedad de que transacción de base de datos pertenece el siguiente enunciado?


"Aseguran que todas las operaciones dentro de la secuencia de trabajo se completen
satisfactoriamente"

Atomicidad

7.

¿Cuál de las siguientes opciones NO es una característica de Google Cloud SQL?

Asegurar de que un proyecto con escrituras pesadas se escale a nivel mundial.

8.

¿Qué NO es tener una solución totalmente administrada?

Si quieres escalar, requerir a la plataforma más recurso y la plataforma hace por ti.

No la administras.

No la configuras.

La plataforma te hace las réplicas de seguridad por ti.

Una solución no administrada es la que aún está en desarrollo o no está diseñada para
distribuirse. Cuando se completa la solución no administrada y se desea distribuir, se puede
exportar y empaquetar como una solución administrada.

9.

¿Cuáles son las bases de datos relacionales de Google?

Cloud SQL y Cloud Spanner

Las bases de datos relacionales basadas en la nube, como Cloud SQL, Cloud Spanner y AlloyDB

10.

Para la siguiente situación, ¿cuál sería la mejor opción de almacenamiento en la nube con GCP?
"Usuarios de aplicaciones en el rededor del mundo. Interacción rápida y necesidad baja latencia".

Cloud spanner

11.
¿Cuáles son las diferencias principales entre Cloud SQL y Cloud Spanner?

La escalabilidad horizontal y la disponibilidad global de datos.

12.

¿Cuál de las siguientes opciones NO es una característica clave de Cloud Spanner?

Es mejor para aplicaciones pequeñas y con datos analíticos.

13.

Si necesitas datos estructurados, ¿cuál de los productos de almacenamiento de GCP NO es la


mejor opción?

Google Cloud Storage

14.

Si necesitas una escalabilidad horizontal global, la mejor opción es:

Cloud Spanner

15.

El producto de almacenamiento en la nube de Google que está basado en máquinas virtuales se


llama:

Cloud SQL

16.

Es una base de datos NoSQL que almacena documentos:

Cloud Firestore

17.

Firestore nos permite tener datos sincronizados en tiempo real, de forma que los usuarios de una
aplicación pueden acceder a información vigente en todo momento. Este enunciado es:

Verdadero

18.

Cloud Firestore ofrece soporte offline para que aplicaciones móviles o web pueda seguir operando
incluso si el usuario no está conectado a internet en algún momento. Este enunciado es:

Verdadero

19.

¿Ser serverless, permitir sincronización en tiempo real y ofrecer soporte offline son características
de qué servicio de almacenamiento en la nube de GCP?

Cloud Firestore
20.

Si quieres desarrollar una aplicación mobile o web, ¿qué modo de Firestore es la mejor opción?

Modo nativo

21.

¿Qué es un bucket de Cloud Storage?

Es un contenedor de objetos que tiene asignado un nombre único para que podamos identificarlo.

22.

Cloud Storage nos permite almacenar objetos en buckets de una manera segura, confiable y a un
precio muy accesible. Esto es:

Verdadero

23.

No es una de las principales características de Google Cloud Storage:

Usado para creación de aplicaciones rápidas

Características de Google Cloud Storage


Cloud Storage proporciona un almacenamiento rápido, económico y de alta duración
para los datos a los que se accede menos de una vez al mes. Es ideal para reducir el
costo de las copias de seguridad y los archivos sin perder el acceso inmediato.

24.

Sobre la estructura típica cuando usamos Cloud Storage, es verdadero que:

Objetos están contenidos en un bucket. Los buckets están asociados a un proyecto. Los proyectos
pueden estar agrupados a una organización.

25.

Google Cloud Storage tiene todos los datos cifrados, tanto en reposo como en movimiento. Este
enunciado es:

verdadero

26.

Google Cloud Storage permite crear un control de versiones de tu archivo. Este enunciado es:

verdadero

27.

Para un bucket, la ubicación define:


Los centros de datos donde residirán los objetos que contenga el bucket.

28.

Si utilizamos una distribución multi-región, no es verdad que:

En el caso que se presentará alguna falla en alguna zona de la región seleccionada el servicio sigue
operacional en las otras zonas de la misma región.

También podría gustarte