{"id":1946,"date":"2018-11-21T12:41:17","date_gmt":"2018-11-21T12:41:17","guid":{"rendered":"https:\/\/keepler.io\/2018\/11\/21\/arquitectura-big-data-lambda-en-aws-para-productivizar-datos\/"},"modified":"2023-09-12T13:21:05","modified_gmt":"2023-09-12T13:21:05","slug":"arquitectura-big-data-lambda-en-aws-para-productivizar-datos","status":"publish","type":"post","link":"https:\/\/keepler.io\/es\/2018\/11\/21\/arquitectura-big-data-lambda-en-aws-para-productivizar-datos\/","title":{"rendered":"Arquitectura Big Data Lambda en AWS para productivizar datos"},"content":{"rendered":"<p>Hace no mucho <strong>organizamos<\/strong> un <a href=\"https:\/\/www.meetup.com\/es-ES\/datatechmadrid\/events\/255419538\/\" target=\"_blank\" rel=\"noopener noreferrer\">meetup de introducci\u00f3n cloud<\/a> con la idea de acercar este concepto tan difuso a la gente. En esta jornada se explicaron muchas dudas sobre el cloud y sobre los proveedores m\u00e1s importantes, pero hubo algo que llam\u00f3 m\u00e1s la atenci\u00f3n que el resto. <strong>El Big Data<\/strong>.<\/p>\n<p>Y, <strong>\u00bfqu\u00e9 es eso del Big Data?<\/strong> Lejos de querer embarcarme en un post te\u00f3rico sobre definiciones, ventajas y desventajas; me gustar\u00eda dar una peque\u00f1a definici\u00f3n y pasar a los engranajes.<\/p>\n<p>El big data en s\u00ed no es m\u00e1s que, tal y como la propia palabra corrobora, <strong>grandes vol\u00famenes de datos<\/strong>, pero lo importante no es s\u00f3lo lo que tenemos, sino <strong>c\u00f3mo sacarle partido<\/strong>. Lo que a priori puede parecer inconexos o incluso de poco valor, bien pulido puede convertirse en una gema en bruto. Y \u00bfc\u00f3mo lo pulimos?<\/p>\n<span class='bctt-click-to-tweet'><span class='bctt-ctt-text'><a href='https:\/\/x.com\/intent\/tweet?url=https%3A%2F%2Fkeepler.io%2Fes%2F2018%2F11%2F21%2Farquitectura-big-data-lambda-en-aws-para-productivizar-datos%2F&#038;text=En%20%23BigData%20no%20solo%20son%20importantes%20los%20datos%2C%20sino%20c%C3%B3mo%20sacarle%20partido%20&#038;via=keepler_io&#038;related=keepler_io' target='_blank'rel=\"noopener noreferrer\">En #BigData no solo son importantes los datos, sino c\u00f3mo sacarle partido  <\/a><\/span><a href='https:\/\/x.com\/intent\/tweet?url=https%3A%2F%2Fkeepler.io%2Fes%2F2018%2F11%2F21%2Farquitectura-big-data-lambda-en-aws-para-productivizar-datos%2F&#038;text=En%20%23BigData%20no%20solo%20son%20importantes%20los%20datos%2C%20sino%20c%C3%B3mo%20sacarle%20partido%20&#038;via=keepler_io&#038;related=keepler_io' target='_blank' class='bctt-ctt-btn'rel=\"noopener noreferrer\">Compartir en X<\/a><\/span>\n<p>De forma gen\u00e9rica el el proceso consiste en las siguientes <strong>fases<\/strong>:<\/p>\n<p><strong>Ingesta<\/strong><br \/>\nA menudo estos datos est\u00e1n dispersos en varios almacenamientos que soportan nuestros procesos y aplicaciones. Ergo, el primer paso consiste en construir un punto donde todos estos datos convivan y se convierta en nuestra fuente de verdad.<\/p>\n<p><strong>Transformaci\u00f3n<\/strong><br \/>\nMuy probablemente estos datos en bruto est\u00e9n llenos de ruido y\/o elementos que no nos aportan valor al caso de uso espec\u00edfico de la soluci\u00f3n. Refinando estos datos conseguiremos mejorar el rendimiento de los diferentes procesos que explotar\u00e1n los mismos.<\/p>\n<p><strong>An\u00e1lisis<\/strong><br \/>\nConsiste en la exploraci\u00f3n de los datos con el objetivo de sacar conclusiones apoy\u00e1ndose en los mismos. Dada la cantidad de datos que se est\u00e1n manejando se necesitan herramientas y componentes espec\u00edficos para llevar a cabo esta fase.<\/p>\n<p><strong>Visualizaci\u00f3n<\/strong><br \/>\nFinalmente, y una vez estos datos est\u00e1n refinados, se procede a la presentaci\u00f3n de los mismos poniendo especial esfuerzo en facilitar la interpretaci\u00f3n de los mismos.<\/p>\n<p>Ahora que sabemos por d\u00f3nde van los tiros, pasemos a analizar las <strong>diferentes fases sobre un ejemplo pr\u00e1ctico<\/strong>.<\/p>\n<p>Lo que tenemos aqu\u00ed no es m\u00e1s que una arquitectura t\u00edpica llamada <strong>Arquitectura Big Data Lambda<\/strong>. Cuando procesamos grandes cantidades de datos, a menudo tenemos que hacer un compromiso entre la velocidad en la que disponibilizamos los datos (tiempo real) y la precisi\u00f3n de los mismos (cargas programadas). Esta arquitectura contempla ambos casos de uso, siendo capaz de <strong>productivizar los datos tanto a tiempo real como las cargas programadas<\/strong>.<\/p>\n<h3>Ingesta<\/h3>\n<div id=\"attachment_27243\" style=\"width: 663px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27243\" class=\"wp-image-27243\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2020\/10\/arquitectura-bigdata-aws-ingesta-1-3.png?resize=653%2C122&#038;ssl=1\" alt=\"ingesta datos big data\" width=\"653\" height=\"122\" \/><p id=\"caption-attachment-27243\" class=\"wp-caption-text\">Arquitectura Big Data Lambda para productividad datos en tiempo real y programados.<\/p><\/div>\n<p>Hay diversas formas de realizar la ingesta a tiempo real, pero para esta situaci\u00f3n optamos por utilizar <strong>Kinesis Streams<\/strong> y <strong>Firehose<\/strong>, servicios recomendado por AWS para estos casos de uso. Kinesis Data Streams es un servicio que permite la recolecci\u00f3n de datos de forma continua y altamente escalable. En el caso de que queramos integrar los datos con los disponibilizados de forma programada, utilizaremos Kinesis Firehose, que nos permite empaquetar los datos para unirlos al datalake.<\/p>\n<div id=\"attachment_27246\" style=\"width: 660px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27246\" class=\"wp-image-27246\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2020\/10\/arquitectura-bigdata-aws-ingesta-2-3.png?resize=650%2C231&#038;ssl=1\" alt=\"ingesta de datos big data\" width=\"650\" height=\"231\" \/><p id=\"caption-attachment-27246\" class=\"wp-caption-text\">Kinesis Data Streams y Kinesis Firehose permite empaquetar los datos para unirlos en el datalake.<\/p><\/div>\n<p>En el caso de la ingesta programada, podemos utilizar servicios como <strong>AWS Glue<\/strong>, <strong>AWS Batch<\/strong> o <strong>AWS Data Migration Service<\/strong>; en el caso de que queramos replicar los datos desde sistemas como RDBMS, almacenes de datos o NoSQLs. Es interesante analizar las diferentes fuentes de datos para utilizar el mejor servicio en cada caso.<\/p>\n<h3>Transformaci\u00f3n<\/h3>\n<p>Cuando hablamos de la transformaci\u00f3n de datos a tiempo real en arquitecturas de AWS, <strong>Kinesis Firehose<\/strong> es el rey. Antes hemos visto como Firehose permite empaquetar los datos en la ingesta para unirlos a los ingestados por parte de los procesos programados; sin embargo, podemos hacer m\u00e1s que empaquetar con Kinesis, podemos realizar transformaciones a tiempo real para luego ser utilizados por herramientas de visualizaci\u00f3n y anal\u00edtica convencionales o servicios de anal\u00edtica y visualizaci\u00f3n a tiempo real como Kinesis Analytics.<\/p>\n<div id=\"attachment_27249\" style=\"width: 410px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27249\" class=\"wp-image-27249\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2020\/10\/arquitectura-bigdata-aws-tranformacion-datos-3.png?resize=400%2C164&#038;ssl=1\" alt=\"tranformaci\u00f3n de datos en Big Data\" width=\"400\" height=\"164\" \/><p id=\"caption-attachment-27249\" class=\"wp-caption-text\">Kinesis Firehose empaqueta datos en la ingesta.<\/p><\/div>\n<p>El utilizar <strong>S3<\/strong> como datalake nos permite reducir costes (no es necesario tener siempre todos los datos en almacenamientos como Redshift), al mismo tiempo que desacoplamos la arquitectura, pues no siempre nos interesa utilizar las mismas tecnolog\u00edas para todos los datos.<\/p>\n<p>Si nos decantamos por acumular los datos en el datalake (tanto en el caso de tiempo real como de cargas programadas) tenemos varias alternativas a la hora de \u201ccurar\u201d estos datos y prepararlos para su posterior productivizaci\u00f3n. Estas alternativas (AWS Batch, AWS Glue, AWS EMR) contemplan casos de uso y niveles de personalizaci\u00f3n y administraci\u00f3n diferentes, ofreci\u00e9ndonos un gran abanico de posibilidades para cubrir las necesidades de diferentes clientes. En algunos casos donde la transformaci\u00f3n no es demasiado exigente en t\u00e9rminos de CPU, memoria o tiempo es posible lleva a cabo esta fase con AWS Lambda, a este proceso se le llama micro-batching.<\/p>\n<p>El siguiente ejemplo contempla la aplicaci\u00f3n de transformaciones con <strong>AWS Glue<\/strong>, servicio que permite explotar las funcionalidades de Spark o Scala de una forma totalmente manejada, e incluso nos ofrece ya algunas transformaciones can\u00f3nicas en su cat\u00e1logo.<\/p>\n<div id=\"attachment_27251\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27251\" class=\"wp-image-27251\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2020\/10\/arquitectura-bigdata-aws-tranformacion-datos-awsglue-3.png?resize=600%2C190&#038;ssl=1\" alt=\"aws glue transformaci\u00f3n datos\" width=\"600\" height=\"190\" \/><p id=\"caption-attachment-27251\" class=\"wp-caption-text\">Aplicaci\u00f3n de transformaciones con AWS Glue y base de datos Redshift para anal\u00edtica.<\/p><\/div>\n<h3>Anal\u00edtica<\/h3>\n<p>Cuando hablamos de anal\u00edtica entran en juego varias herramientas y varios servicios de AWS. En el caso del ejemplo anterior, podemos observar una base de datos<strong> Redshift<\/strong>, la cual nos permite realizar an\u00e1lisis utilizando consultas PSQL para sacarle partido a la gran capacidad de c\u00f3mputo de esta tecnolog\u00eda. Redshift y <strong>Athena<\/strong> nos permiten realizar an\u00e1lisis sobre datos ya transformados, mientras que para los casos espec\u00edficos de tiempo real podemos utilizar <strong>AWS Kinesis<\/strong>, la cual nos permite realizar consultas a tiempo real sobre los datos recibidos.<\/p>\n<h3>Visualizaci\u00f3n<\/h3>\n<p>Al final el objetivo es ser capaz de interpretar estos datos de forma r\u00e1pida y sencilla de cara a ser capaces de sacar conclusiones sobre los mismos que nos ayuden a mejorar nuestro negocio. Para cubrir esta necesidad Amazon Web Services nos provee de un servicio llamado <strong>QuickSight<\/strong>, el cual se integra f\u00e1cilmente con los servicios de almacenamiento de AWS. A trav\u00e9s de este servicio podemos construir de forma r\u00e1pida, y pagando \u00fanicamente por las sesiones, paneles informacionales que permitan tomar la mejor decisi\u00f3n en cada situaci\u00f3n.<\/p>\n<h3>Resultado<\/h3>\n<div id=\"attachment_27255\" style=\"width: 810px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27255\" class=\"wp-image-27255\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2020\/10\/arquitectura-bigdata-aws-lambda-3.png?resize=800%2C407&#038;ssl=1\" alt=\"arquitectura big data lambda\" width=\"800\" height=\"407\" \/><p id=\"caption-attachment-27255\" class=\"wp-caption-text\">Visi\u00f3n de ejemplo de arquitectura Big Data Lambda.<\/p><\/div>\n<p>Todo esto da como resultado una arquitectura construida por bloques (intercambiables y reutilizables) que permite las recepci\u00f3n y tratamiento de datos, tanto a tiempo real, como de forma programada. Unificando la cap de procesamiento conseguimos el poder utilizar un \u00fanico punto de tratamiento para ambas casu\u00edsticas.<\/p>\n<p>Imagen: unsplash | nate grant<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace no mucho organizamos un meetup de introducci\u00f3n cloud con la idea de acercar este concepto tan difuso a la gente. En esta jornada se explicaron muchas dudas sobre el cloud y sobre los proveedores m\u00e1s importantes, pero hubo algo que llam\u00f3 m\u00e1s la atenci\u00f3n que el resto. El Big Data. Y, \u00bfqu\u00e9 es eso [&hellip;]<\/p>\n","protected":false},"author":134360206,"featured_media":826,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_crdt_document":"","content-type":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false},"categories":[224],"tags":[255,280],"class_list":["post-1946","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","tag-cloud-es","tag-tecnologias"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2018\/11\/keepler-arquitectura-bigdata-lambda-aws.jpg?fit=850%2C350&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p9CeZw-vo","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/1946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/users\/134360206"}],"replies":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/comments?post=1946"}],"version-history":[{"count":1,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/1946\/revisions"}],"predecessor-version":[{"id":2418,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/1946\/revisions\/2418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/media\/826"}],"wp:attachment":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/media?parent=1946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/categories?post=1946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/tags?post=1946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}