• Skip to primary navigation
  • Skip to main content
  • Skip to footer
Bluetab

Bluetab

an IBM Company

  • SOLUTIONS
    • DATA STRATEGY
    • Data Readiness
    • Data Products AI
  • Assets
    • TRUEDAT
    • FASTCAPTURE
    • Spark Tune
  • About Us
  • Our Offices
    • Spain
    • Mexico
    • Peru
    • Colombia
  • talent
    • Spain
    • TALENT HUB BARCELONA
    • TALENT HUB BIZKAIA
    • TALENT HUB ALICANTE
    • TALENT HUB MALAGA
  • Blog
  • EN
    • ES

Blog

Snowflake Advanced Storage Guide

October 3, 2022 by Bluetab

Guía avanzada sobre almacenamiento en Snowflake

Roberto García Parra

Technical Delivery Manager

Introducción a Snowflake

Snowflake es una plataforma avanzada de datos que se consume en modalidad SaaS 100% en cloud. El principal factor diferenciador de Snowflake es que proporciona capacidades avanzadas para todas las necesidades de datos de las compañías (Almacenamiento, procesamiento, explotación y soluciones de analítica avanzada) de una manera más flexible y sencilla que las soluciones de Datawarehouse tradicionales. 

El motor de queries y procesamiento de Snowflake está basado 100% en SQL para facilitar el acceso a la mayoría de los profesionales de datos, aunque Snowflake está haciendo esfuerzos por ampliar las posibilidades de desarrollo (Por ejemplo, recientemente ha sacado Snowpark, una API que permite a los desarrolladores que estén habituados a trabajar con Spark tanto en Scala cómo en Java y recientemente en Python, a poder migrar sus códigos de forma sencilla a Snowflake). Además, dispone de conectores nativos con una serie de partners que abarca todas las fases de la ingeniería de datos, cómo por ejemplo partners de integración de datos tan importantes cómo Matillion, Informatica, DBT o DataStage; de Business Intelligence cómo Domo, Cognos o Looker; o de Machine Learning cómo Alteryx, Dataiku o AWS Sagemaker.

La otra ventaja diferenciadora de Snowflake es que tiene unas capacidades de optimización que no requieren apenas de mantenimiento y cubren un abanico muy amplio de casos de uso, entre las que se podrían destacar la clusterización automática, el cacheo y el search optimization service, elementos en los que ahondaremos en detalle en futuros artículos, ya que en éste nos vamos a centrar sobre todo en las capacidades de almacenamiento.

Principales características diferenciadoras de Snowflake:

  • Pone al alcance de los usuarios funcionalidades avanzadas que se gestionan de forma sencilla, abstrayendo a los usuarios de lo que se maneja por debajo.
  • Multi-cloud: Se puede desplegar en cualquiera de los tres clouds más importantes (Amazon, Azure y Google) e incluso permite implementar una estrategia multi-cloud dónde la mayoría de la administración y operación corre por cuenta de Snowflake.
  • No hay que mantener ni hardware ni software. Todo gestionado por Snowflake y sin pérdida de servicio.
  • Gestión sencilla de las unidades de procesamiento (Llamadas Virtual Warehouses). Es muy sencillo subir o bajar la talla del procesamiento (a golpe de click o una sencilla sentencia SQL), y los cluster se pueden configurar para que se bajen automáticamente tras un tiempo de inactividad, y vuelvan a levantarse de forma rápida cuándo entre una nueva petición (en menos de un segundo la mayor de las veces). Dado que una de las variables que marcan el coste es el tiempo de actividad de un warehouse, esto permite eficientar los costes, sin tener que preocuparnos de estar bajando-levantando instancias en función del uso de la plataforma.

La arquitectura de Snowflake está basada en tres principales capas:

  1. La capa de almacenamiento, que es en la que nos centraremos en este artículo. Esta capa basada en microparticiones es la base de algunas de las funcionalidades más disruptivas de Snowflake cómo por ejemplo el Zero-copy cloning o el Time-to-Travel, que veremos también en futuros artículos.
  2. Capa de procesamiento.
  3. Cloud Services, que es la capa con la que se interactúa con Snowflake y es el cerebro que gestiona y coordina el resto de capas y componentes.

Objetivo del artículo

Vamos a entender en profundidad cómo funciona Snowflake en la capa de almacenamiento. A grandes líneas, veremos:

  • Cómo se almacenan, distribuyen y comprimen los datos.
  • La importancia de los metadatos a la hora de escanear de forma eficiente el almacenamiento cuándo se hace tanto una consulta, cómo una operación DML de inserción, actualización o borrado.
  • Cómo es este proceso de búsqueda en los datos, para reducir al máximo el número de bytes a escanear (y por tanto, la reducción en los tiempos de consulta).

Esto será la base para entender varias de las funcionalidades diferenciales que ofrece Snowflake:

  • A nivel rendimiento: Clustering, caching, search optimization service y query acceleration service (Recientemente liberada). Estos servicios-funcionalidades ayudan a optimizar diferentes casos de uso dónde lo proporcionado por el almacenamiento no sea suficiente para obtener el rendimiento deseado.
  • Data Sharing, sin necesidad de replicar los datos físicamente.
  • Resiliencia: Zero-copy cloning, Time Travel y Fail Safe.

Introducción al almacenamiento

El almacenamiento en Snowflake se basa en la generación de ficheros comprimidos con un tamaño máximo aproximado de 16MB y que se almacenan en un repositorio orientado a objetos tipo el S3 de AWS. Estos ficheros son inmutables, y cualquier operación de inserción-borrado-actualización siempre se hace generando un nuevo fichero de datos y actualizando los metadatos para saber cuáles son los ficheros que están activos en cada momento, además de otros metadatos que veremos más adelante en profundidad para eficientar la cantidad de bytes escaneados a la hora de ejecutar una query.

Objetivos del almacenamiento Snowflake

La forma en la que almacena los datos Snowflake está enfocada a dos objetivos principales:

  • Optimizar el rendimiento de las consultas, con una combinación de organización automática de los datos, almacenamiento columnar y el mantenimiento de una metadata.
  • Posibilitar varias de las características diferenciales que tiene Snowflake frente a otros Datawarehouse tradicionales, cómo por ejemplo:
    • Zero-copy cloning.
    • Time Travel.
    • Data Sharing sin necesidad de replicar el dato físicamente.

Principales características del almacenamiento en Snowflake

Compresión columnar: Snowflake analiza y comprime automáticamente los datos durante la carga de la tabla, agrupándolos por columnas. En función del tipo de datos de cada una de las columnas, selecciona el esquema de compresión más óptimo para cada una de ellas: Cada columna puede tener su propio esquema de compresión y aumentar-reducir de forma independiente. Gracias a esta eficiencia en la compresión, se obtiene una mejora significativa en los rendimientos al reducir la cantidad de datos a escanear, además de un ahorro en costes de almacenamiento, ya que Snowflake factura por la cantidad almacenada ya comprimida.

Microparticiones: Son unidades de almacenamiento contiguo en las que Snowflake va almacenando los datos en el orden de la ingesta. A diferencia de otros motores de bases de datos, en Snowflake no es necesario declarar una forma de particionar los datos por una o más columnas, sino que él ya lo hace de manera automática de la siguiente forma: Por un lado, va insertando los datos según le llegan en bloques de almacenamiento que oscilan entre los 50 y los 500MB antes de compresión (16MB aprox comprimidos). Cuándo se llena un bloque, pasa al siguiente, y así sucesivamente hasta que todos los datos son insertados. Snowflake también encripta tanto en tránsito cómo en destino todos los datos.

Cada una de estas particiones son inmutables: en el caso en el que haya una actualización en alguna de las microparticiones, lo que se hace es crear una nueva versión de la misma, y se mantienen las versiones antiguas por el tiempo parametrizado en el time travel (propiedad DATA_RETENTION_TIME_IN_DAYS en la tabla Snowflake). La inmutabilidad permite cosas cómo por ejemplo poder acceder a versiones de los datos en diferentes momentos del tiempo o hacer clonados de tablas sin tener que replicar los datos.

Metadatos en las microparticiones Snowflake

Para cada micropartición, Snowflake genera una metadata con la siguiente información:

A nivel columna

  • El rango de valores para cada una de las columnas de la micropartición.
  • Valores mínimo y máximo.
  • Conteo de valores diferentes.
  • Conteo de nulos.

A nivel tabla

  • Tamaño de tabla (en bytes).
  • Referencias de archivos y extensiones de tabla.
  • Conteo de filas.
  • Otras propiedades adicionales usadas tanto para la optimización cómo para el procesamiento de las queries.

Principales características del microparticionamiento de Snowflake

  • Automático y transparente para el usuario: A diferencia de otros sistemas tradicionales, no hay que declarar previamente un campo de partición, ni hacer un mantenimiento posterior.
  • Asegura la eficiencia en el podado tanto en las consultas, cómo en las operaciones DML.
  • Todas las particiones tienen un tamaño similar: En otros sistemas, el tamaño de las particiones depende del campo elegido, y puede haber un claro desbalance de particiones en función del número de ocurrencias que tenga cada valor del campo particionado (Hot partition Keys). El trade-off para tener estos tamaños similares es que pueden solaparse valores: Un determinado valor de columna (por ejemplo una fecha) puede estar en más de una micropartición. Cuánto mayor es el solapamiento en las particiones de un valor, menor será el podado, ya que habrá que recorrer más particiones para filtrar los valores correctos en una búsqueda.
  • Según Snowflake, este método de particionado automático sería suficiente para tablas con tamaños de hasta 1TB sin tener que plantearse otras opciones cómo por ejemplo el clusterizado.
  • En campos secuenciales cómo fechas o numéricos es dónde más vemos que se puede obtener un beneficio en esta forma de particionar, ya que si la inserción de los datos está ordenada por dichos campos, el podado (pruning) será altamente eficiente, y en consecuencia la cantidad de datos a escanear y la rapidez en la resolución de las queries.
  • El almacenamiento columnar permite que Snowflake solamente escanee aquellas columnas incluídas en la consulta. De ahí que sea importante incluir solamente las columnas que realmente necesitemos y evitar queries del tipo SELECT * si no es necesario consultar todas las columnas.

Entendiendo la organización de datos en Snowflake

Partiendo de los siguientes datos de ejemplo:

Ordenados por fecha. Al insertarlos en Snowflake, para ilustrar este ejemplo se supone que se generan dos microparticiones, que se van llenando en el orden en el que entran los datos:

Si por ejemplo, hacemos la siguiente query:

Select Fecha, sum(importe)

From ventas

Where fecha = ‘01/01/2022’

Snowflake recorrería los siguientes datos:

  • Primero se podan las microparticiones que no estén en el rango. En este caso, cómo estamos buscando el 1 de Enero, ignorará la segunda micropartición.
  • Dentro de la primera micropartición, dado que en la query solamente se están seleccionando las columnas fecha e importe de venta, no recorre la parte de los datos del cliente. Esto es posible gracias al almacenamiento columnar.

Si se buscan las ventas de un cliente específico:

Select sum(importe)

From ventas

Where cliente = ‘C2’

En este ejemplo, recorre las dos microparticiones, ya que C2 está dentro del rango de valores de ambas, aunque realmente C2 no está en la micropartición 1. Esto es lo que se comentaba en el apartado anterior de la posible dependencia que puede haber en la búsqueda de rangos en cada micropartición de cómo están distribuidos los datos.

DML’s en Snowflake

Para ver cómo funcionan las principales operaciones de DML en Snowflake, hemos reproducido el siguiente experimento: Creamos una nueva tabla, partiendo de una tabla origen que tiene las ventas de varios días de 60 call centers, seleccionando solamente los Call Center 1 y 20. Lo que haremos será operaciones atómicas de inserción, actualización y borrado para ver cómo se gestionan tanto los datos cómo los metadatos.

  • Inserción: Para comprobar cómo funciona la inserción insertamos dos nuevos registros con Call Center que no existen: El 10 y el 11.
    Los ficheros que componen las microparticiones son inmutables, por lo que Snowflake en la inserción puede ejecutar dos posibles acciones:
    • Crear un nuevo fichero con los registros existentes más el nuevo, y archivar el antiguo.
    • Crear una nueva partición para ese dato.
  • Actualización: Las acciones que realiza Snowflake para ejecutar una actualización son:
    • Identificar las microparticiones afectadas por la actualización.
    • Generar nuevos ficheros de micropartición que incluyan las modificaciones.
    • Archivar las versiones anteriores de los ficheros durante el tiempo marcado por el DATA_RETENTION_TIME_IN_DAYS.

Para verificar esto, partiendo del ejemplo anterior hemos lanzado una consulta que actualice los call center 10 y 11 a 15 por ejemplo. Comprobamos que efectivamente Snowflake solamente recorre esa partición, y genera un nuevo fichero con los nuevos valores, archivando el anterior:

Si se actualiza alguno de los otros dos call center, el número de particiones recorridas sería mayor, lo cuál implica que el coste de las operaciones DML también se ve afectado por la manera en que estén organizados los datos.

  • Borrado: Snowflake procede de manera similar a la actualización:
    • Identifica las microparticiones afectadas por el borrado.
    • Genera nuevos ficheros de micropartición dónde no aparezcan los registros eliminados.
    • Archiva las versiones anteriores de los ficheros durante el tiempo marcado por el DATA_RETENTION_TIME_IN_DAYS.

La importancia de entender cómo gestiona Snowflake estas operaciones es por las implicaciones que tiene a nivel rendimiento y almacenamiento. Sobre todo en el segundo caso, hay que tener en cuenta que si tenemos un alto número de días de retención en tablas (DATA_RETENTION_TIME_IN_DAYS) que se modifican frecuentemente, estaremos archivando muchas versiones de los datos que pueden incrementar considerablemente nuestro almacenamiento.

La principal ventaja es que Snowflake se encarga de todo este complejo mantenimiento siendo la gestión del almacenamiento transparente para el usuario.

En estos casos, para eficientar el almacenamiento es fundamental conocer los tres tipos principales de tablas que pone a nuestra disposición Snowflake, así cómo el concepto de Fail-Safe y Time-Travel:

Time-Travel: Periodo que, en función de la edición de Snowflake, (hasta un día en Standard y hasta 90 días en tablas permanentes a partir de edición Enterprise) permite almacenar todas las versiones por las que pasa una tabla, y habilita funcionalidades cómo poder restaurar datos en cualquier punto dentro de ese periodo, o hacer queries sobre un estado específico de los datos.

Fail-Safe: período de siete días durante el cuál se almacena cada versión de los datos en la que ha expirado su DATA_RETENTION_TIME_IN_DAYS y que permite la restauración de los mismos durante ese periodo pero solamente a través del soporte de Snowflake (Los usuarios no tienen acceso directo al Fail-Safe). Este periodo no es configurable y solamente está disponible en las tablas permanentes, cómo veremos a continuación.

Con estos dos conceptos claros, pasamos a describir los tres tipos principales de tablas en Snowflake:

  • Temporales: Solamente persisten durante la sesión, y no tienen Fail-Safe. Se puede definir Time-Travel de cero o 1 día.
  • Transitorias: A diferencia de las temporales, sí pueden persistir más allá de la sesión, pero solo permiten tener Time-Travel de hasta un día y tampoco incorporan Fail-Safe.
  • Permanentes: Igual que las transitorias, persisten más allá de una única sesión, pero permiten extender el Time-Travel hasta 90 días (siempre y cuándo se esté trabajando en una edición Enterprise o superior) e incorporan de caja el Fail-Safe (No configurable ni removible).

Por la naturaleza de cada una de las tablas, vemos que por ejemplo debemos tener en cuenta que si nuestra tabla se puede ver afectada por continuas operaciones DML de actualización-inserción, en el caso que tengamos una tabla permanente con un alto número de días de Time-Travel, nuestros costes de almacenamiento pueden verse incrementados.

La recomendación general para optimizar el almacenamiento es que se utilicen tablas temporales para tablas que simplemente utilicemos cómo tablas intermedias o staging, las transitorias para tablas permanentes que puedan ser fácilmente reproducibles desde fuera, y las permanentes para tablas críticas que tengan que estar siempre disponibles y que el coste de reprocesamiento en caso de desastre sería elevado.

Aspectos a tener en cuenta respecto al almacenamiento

  • Consultas por columnas no ordenadas en la inserción: Esta forma de particionar proporcional implica que haya solapes de valores en las diferentes microparticiones. En columnas de baja cardinalidad (por ejemplo con 2-3 valores diferentes) si los datos no están ordenados por esa columna y hacemos un filtro exclusivamente por dicha columna, hay que controlar el nivel de podado de microparticiones, porque puede pasar que esos 2-3 valores se encuentren en todas las particiones y que Snowflake no pueda podar ninguna. En estos casos, se recomienda para solucionarlo bien añadir al filtro un campo tipo fecha o numérico por el que estén ordenados los datos, o plantear la posibilidad de añadir una cluster key por dicho campo, que es uno de los servicios de optimización con los que cuenta Snowflake. Otra opción sería crear una vista tanto standard cómo materializada que ordene por ese campo.

    Ejemplo dónde queda evidenciado esto, es, lanzamos una consulta sobre una gran tabla de unos 14.000 millones de filas, cuyos datos están ordenados por fecha y cliente. En esta tabla, queremos consultar los diferentes tipos de envío que se han hecho. Si lanzamos la consulta sin filtro:

Primero vemos que se escanean las 49.448 microparticiones, lo cuál es lógico ya que no hemos incluído filtro alguno. Por otro lado, se escanean 13,58GB de los 770GB que tiene la tabla. Esto se debe a que en la query hemos incluído una única columna, y ya que Snowflake cómo hemos comentado almacena los datos de forma columnar y comprimida, solamente accede a los datos de la columna que consultamos.

Si aplicamos un filtro sobre la columna Call Center, que es un numérico que toma valores entre 1 y 60, y es un campo por el que no se ha ordenado en la inserción de los datos, y buscamos por ejemplo el call center número 20:

select distinct cr_ship_mode_sk from “SNOWFLAKE_SAMPLE_DATA”.”TPCDS_SF100TCL”.”CATALOG_RETURNS” where cr_call_center_sk = 20 

Vemos que efectivamente, apenas se han podado valores: De las 49,448 microparticiones, 49.447 tenían en su rango de call center el 20, con lo cuál ha habido que recorrerlas igualmente.

Sin embargo, si incluímos en el filtro uno de los campos de clusterizado, por ejemplo el código de cliente:

Vemos que sólo se ha recorrido un 10% aprox de las microparticiones, y el tiempo de query ha bajado de 1 minuto 45 segundos a 12 segundos. 

Con esto se puede concluir que el principal factor de rendimiento en las consultas es el número de bytes que tenga que escanear Snowflake el cuál viene principalmente determinado por el número de particiones a escanear, y la cantidad de datos de cada columna, y que si solamente incluimos en el filtro columnas por las que no estén ordenados los datos o no estén incluídos en la cluster key, en tablas de gran tamaño el rendimiento puede verse afectado. Es recomendable incluir en los filtros al menos uno de los campos de ordenación o de las cluster key para que las queries sean eficientes, o de no poder ser así, Snowflake nos proporciona otras alternativas para mejorar el rendimiento cómo las vistas materializadas, el cacheo o el search optimization service.

  • Búsqueda por rangos en las microparticiones: A la hora de podar microparticiones, Snowflake busca en la metadata si el valor buscado está en el rango de valores mínimo-máximo de la columna filtrada en la micropartición. Esto genera una dependencia a la hora de podar valores en base a cómo estén distribuidos dichos rangos en las microparticiones, lo cuál puede afectar a la cantidad de microparticiones podadas cuándo buscamos por columnas por las que no estén ordenados o clusterizados los datos: Por ejemplo, nos podemos encontrar casos dónde busquemos un valor que no existe, pero que por estar dentro del rango de valores en la metadata, obligue a Snowflake a recorrer igualmente todas las microparticiones.

En estos casos, Snowflake dice que en tablas con tamaños por debajo de 1TB la organización automática de datos debe ser suficiente para obtener buen rendimiento en las consultas.

Pruebas con Snowflake para entender cómo funciona el microparticionado y los metadatos asociados a las microparticiones

La tabla que se ha utilizado para estas pruebas contiene 100 millones de registros y seis columnas, dónde los datos se han distribuido en 49 particiones ocupando un total de 708MB (unos 14,5MB de media por micropartición). Los datos están ordenados por un campo de fecha.

Comentar que para estas pruebas, se ha utilizado la herramienta de Profiling de Snowflake, que está disponible desde el historial de queries. Hemos encontrado esta herramienta muy completa e intuitiva, y permite de un solo vistazo encontrar dónde se están generando los cuellos de botella en las queries, todo el plan de ejecución por el que pasa una query, así cómo las filas que salen de cada paso (lo cuál nos permite por ejemplo detectar cosas habituales de mal rendimiento cómo joins explosivos) y las microparticiones que se van podando en cada estado. Gracias a esta herramienta, hemos podido entender qué es lo que pasaba exactamente en cada una de las situaciones que hemos querido investigar y entender la gestión de Snowflake del almacenamiento.

Esta herramienta de profiling está disponible en el menú History de la UI, pinchando en la query que queramos analizar.

El objetivo de estas pruebas es entender la forma en la que Snowflake selecciona las microparticiones a recorrer y cómo de importante es la forma en la que se insertan los datos para mejorar el rendimiento en nuestras consultas, así cómo las columnas por las que se filtre.

En la tabla existe una columna, Call Center, dónde hay diferentes valores entre el 1 y el 60 pero con saltos (no están todos los posibles valores). Si hacemos una búsqueda por un call center específico de los que están:

Apreciamos que sea cuál sea el Call Center que incluyamos en el filtro siempre se recorren todas las microparticiones. La explicación es que Snowflake para determinar las microparticiones a recorrer, mira en la metadata de la columna Call Center si el valor buscado está dentro del rango, y en este caso, dónde los datos están ordenados por fecha, siempre se cumple que el valor está dentro del rango, por lo que tiene que recorrer todas las microparticiones.

Probamos a meter un nuevo registro de un Call Center con ID 11 que se sabe no aparece en los datos. Tras la inserción, el número de microparticiones se mantiene en 49, por lo que Snowflake ha debido generar un nuevo archivo que incluye el nuevo registro, y ha archivado la versión anterior de la micropartición.

Hacemos una búsqueda por ese Call Center, que a priori está en una única micropartición, y al revisar el Profile:

Se aprecia que Snowflake ha tenido que escanear las 49 microparticiones aunque se sabe que el valor 11 está en una micropartición específica. Esto confirma que Snowflake busca en base a rangos de valores por columna, y no conoce los valores específicos de una columna que hay en cada micropartición.

Para evidenciar aún más este hecho, insertamos un nuevo registro de Call Center que esté fuera del posible rango de búsqueda: Call Center con ID 61. Tras la inserción, verificamos que el número de particiones se mantiene, pero cuando se hace una búsqueda por ese valor:

Únicamente ha escaneado una micropartición. Esto se debe a que el 61 es un valor que está fuera del rango de la metadata del resto de las microparticiones, con lo cuál, ha podido saber que el Call Center 61 estaba en una única micropartición.

La siguiente comprobación es ver cómo Snowflake ejecuta la búsqueda de un valor de la columna Call Center que no está en los datos, pero sí en los posibles rangos de valores de la columna en las microparticiones. Por ejemplo, tenemos Call Centers 10, 11 y 13, pero no el 12. Si buscamos por el 12:

Cómo era de esperar, recorre todas las microparticiones, ya que el 12 entra en todos los posibles rangos de valores.

Para terminar de confirmar si Snowflake busca exclusivamente por rangos de valores, se crea una nueva tabla únicamente con los Call Center 1, 10 y 11. Esta nueva tabla tiene 8 microparticiones.

Si buscamos por el Call Center 5 (dentro de rango), recorre las 8 microparticiones aunque el Call Center no exista.

Si buscamos por el Call Center 12, directamente la metadata devuelve que ese Call Center no existe, y por tanto, no recorre ninguna micropartición.

Pero ahora, si buscamos por el valor 11, que recordemos fue una nueva inserción que metimos y justo está en el final del rango, en este caso Snowflake sí es capaz de podar el resto de microparticiones dónde no está el valor:

El motivo está en que se sabe que el resto de microparticiones tienen un rango 1-10, con lo cuál, la única que cumple estar en rango 1-11 es dónde verdaderamente está el valor. Sin embargo, en la otra tabla dónde era altamente probable que todas las microparticiones en la columna Call Center estuviesen en rango 1-60, ahí sí que tuvo que recorrerlas todas para saber dónde estaba el Call Center 11.

Conclusión de las pruebas:

Cuándo tengamos bajo rendimiento en consultas, hay dos indicadores principales a revisar en el profiling: Número de particiones escaneadas y cantidad de datos procesados.

Para mejorar la consulta, el objetivo es reducir el número de ambas: Para recorrer menos particiones hay que añadir filtros por campos en base a los cuáles se estén ordenando los datos (generalmente fechas o id’s numéricos) o replantearnos si ese campo es importante a la hora de filtrar, que los datos estén ordenados por dicho campo. Por supuesto, revisar también si las columnas que utilizamos en la consulta se pueden reducir. 

Si esto no es posible, tendríamos que plantearnos otras estrategias de optimización, cómo clusterizar la tabla en base a ese campo, utilización de cachés, ver si el caso de uso se ajusta a la utilización del search optimization service, o la utilización de vistas materializadas que pueden a su vez estar clusterizadas o no. El detalle de estas estrategias queda fuera del alcance de este artículo.

Principales conclusiones del funcionamiento del almacenamiento en Snowflake

  • El orden de inserción de los datos importa. Es recomendable insertar los datos ordenadamente en base a los filtrados más frecuentes que se vayan a hacer en la explotación.
  • Al almacenar de forma columnar los datos, el solamente seleccionar las columnas necesarias para la consulta reduce el número de bytes escaneados y por tanto el tiempo de resolución de consulta. Es recomendable evitar los SELECT * o añadir columnas innecesarias en las queries.
  • Es muy importante de cara al rendimiento seleccionar el tipo de datos más adecuado para cada columna, ya que Snowflake podrá reducir de manera más eficiente el tamaño de los datos, y esto se traduce en menores tiempos de escaneo, y por tanto de respuestas en las queries.
  • Para que las queries tengan un buen rendimiento, es aconsejable incluir un filtro de la columna por la que estén ordenados-clusterizados los datos y revisar en el profile de la query que tenga un buen porcentaje de poda de particiones.
  • En columnas de cardinalidad muy baja (1-10 valores diferentes), si hacemos búsquedas exclusivamente por ellas, y los datos no están ordenados o clusterizados por estas columnas, puede que no se poden particiones en las búsquedas. Con volúmenes de GB, el recorrer todas las particiones incluso con la talla más pequeña no perjudica el rendimiento y Snowflake maneja perfectamente, pero en volúmenes en el rango de centenas de GB, la diferencia entre tener o no la cluster key para buscar un valor en concreto, sí puede afectar en el número de bytes a escanear y por tanto en los tiempos de respuesta, con lo cuál es importante hacer un estudio de tiempos de consulta, para lo cuál Snowflake nos proporciona una potente herramienta de profiling, que a nosotros particularmente nos ha sido de gran utilidad para poder elaborar este artículo.

Entendiendo cómo Snowflake gestiona el almacenamiento a nivel inserción, actualización y borrado de datos y cómo se gestionan estos datos a la hora de realizar consultas, estaríamos en disposición de dar el siguiente paso que es entender todas las funciones avanzadas que proporciona Snowflake a nivel de optimización, compartición y seguridad-resiliencia en los datos. Éste será el objetivo de siguientes artículos.

Referencias

Documentación oficial de Snowflake https://docs.snowflake.com/en/

Navegación

Introducción

Objetivo

Introducción al almacenamiento

Objetivos del almacenamiento

Principales características del almacenamiento

Metadatos en las microparticiones

Principales características del microparticionamiento

Entendiendo la organización de datos

DML’s en Snowflake

Aspectos a tener en cuenta respecto al almacenamiento

Pruebas con Snowflake

Principales conclusiones

Referencias

Autores

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

Roberto García Parra

Technical Delivery Manager

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

CDKTF: Otro paso en el viaje del DevOps, introducción y beneficios.

May 9, 2023
LEER MÁS

Gobierno del Dato: Una mirada en la realidad y el futuro

May 18, 2022
LEER MÁS

$ docker run 2021

February 2, 2021
LEER MÁS

Databricks on Azure – An Architecture Perspective (part 1)

February 15, 2022
LEER MÁS

Data Mesh

July 27, 2022
LEER MÁS

Incentives and Business Development in Telecommunications

October 9, 2020
LEER MÁS

Filed Under: Blog, Practices, Tech

Essential features to consider when adopting a cloud paradigm

September 12, 2022 by Bluetab

Características esenciales que debemos tener en cuenta al adoptar un paradigma en la nube

Alejandro León

Delivery Manager

El NIST (National Institute of Standards and Technology), habla de las 5 características esenciales para una buena administración e implementación del paradigma en la nube. En este artículo se revisarán estas características en profundidad, ya que son aspectos importantes para tener en cuenta al momento adoptar el cómputo en la nube.

Características esenciales

Existe una variedad de servicios diferentes que se ofrecen bajo la modalidad de cómputo en la nube, y cada uno de los servicios ofrecidos tiene un fin único. Sin embargo, existe una serie de características comunes que define al cómputo en la nube, y que hace posible identificarlo como tal.

Según el NIST, las 5 características esenciales del cómputo en la nube son:

  • Autoservicio bajo demanda
  • Despliegue de infraestructura desde la red
  • Agrupación de recursos
  • Elasticidad
  • Medir un servicio

Para entenderlas mejor, echemos un vistazo al detalle de cada uno de estos puntos.

Autoservicio bajo demanda

En estos casos, cada uno de los usuarios u organizaciones que opta por utilizar alguna de las ofertas de servicios de cómputo en la nube es responsable de la configuración de los recursos y el despliegue de estos.

De esta forma, el usuario final es quien decide que recursos quiere o necesita utilizar y cuál será la capacidad asignada a cada uno de los recursos, y es el mismo usuario quien puede configurar estas opciones desde un centro de administración de dichos recursos.

Despliegue de infraestructura desde la red

Todos los servicios ofrecidos bajo el paradigma de cómputo en la nube deben de ser accesibles a través de internet, de forma que un usuario puede hacer uso de ellos en cualquier momento de acuerdo con sus necesidades, y, muy importante desde cualquier parte del mundo, sin necesidad de tener acceso físico a la infraestructura que brinda soporte.

Agrupación de recursos (Disposición de infraestructura)

Cada proveedor de servicios de cómputo en la nube mantiene un gran número de recursos de hardware disponibles para sus clientes. Cada que uno de ellos realiza una solicitud y el proveedor asigna los recursos mediante un modelo de múltiples tenencias. Esto, en esencia significa que todos sus clientes están haciendo uso de la una infraestructura compartida. Además, todos los recursos disponibles se agrupan por cliente, al cual se le asigna un acceso único para cada uno de ellos. De esta forma, cada cliente solo puede ver sus recursos y no tiene conocimiento de los recursos asignados a otros clientes.

Elasticidad

Sin importar cual sea el proveedor de cómputo en la nube, el usuario cuenta con una flexibilidad en el despliegue de los recursos. Esta flexibilidad es una abstracción del despliegue de la infraestructura física que el proveedor de servicios debe realizar para satisfacer las necesidades del cliente.

La infraestructura que soporta los centros de datos de los proveedores de los servicios generalmente hace uso de técnicas de cómputo distribuido o virtualización, que son transparentes para el usuario final.

De esta forma, el usuario tiene el control sobre los recursos que necesita, por lo que puede realizar peticiones para aumentar o disminuir las cantidades y/o capacidades de los recursos contratados, y el proveedor debe ser el encargado de administrar ese cambio en su infraestructura de forma transparente y sencilla para dar una respuesta rápida y satisfactoria a las solicitudes de sus usuarios.

Maneras de medir el servicio

Los proveedores de servicios de cómputo en la nube establecen controles para poder realizar una medición de los servicios utilizados por los usuarios. Dependiendo del tipo de recurso ofrecido, se acuerda y establece con el usuario un método de medición de uso de este, por lo general es por uso, o por servicio.

Por ejemplo, en un servicio de almacenamiento de datos en la nube el proveedor puede establecer un precio fijo para los archivos almacenados, o por el tiempo de almacenamiento, o por el espacio de almacenamiento utilizando, o una combinación de 3 factores.

 

Conclusiones

El cómputo en la nube representa una evolución con respecto a un modelo de cómputo tradicional, en el cual particulares u organizaciones necesitan adquirir todos los elementos necesarios para construir una infraestructura tecnológica capaz de soportar sus operaciones o nuevos proyectos.

La oferta de servicios de cómputo en la nube hace más sencillo la implementación de sistemas de información, sin la necesidad de contar con espacio físico para la instalación de equipos físicos, y con un potencial ahorro al hacer uso de modelos de cobro como son las suscripciones de pago por uso.

Es importante subrayar que el cómputo en la nube no es un reemplazo directo para la implementación de un centro de datos en una organización, sino que representa una alternativa con un diferente modo de operación y un potencial ahorro en costos. Queda como responsabilidad de las organizaciones realizar un estudio para verificar la factibilidad en la contratación de servicios de cómputo en la nube y el modelo de servicios requerido según sus necesidades.

Alejandro León

Delivery Manager

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

Introduction to HashiCorp products

August 25, 2020
LEER MÁS

Myths and truths of software engineers

June 13, 2022
LEER MÁS

Bank Fraud detection with automatic learning II

September 17, 2020
LEER MÁS

Bank Fraud detection with automatic learning

September 17, 2020
LEER MÁS

Mi experiencia en el mundo de Big Data – Parte I

October 14, 2021
LEER MÁS

Container vulnerability scanning with Trivy

March 22, 2024
LEER MÁS

Filed Under: Blog, Tech

Data Mesh

July 27, 2022 by Bluetab

Sí, Data Mesh es realmente transformacional, pero…
¿quién me ayuda a implantarlo?

En las últimas décadas, las compañías han tratado de generar o determinar un lugar que les permita mantener, controlar y acceder a datos analíticos de su empresa y del mercado; esto con el objetivo de mejorar su negocio.

Un ejemplo típico de ello es la utilización datos del comportamiento de los clientes y el uso de sus productos para la obtención de conocimientos claros y prácticos que les permitan administrar más eficientemente el negocio, así como mejorar y crear nuevos productos.

Sin embargo, al tratar de generar estas entradas de información, los profesionales dentro de la industria se enfrentan a varios retos que pueden llegar a crear mucha frustración y caminos cerrados. Tecnologías como el Big Data o los Data Lakes han ido dando soluciones conforme se evolucionaban los modelos.

Desde mayo de 2019 con la publicación de Zhamak Dehghani, estamos viendo una nueva evolución de las prácticas para diseñar arquitecturas de datos que están cambiando estos modelos del mundo del Big Data y del Data Lake.

Hasta ahora las clásicas tres capas de ingesta, procesamiento y publicación resultaban suficientemente eficientes. Pero esa eficiencia basada en la centralización y el gobierno, hoy genera silos de conocimiento, cuellos de botella en las organizaciones complejas, falta de escalabilidad en la agregación de características y en definitiva desconexión entre los originadores de la información y los consumidores.

El enfoque de Data Mesh es más que una metodología, un paradigma para la integración de una arquitectura de datos que descentraliza la propiedad de los dominios de datos, y al mismo tiempo define productos de datos analíticos, en un entorno que equilibra le gestión gobernada y la autonomía de los citados dominios. El paradigma Data Mesh, que hereda conceptos de la filosofía DDD (Data Driven Design), identifica cuatro conceptos como base de su modelo:

  • Los dominios como dueños de los datos, dominios cuya concepción inicial puede aproximarse a los dominios de negocio, y es donde se definen las entidades de datos y las relaciones con otros dominios para su consumo.
  • Los datos como producto, y como tal, pasan a ser susceptibles de proveer niveles de servicio. Pasando la responsabilidad de los mismo de la plataforma al equipo responsable del dominio.
  • La plataforma como autoservicio, automatizada y asegurando la independencia y la autonomía de cada dominio.
  • El gobierno federado, que asegure las decisiones próximas a los dominios pero que a la vez establezca las reglas de mínimos que aseguren la interoperabilidad entre ellos.

Este nuevo modelo supone además un cambio organizacional para asegurar su éxito. Los dominios además de dueños de sus productos de datos deben ser autónomos a la hora de desarrollar nuevos productos tanto para consumo propio como de otros dominios. Y, además, deben asegurar el consumo y el gobierno de los productos de datos. Y para ello deben contar con el conocimiento necesario de las plataformas, de forma que se asegure su autonomía, descargando del equipo de plataforma ciertas responsabilidades de gestión de dichos productos de datos.

Estos cambios a modelos más ágiles, pero a la vez de responsabilidades distribuidas, son fundamentalmente culturales, y requieren contar con equipos maduros capaces de asumir de forma autónoma la nueva distribución de responsabilidades, los nuevos procesos y su gobierno.

Vale, pero ¿por dónde empiezo?

Hoy nuestros clientes se enfrentan aún a un modelo en proceso de maduración en el mercado que genera muchas cuestiones de enfoque inicial.  Pese a que parece claro que ese equilibrio entre gobernabilidad y autonomía puede aportar eficiencias, el modelo metodológico de Data Mesh es aún emergente, y por descontado requiere del soporte de equipos senior técnicos y de negocio con alto nivel de madurez, capaces de tomar decisiones ágiles a lo largo del proceso, que no puede entenderse como puntual, sino de medio o largo plazo.

Bluetab a lo largo de los proyectos en entornos de clientes, ha desarrollado una metodología basada en experiencias de implantación de modelos de gobierno que aseguran un enfoque adecuado de este proceso de transformación. Una metodología muy operativa enfocada, más allá de un trabajo teórico, a la aplicación práctica de los modelos a los diferentes ecosistemas de nuestros clientes.

Esto se lleva a cabo estableciendo primero, casos de uso controlados y relevantes que permitan la visión desde la generación hasta el consumo de la información requerida por negocio, posteriormente, definiendo el plan de despliegue a los demás casos de uso de la organización y, finalmente y en paralelo, actuando sobre los requerimientos del cambio organizacional con comunicación y acciones específicas que habiliten la gestión del cambio.

Esta metodología inicia con el apoyo a la definición del contexto de dominios y la identificación de un primer caso de uso (MVP) que permita la visión end-to-end de los requerimientos a lo largo de los cuatro elementos, los citados dominios, los productos de datos y sus interdependencias, el modelo de autoservicio y las arquitecturas habilitadoras, y los requisitos de un gobierno no limitativo.

Una vez establecido dicho MVP e implantado, se genera el entendimiento global necesario para la definición de un plan de despliegue capaz de escalar a todo el ecosistema con éxito. Un plan que mediante métodos ágiles irá adaptándose a las diferentes particularidades y al propio cambio de requerimientos de negocio en el tiempo.

Pero el valor de nuestra aportación está en que, a lo largo de nuestros proyectos, hemos desarrollado herramientas prácticas de automatización para la implantación práctica de los modelos, aceleradores que Bluetab pone a disposición de sus clientes y que aseguran la optimización de los tiempos en el proceso de despliegue y su posterior evolución, y el apoyo a los clientes para una definición del modelo adecuado a su ecosistema y adaptada a sus requerimientos de negocio. Todo ello soportado por una estrategia de medición del valor aportado mediante datos objetivados KPIs.

En la definición de un ecosistema orientado a dominios es crucial el entendimiento del negocio y de la realidad de los consumos de datos dentro de cada una de las estructuras organizativas. A partir de ahí se puede establecer el debate para una definición de dominios consistente, acordada y de largo plazo.

Una herramienta como nuestra Matriz de Convergencia, donde se cruzan consumos, proyectos, orígenes, etc., permite una evaluación objetiva y profundizar en un mismo entendimiento y nomenclatura común en la organización. A partir de ahí, la definición del primer caso de uso y la priorización en el plan de escalado posterior se realiza de forma consistente.

En la generación de productos de datos, hay varios factores relevantes además del entendimiento y los modelos del consumo seguramente mediante API´s y una estrategia de disponibilización con la definición de mínimos requeribles. Uno de esos factores es la evaluación de la aportación del valor de dichos productos, y otro la estrategia de comunicación y comunicación/disponibilización a los demás dominios.

Para todo ello nuestro asset de gobierno del dato, Truedat, posibilita una solución que cubre desde el metadatado, a la generación de un Marketplace común, asegurando el control de los mínimos de gestión.

En la gestión del gobierno federado y el equilibrio entre el control y la autonomía de los dominios, nuestra Matriz de Madurez es fundamental para la evaluación del nivel de dicha madurez y el establecimiento del programa que cubra el gap de requerimientos. Y una vez establecido el programa, esta misma suite de servicios, Truedat, aporta capacidades adecuadas de calidad o trazabilidad que aseguran la implementación de las reglas que definan los propietarios en los dominios y la gestión técnica del end-to-end del ciclo de vida del dato.

Y finalmente en el desarrollo de una plataforma automatizada y enfocada al autoservicio de los dominios, nuestros modelos de arquitecturas, así como nuestras herramientas de despliegue automático de servicios y nuestros modelos de despliegue de estrategias Devops y MLops, aseguran una implantación optimizada de la estrategia y un time-to-market eficiente en su evolución de requerimientos.

La implantación de una estrategia Data Mesh genera aún muchas dudas sobre cómo abordarla en entornos complejos en el que coexisten diferentes arquitecturas, modelos de datos y requerimientos de consumo. Nuestro enfoque metodológico, más dirigido al desarrollo práctico de la puesta en marcha de cada uno de los pilares de la estrategia, puede asegurarte un despliegue ágil y en unos tiempos asumibles. De esta forma tanto las áreas técnicas como negocio pueden obtener el retorno de valor en los plazos requeridos.    

Síguenos y en próximos artículos entraremos en mayor detalle sobre cómo aterrizar de forma práctica y eficiente en este nuevo paradigma Data Mesh.

Autores

Liliana Palestina

CTO

Alvar Noe Arellanos

Business & IT Strategy Professional

Juan Manuel Sanchez

Data Strategy

Armando Camargo

Data Governance Manager

Jesus Saavedra

BI Manager

José Carranceja

COO

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

Using Large Language Models on Private Information

March 11, 2024
LEER MÁS

IBM to acquire Bluetab

July 9, 2021
LEER MÁS

Big Data and loT

February 10, 2021
LEER MÁS

LakeHouse Streaming on AWS with Apache Flink and Hudi (Part 1)

April 11, 2023
LEER MÁS

Databricks on Azure – An architecture perspective (part 2)

March 24, 2022
LEER MÁS

Boost Your Business with GenAI and GCP: Simple and for Everyone

March 27, 2024
LEER MÁS

Filed Under: Blog, Blog, Outstanding, Tech

Some of the capabilities of Matillion ETL on Google Cloud

July 11, 2022 by Bluetab

Algunas de las capacidades de Matillion ETL en Google Cloud

Duvan Duque

Data Engineer | Google Cloud Associate Cloud Engineer

Matilion ETL es un producto que nos permite recopilar datos de distintas fuentes y estructurarlos actualmente cuenta con versiones para Snowflake, Delta Lake en Databricks, Amazon Redshift, Azure Synapse, Google BigQuery siendo esta última en la que vamos a profundizar.

En Google cloud se cuenta con 4 opciones para implementar Matillion las cuales son:

Matillion ETL for BigQuery – Cluster:

  • 12 usuarios concurrentes , 36 entornos y autobalanceo zonal para satisfacer la demanda de forma constante

Matillion ETL for BigQuery – Extra Large:

  • 12 usuarios concurrentes y 36 entornos

Matillion ETL for BigQuery – Large:

  • 5 usuarios concurrentes y 15 entornos

Matillion ETL for BigQuery – Medium:

  • 2 usuarios concurrentes y 6 entornos

Matillion ETL for Snowflake:

  • Esta opción está dirigida a Snowflake

El servicio se encuentra ubicado en el Marketplace de Google De ahora en adelante se hablará de la versión médium ya en ese momento las necesidades del proyecto no se necesitaban más recursos.

Cada una de las versiones tiene un costo diferente la versión médium tiene un precio estimado sin descuentos de 1437.05 USD al mes teniendo en cuenta que la instancia se encuentre encendida durante 30 días 24 horas y la facturación mínima es por 1 minuto.

Una vez lanzado el servicio desde Marketplace se creará una instancia en compute engine la cual cuenta con una dirección IP estática mediante la cual se puede acceder al servicio

Una vez dentro se debe establecer estructura de proyectos los cuales pueden contener carpetas para organizar el flujo de trabajo los cuales van a contener dos tipos de Jobs orquestación y transformación. los cuales se pueden crear realizando un clic derecho sobre las carpetas.

Cada de los jobs cuenta con distintos componentes y capacidades para el caso del job de orquestación son los siguientes:


Componentes de carga

Estos componentes son los que extraen información de las diversas fuentes para llevarla a Bigquery entre ellos tuve la oportunidad de usar integraciones con Hubspot, APIs, Cloud storage y Facebook. siendo estos solo una pequeña porción de la lista de integraciones disponibles

Componentes de descarga

Los cuales principalmente tienen como fuente una tabla de Bigquery y la llevan a otro destino como Cloud Storage

Componentes DDL

Los cuales permiten manipular las tablas de Bigquery

Componentes de flujo

Los cuales permiten realizar operaciones con los otros componentes

Componentes de iteración

Los cuales permiten crear ciclos de un componente

Componentes de código

Los cuales permiten ejecutar códigos como Bash, Jython, Python 2 y Python 3

Componentes de transformación

Los cuales permiten ejecutar otros Jobs de orquestación y transformación

los nombrados anteriormente solo son algunos de los que tuve la oportunidad de trabajar ya que eran los requeridos para alcanzar las necesidades del proyecto y cabe mencionar que la herramienta cuenta con más.
Los jobs tienen la capacidad de encadenar y ejecutar distintos componentes.

Es posible encadenar y establecer condiciones en un Job o múltiples para su ejecución dentro de otro Job

se cuenta con la capacidad agendar la ejecución de los Jobs dentro del propio Matillion

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

Duvan Duque

Data Engineer | Google Cloud Associate Cloud Engineer

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

Leadership changes at Bluetab EMEA

April 3, 2024
LEER MÁS

Spying on your Kubernetes with Kubewatch

September 14, 2020
LEER MÁS

Desplegando una plataforma CI/CD escalable con Jenkins y Kubernetes

September 22, 2021
LEER MÁS

Some of the capabilities of Matillion ETL on Google Cloud

July 11, 2022
LEER MÁS

LakeHouse Streaming on AWS with Apache Flink and Hudi (Part 2)

October 4, 2023
LEER MÁS

5 common errors in Redshift

December 15, 2020
LEER MÁS

Filed Under: Blog, Tech

CLOUD SERVICE DELIVERY MODELS

June 27, 2022 by Bluetab

Modelos de entrega de servicios en la nube

Alejandro León

Senior Data Consultant

Este artículo nos pretende acercar a los modelos de entrega que hoy en día se ocupan dentro de las nubes principales del mercado y cómo es que estas adoptan estos mismos modelos para sopesar las necesidades de un mundo tecnológico y cambiante constantemente.

  • PaaS (Platform as a Service), plataforma como servicio.
  • IaaS (Infraestructure as a Service), infraestructura como servicio.
  • SaaS (Software as a Service), software como servicio.

Por otra parte, se tienen los modelos de despliegue que se pueden implementar en las organizaciones: la nube privada, pública e híbrida, entre otras.

SAAS (SOFTWARE COMO SERVICIO)

El término software como servicio, infiere básicamente al software residente, es decir; el (instalado) en la nube, aunque no todos los sistemas SaaS son sistemas instalados en la nube, la mayoría sí.

SaaS es un modelo de software basado en la Web, que provee el software a través de un navegador web, en donde cada una de las aplicaciones son accesibles desde diferentes dispositivos hacia el usuario final, por medio de una interfaz ligera, ocupando la interfaz de los navegadores que tenemos hoy en día.

En un sistema SaaS, el usuario no requiere saber sobre el alojamiento del software ni el Sistema Operativo (SO), así como tampoco si está escrito en algún lenguaje de programación como, por ejemplo: PHP, Java o .Net; Adicionalmente, el usuario final no requiere instalar ningún software o programa, inclusive no gestiona ni administra la infraestructura principal de la nube, incluyendo redes, SO, servidores, ni las funcionalidades de las aplicaciones individuales, salvo las posibles configuraciones personalizadas requeridas por el servicio de nube correspondiente.

Una aplicación típica de software SaaS es Gmail, un programa de correo electrónico de Google, es un programa que se utiliza a través de un navegador web, proporcionando la misma funcionalidad de Microsoft Outlook o Apple Mail, pero sin necesidad de configurar la cuenta de correo electrónico, solo basta ingresar directamente a Gmail para acceder a su correo, dada la importancia de este tipo de modelo de servicio en la informática en la nube.

A finales de los 90 y a inicios del 2000, surgieron los ASP (Application Service Provider) proveedores de servicios de aplicaciones, estas empresas proporcionan servicios de software a múltiples organizaciones desde un centro de cómputo y a través de Internet.

En los últimos años, los servicios SaaS han evolucionado como modelo de bajo demanda, ya que el pago del servicio depende de su uso y consumo. La aparición de herramientas como Google Apps apunta a los servicios SaaS como modelo de desarrollo de software del siglo XXI.

SaaS ha provocado diversos cambios en su uso e incluso para las otras licencias del software, esto es un gran reto entre el software como servicio basado tanto en código abierto (software libre) y el software propietario, modelo popular representado por Microsoft y los otros grandes como IBM, Oracle, SAP.

PLATAFORMA COMO SERVICIO (PAAS)

La plataforma como servicio (PaaS), ofrece un entorno de desarrollo de aplicaciones a los programadores, quienes las desarrollan y ofrecen sus servicios a través de la plataforma PaaS. Por otra parte, el proveedor ofrece estos servicios regularmente para el desarrollo de aplicaciones kits de herramientas (toolkits), lenguajes de programación, estándares de desarrollo y canales de distribución. Estos estándares permiten el desarrollo y la programación de aplicaciones de software, dado el bajo costo como la oportunidad que ofrecen los canales de comunicaciones establecidos, para la comercialización hacia los clientes.

Los sistemas PaaS son muy rentables ya que facilitan a los desarrolladores de aplicaciones y pequeñas empresas innovadoras para expandirse a través de aplicaciones web sin el coste y complejidad que supondría la compra de servidores, configuraciones y la puesta en funcionamiento.

INFRAESTRUCTURA COMO SERVICIO (IAAS)

La infraestructura como servicio (IaaS), proporciona los servicios básicos necesarios para ejecutar las aplicaciones. Este modelo brinda servicios de almacenamiento de datos, capacidad de procesamiento, servidores y otros equipamientos físicos, en pago exclusivo por uso.

Esto puede incluir también, la entrega de sistemas operativos SO y tecnología de virtualización para gestionar los recursos. Al usuario se le provee la capacidad de almacenamiento, procesamiento, redes y otros recursos informáticos fundamentales en donde este es capaz de desplegar y ejecutar un software específico, que puede incluir SO y/o aplicaciones.

El usuario final no gestiona ni controla la infraestructura principal de la nube, pero

puede tener el control sobre el SO, almacenamiento y aplicaciones desplegadas.

En la práctica el cliente IaaS “renta” (paga por uso y prestaciones) de los recursos informáticos en su propio data center (centro de datos), en lugar de comprarlos e instalarlos.

CONCLUSIONES

Una vez abordados estos conceptos podemos comentar que la nube (Cloud) es un sinónimo de Internet y en términos científicos, una representación simple de una red de conexión de datos compleja y dispositivos interconectados que forman la nube.

En la actualidad, surgen nubes públicas y privadas como subconjuntos de Internet en función de sus relaciones entre sí con pequeñas, medianas y grandes empresas.

De hecho, las nubes públicas y privadas se dan a conocer como redes internas o externas, al igual que los centros de datos corporativos o de la nube; en la práctica la diferencia reside en las relaciones de las empresas con la nube.

La definición de público o privado de la computación en la nube debe facilitar las relaciones entre los proveedores del servicio y los clientes, mediante las tarifas acordadas previamente o gratuitas, regularmente las ofertas comerciales siempre deben cumplir la calidad de los requisitos de servicio de los clientes, ofreciendo acuerdos de nivel de servicio, tipo SLA (Service Level Agreements).

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

Alejandro León

Senior Data Consultant

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

Mi experiencia en el mundo de Big Data – Parte II

February 4, 2022
LEER MÁS

Snowflake, el Time Travel sin DeLorean para unos datos Fail-Safe.

February 23, 2023
LEER MÁS

CLOUD SERVICE DELIVERY MODELS

June 27, 2022
LEER MÁS

MICROSOFT FABRIC: Una nueva solución de análisis de datos, todo en uno

October 16, 2023
LEER MÁS

Workshop Ingeniería del caos sobre Kubernetes con Litmus

July 7, 2021
LEER MÁS

Cómo preparar la certificación AWS Data Analytics – Specialty

November 17, 2021
LEER MÁS

Filed Under: Blog, Tech

Myths and truths of software engineers

June 13, 2022 by Bluetab

Mitos y verdades de los ingenieros de software

Camilo Andrés Montoya Hernández

Desarrollo de Software

Últimamente, tras el crecimiento exponencial en las diferentes tecnologías y la alta demanda de ingenieros de software (sistemas, IT, entre otras denominaciones) a nivel mundial, múltiples organizaciones han puesto su mirada en estos profesionales y  las actividades que realmente desarrollan en su diario vivir, sin embargo, aún existe mucha especulación con ideas que no son del todo ciertas y la creencia de que la programación es solo para unos cuantos superdotados, por eso hoy en Bluetab, an IBM Company queremos aclarar todos esos mitos que se pudieron escuchar de conocidos, amigos o incluso docentes así mismo como las dudas que uno mismo puede plantear en algún momento si se llegó a considerar dirigir la vida profesional en el campo del software.

Sin más preámbulo, comencemos:

 

Mito: Para programar hay que ser un experto en matemáticas.

 

Realidad: Para dedicarse a la programación, el conocimiento matemático adquirido en la educación básica y secundaria puede llegar a ser suficiente. Solo áreas específicas, como el desarrollo de juegos, la inteligencia artificial o la creación de algoritmos de machine learning pueden requerir habilidades más avanzadas, pero no es un requerimiento excluyente para programar, y aun así, siempre está la posibilidad de implementar herramientas y bibliotecas (porciones de software que otras personas ya escribieron y resuelven parte de los problemas que se presenten a lo largo del proyecto) las cuales evitan tener que realizar expresiones matemáticas complejas dentro del código y enfocarse en lo verdaderamente importante. En resumidas cuentas, los conocimientos sobre matemáticas no son directamente proporcionales a las habilidades que se tengan o se puedan llegar a desarrollar para desenvolverse como ingeniero de software.

 

Mito: La tecnología no es para las mujeres.

 

Realidad: La idea de que las mujeres descarten carreras relacionadas con la tecnología a simple vista parece algo normal y que no tiene importancia, lo anterior ya que la publicidad, las series y las propias entrevistas de RRHH para un cargo han fomentado el estereotipo del “programador hombre”, lo anterior sumado a la desigualdad en los números (en cantidad de mujeres dentro del ámbito tecnológico y la diferencia de salarios vs. el género masculino) puede traducirse en un ambiente hostil para las mujeres. Sin embargo, poco a poco el crecimiento acelerado del sector del software está modificando la cultura en el sector de las ciencias de la computación. Hace unas semanas, varías compañeras de Bluetab, an IBM Company conversaron sobre su experiencia en las TIC y su labor como colaboradoras (Bluetab América, an IBM Company, 2022) de la compañía, haciendo énfasis en aspectos importantes, como, por ejemplo, el que los equipos de trabajo conformados por profesionales de ambos géneros tienen un mayor grado de resolución de problemas, además, logran tasas más altas de productividad e innovación.

Por último, es importante resaltar que no se trata de un problema biológico, sino histórico, no obstante, el número de mujeres que aprenden a programar y deciden enfocar su vida profesional a estos roles está en constante crecimiento y las iniciativas de gobiernos y organismos privados por la igualdad en este sector son fuente de motivación para romper esa brecha

 

Mito: Todos los informáticos son programadores.

 

Realidad: Actualmente se tiene la falsa creencia de que quien estudia informática en la universidad (o por medio de un aprendizaje autodidacta recurriendo a otras fuentes de contenido) es por obligación programador, a pesar de esto, se debe considerar la informática en sí misma es muy extensa y contempla un abanico de múltiples áreas que van desde el análisis de sistemas, administración de servidores, desarrollo de software, bases de datos, hasta redes y gerencia de proyectos. 

 

Los profesionales de las carreras de sistemas, tecnología o software en algún momento pueden llegar a tratar  lo largo de su aprendizaje todos los contenidos mencionados, pero, enfocándose a los ingenieros de software, ellos son personas que suelen poseer un conocimiento técnico profundo y selecto puesto que necesitan captar conocimientos muy puntuales que fomenten el desarrollo de la lógica y la resolución de problemas, por lo cual es normal que una persona con este rol no suela manejar temas de redes, soporte o administración de servidores, ya que no son de su área de formación ni se desempeñan día a día en esas actividades.

 

Mito: Programar es muy complejo.

 

Realidad: Programar no es una habilidad que surja de forma espontánea, requiere formarse y practicar mucho para lograr cierto dominio y fluidez, además, al igual que otros trabajos tiene cierto grado de dificultad, pero una de las ventajas de las funciones vinculadas con la tecnología es que al realizar el trabajo en equipo se pueden encontrar soluciones accesibles y más óptimas, sumado a esto, el hecho de que en los últimos años hayan aparecido lenguajes muy fáciles de aprender cómo Python, JavaScript, Kotlin o herramientas No Code vuelve una realidad la premisa de que todos pueden aprender a programar.

 

Las carreras asociadas a la informática tienen un marco de trabajo dirigido especialmente hacia el pensamiento lógico, aunque en realidad, el desarrollo de software no es tan diferente de aprender un nuevo idioma. Los lenguajes de programación, al igual que el inglés, el italiano o cualquier idioma, se componen de palabras, gramática, sintaxis y tienen un propósito: comunicarse (en este escenario la comunicación es con cualquier dispositivo electrónico).

Finalmente, es cierto que como en todas las profesiones y áreas del conocimiento hay personas que puedan tener mayores skills de entrada, en este punto, la actitud va a marcar una gran diferencia para ser o no un buen ingeniero de software. Como se ha recalcado a lo largo del artículo, no es necesario ser un genio para conseguir un desempeño notable en la programación, mientras más tiempo se dedica a aprender (utilizando la técnica de estudio que más se adapte a la forma de aprender de cada uno y los medios de preferencia para cada persona) y practicando con diferentes retos y plataformas, mejor se va a desenvolver el ingeniero.

 

Mito: El día a día de un programador es solitario.

 

Realidad: El cine y la televisión han provocado que las personas crean que trabajar en tecnología está ligado a llevar una vida solitaria y apartada de la sociedad (en lo que a nivel profesional/laboral se refiere). Por el contrario, los ingenieros de software no solo trabajan en equipo en su día a día puesto que necesitan estar en contacto con el cliente, con el equipo de trabajo para poder obtener las soluciones a sus problemas, sino que integran una comunidad cercana, fuerte y participativa, por lo cual se entiende que el sector avanza a pasos agigantados gracias a la mentalidad de sus profesionales.

 

Para codificar es muy importante saber comunicarse asertivamente (cualidades que van más allá del pensamiento matemático y el razonamiento lógico), poder pensar soluciones ágiles y a nivel cooperativo, expresar correctamente ideas y opiniones, volviendo fundamental el evento de tener en cuenta la participación de otros individuos cuando se escribe código, se interactúa con el usuario o se elige la arquitectura de la aplicación, habilidades blandas que vuelven casi obligatoria la interacción constante de los ingenieros con otros profesionales.

 

Mito: Si se quiere programar, hay que aprender el lenguaje que esté de moda o el que mejor oferta económica brinde.

 

Realidad: Cada lenguaje tiene su propósito específico y se adapta mejor o no en los diferentes proyectos de una compañía. De todas formas, diferente no es equivalente a ser mejor o peor, por lo tanto, la verdadera pregunta que un ingeniero de software debe realizarse no es: “¿Cuál es el mejor lenguaje de programación?”, sino: “¿Qué lenguaje es el más adecuado para solucionar los requerimientos planteados dentro del proyecto?”.

 

Ahora bien, el pensamiento de “¿qué lenguaje de programación es el mejor remunerado económicamente?” provocará frustración al desarrollador llevándolo nuevamente a la idea de que la programación es difícil, lo primero por aprender es la lógica de la programación y el razonamiento para la resolución de problemas de ese índole, y sólo después de eso, escoger el primer lenguaje de programación el cual debe ir orientado especialmente a los gustos e intereses del profesional, lo anterior ya que a algunos de los profesionales se les da bien el frontend, a otros el backend, el big data, el machine learning, entre muchas más áreas en las que se requiere implementar una solución de software.

 

Mito: Programar es una tarea muy rutinaria.

 

Realidad: Codificar es una tarea que implica mucha creatividad, quizás no en todo el aspecto artístico o asociado a manualidades, pero sí en cuanto a todas las posibles soluciones que pueden generarse hacía una misma necesidad o problema; están asociadas al ingenio del equipo para encontrar la alternativa más conveniente al caso específico. Cada proyecto requiere de un enfoque mental diferente, por lo que la rutina profesional se ve muy reducida y se tiende a llevar una vida dinámica.

 

En segundo lugar, se cree que un ingeniero de software pasa la mayor parte de su tiempo frente a la pantalla y escribiendo código. Por el contrario, el éxito de un proyecto depende de la colaboración de un equipo y del diálogo, corroborando lo explicado previamente en el mito: “El día a día de un programador es solitario”.

 

Para concluir, la programación es una profesión que permite crear desde cero algo que antes no existía. La primera vez que se escribe un programa que logra que el computador ejecute la serie de instrucciones deseadas se vuelve casi un momento mágico. Y las siguientes veces… también.

 

Finalmente es posible observar que, existen muchos mitos asociados tanto a la programación como a los ingenieros de software, no obstante, esperamos que este artículo haya sido de mucha utilidad y mejore a grandes rasgos el panorama respecto a los temas aquí tratados y sea motivación para que se decida incursionar en el mundo de la tecnología aprovechando los beneficios que Bluetab, an IBM Company tiene, ya sea que se busque aprender desarrollo de software o se esté apuntando a una nueva oportunidad laboral.

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?
DESCUBRE BLUETAB

Camilo Andrés Montoya Hernández

Desarrollo de Software

SOLUCIONES, SOMOS EXPERTOS

DATA STRATEGY
DATA FABRIC
AUGMENTED ANALYTICS

Te puede interesar

Hashicorp Boundary

December 3, 2020
LEER MÁS

Cómo depurar una Lambda de AWS en local

October 8, 2020
LEER MÁS

Oscar Hernández, new CEO of Bluetab LATAM.

May 16, 2024
LEER MÁS

De documentos en papel a datos digitales con Fastcapture y Generative AI

June 7, 2023
LEER MÁS

Basic AWS Glue concepts

July 22, 2020
LEER MÁS

El futuro del Cloud y GenIA en el Next ’23

September 19, 2023
LEER MÁS

Filed Under: Blog, Tech

  • « Go to Previous Page
  • Page 1
  • Page 2
  • Page 3
  • Page 4
  • Page 5
  • Page 6
  • Interim pages omitted …
  • Page 9
  • Go to Next Page »

Footer

LegalPrivacy Cookies policy

Patron

Sponsor

© 2025 Bluetab Solutions Group, SL. All rights reserved.