[{"data":1,"prerenderedAt":1114},["ShallowReactive",2],{"breadcrumb-blog-post":3,"privacy-policy-es":376},{"id":4,"title":5,"author":6,"body":7,"category":362,"date":363,"description":364,"extension":365,"featured":366,"geo":6,"image":211,"manual_override":366,"meta":367,"navigation":368,"path":369,"readTime":370,"schema":6,"section_hashes":6,"seo":371,"sitemap":372,"source_hash":6,"source_locale":6,"stem":373,"tier":374,"tier_1_approved":366,"tier_1_approved_at":6,"tier_1_approved_by":6,"tier_1_deadline":6,"tier_1_reviewer":6,"translated_at":6,"translated_from_hash":6,"translation_model":6,"translation_provider":6,"translation_status":6,"__hash__":375},"blog/blog/2022-03-01-kubernetes-workflows.md","Advantage of layline.io Workflows compared to traditional Microservices using the K8S/Docker model",null,{"type":8,"value":9,"toc":343},"minimark",[10,14,19,24,39,42,46,52,55,59,62,65,72,75,81,84,88,91,94,98,102,108,114,121,127,134,140,143,149,152,155,161,165,168,174,177,181,184,187,190,196,200,203,206,212,215,219,286,289,292,307,311],[11,12,13],"p",{},"The traditional Microservices model on Kubernetes/Docker has some disadvantages which result in overly complex management and resource consumption. In this article we explain how layline.io embraces container and container orchestration technology, while helping to resolve the aforementioned challenges with a better approach.",[15,16,18],"h2",{"id":17},"quick-explainer-kubernetes-k8s-docker","Quick explainer: Kubernetes (K8S) & Docker",[20,21,23],"h3",{"id":22},"containers","Containers",[11,25,26,27,30,31,38],{},"Programs running on Kubernetes are packaged into ",[28,29,23],"strong",{},". The advantage being that software and dependencies are packed together. One less thing to worry about and warranting the independence of the Container. There are tons of ready-made Containers downloadable from such portals as ",[32,33,37],"a",{"href":34,"rel":35},"https://hub.docker.com/",[36],"nofollow","DockerHub",", packaging up all sorts software.",[11,40,41],{},"You can in theory pack many programs into one Container, but the recommendation and industry standard is one Container = one Process. This makes everything more granular, and you can replace individual containers (and therefore processes) more easily that way.",[20,43,45],{"id":44},"pods","Pods",[11,47,48,49,51],{},"Containers don't run on their own, but are packaged in yet another \"container\". This time they're called ",[28,50,45],{},". Pods - among other things - manage virtual resources such as network, memory, CPU etc. for the Containers running within them.",[11,53,54],{},"It's important to understand, that you don't assign CPU power to a Container, but to a Pod. Therefore, if you run more than one Container in the same Pod, they all have to share the resources available to the Pod. For the same reasons you should not put more than one program in a Container, you should not put more than one Container in a Pod, unless multiple Containers are required to serve the purpose of the Microservice.",[15,56,58],{"id":57},"resource-issues-when-scaling-in-kubernetes","Resource Issues when Scaling in Kubernetes",[11,60,61],{},"In Kubernetes the currency of scalability is Pods. To have more processing power, you fire up more Pods, also known as replication.",[11,63,64],{},"If you look at this design, a Pod itself is actually pretty static. If you want to adhere to utmost flexibility and be able to replace one program with another, then your Pod contains one Container, which in turn contains one program which will run as one process.",[11,66,67],{},[68,69],"img",{"alt":70,"src":71},"K8S/Docker packaging","/images/blog/2022-03-01/8dfbfcc8.png",[11,73,74],{},"Considering that the actual resources required for the container are configured on Pod-level, the image looks more like this:",[11,76,77],{},[68,78],{"alt":79,"src":80},"K8S/Docker packaging w/ Resources","/images/blog/2022-03-01/161b5fd4.png",[11,82,83],{},"Check out the space marked as \"slack\". When you size the resources for a container, you have to account for some slack in CPU and memory. But because it's almost impossible to exactly determine the necessary resources for one program you end up having some reserve in every pod. If you run 100 of these, the slack adds up 100-fold. There is no resource-sharing between Pods. On top of this there is some overhead for each Pod and Node which gets added to the cluster. So, while overall the concept of K8S is great, it also adds considerable resource overhead overall.",[15,85,87],{"id":86},"distribution-of-containers-within-a-kubernetes-cluster","Distribution of Containers within a Kubernetes Cluster",[11,89,90],{},"Pods are also the smallest denominator to distribute functionality within a Kubernetes Cluster. Let's say you have Microservices A, B and C and you want to distribute them unevenly within a Cluster, you either have individual Pods which each contain either A, B or C, or you have to have a number of Pods to make up all permutations of Pods containing containers A, B and C (e.g. a Pod with A and B, a Pod with A and C, etc.). That's a lot of Pods to manage and can quickly become overwhelming and inefficient.",[11,92,93],{},"Distribution of Pods is then a major configuration challenge within Kubernetes and/or your CI/CD tool of choice. Add to this the management of automated scaling and load balancing between Nodes and you end up having a major setup and monitoring headache.",[15,95,97],{"id":96},"how-laylineio-deals-with-scalability-resources-and-distribution-in-a-kubernetes-cluster","How layline.io deals with scalability, resources, and distribution in a Kubernetes Cluster",[20,99,101],{"id":100},"reactive-engine","Reactive Engine",[11,103,104,105,107],{},"layline.io introduces the ",[28,106,101],{},". The Engine serves as an execution context for Workflows which can be configured to run within a Reactive Engine. Workflows are comparable to Microservices in that they fulfil specific data processing tasks ranging from ingestion, analysis and enrichment as well as responding to query requests etc. Workflows are configured using the web-based Configuration Center:",[11,109,110],{},[68,111],{"alt":112,"src":113},"Configuration Center Workflow setup","/images/blog/2022-03-01/editor_script_01.webp",[11,115,116,117,120],{},"Multiple Reactive Engines form a ",[28,118,119],{},"Reactive Cluster"," of their own. When setting up layline.io in a Cluster environment like Kubernetes, you actually set up a number of Nodes which then run Reactive Engines encapsulated in containers:",[11,122,123],{},[68,124],{"alt":125,"src":126},"Reactive Engines within a Reactive Cluster within a Kubernetes Cluster","/images/blog/2022-03-01/19cc7f90.png",[11,128,129,130,133],{},"All Reactive Engines are created equal. They serve as execution contexts for Workflows. Simplified, you may view Workflows as equivalent to Microservices. The difference being that Workflows are ",[28,131,132],{},"configured"," and therefore a Configuration, and not programmed object code like with typical Microservices.",[11,135,136],{},[68,137],{"alt":138,"src":139},"Zooming in to a Reactive Engine","/images/blog/2022-03-01/f9c28f84.png",[11,141,142],{},"Each Reactive Engine can run different Workflows (A, B and C above). Each Workflow can be dynamically instantiated multiple times. The number of instances is limited by how many resources a single Workflow instance consumes and how much resource is available and assigned to the execution context in which the Reactive Engine itself runs. In a Kubernetes Cluster this would be the image of a respective Pod:",[11,144,145],{},[68,146],{"alt":147,"src":148},"Pod running a Container with a Reactive Engine","/images/blog/2022-03-01/ae038590.png",[11,150,151],{},"Any Reactive Engine can run any Workflow. Workflows are deployed either directly via the Configuration Center or via your preferred CI/CD tool (e.g. Bamboo et al).",[11,153,154],{},"This could result in a setup like this:",[11,156,157],{},[68,158],{"alt":159,"src":160},"Workflow distribution within a Reactive Cluster","/images/blog/2022-03-01/4f40189e.png",[20,162,164],{"id":163},"elastic-scaling","Elastic scaling",[11,166,167],{},"The number of instances of each Workflow can be scaled up and down dynamically, either by manual intervention from the Config Center or command line, or automatically based on data pressure.",[11,169,170],{},[68,171],{"alt":172,"src":173},"Reactive Cluster scaling example","/images/blog/2022-03-01/368f3920.png",[11,175,176],{},"While the standard Kubernetes path to scale by firing up additional Pods remains valid, you can simply fire up additional Workflow instances within a Pod. Note that no additional Pods would be activated in this example, given that each Pod contains enough breathing room to scale. Because everything is scaled within a Reactive Engine, this process is extremely fast and efficient, requiring only few additional resources per instance and no intervention on Kubernetes level.",[20,178,180],{"id":179},"advantage-resources","Advantage Resources",[11,182,183],{},"It makes sense to think, that one will require respective CPU power and RAM regardless of whether you distribute 30 Pods with the same Microservice on three Nodes, or three Reactive Engines with 10 instances of the same Workflow each on three Nodes. But that is not the case.",[11,185,186],{},"Depending on the characteristic of the Microservice which is replaced by a Workflow, you typically save between 25-50% of resources compared to the traditional way of deploying Microservices. It's also true, however, that a Reactive Engine running one Workflow instance only, requires a more resources than a custom Microservice which is only run one time.",[11,188,189],{},"It's a tradeoff between flexibility and resource requirements, which flips quickly to the favor of the layline.io model with the size of your processing scenario.",[11,191,192],{},[68,193],{"alt":194,"src":195},"Resource requirements traditional Microservice vs. layline.io","/images/blog/2022-03-01/0c45546c.png",[20,197,199],{"id":198},"advantage-setup","Advantage Setup",[11,201,202],{},"Setting up layline.io in a Kubernetes/Docker cluster means to deploy the same container on every Node. Each container runs a Reactive Engine and there are no other container types with different content. Just one.",[11,204,205],{},"For a Reactive Engine to know what Workflows to execute, a configuration is injected at runtime. Because all Reactive Engines form a Reactive Cluster of their own, it is enough to inject the Configuration into one Reactive Engine. It is then automatically distributed to all other Engines in the Cluster. Again, this can all be triggered manually or automatically through CI/CD tools.",[11,207,208],{},[68,209],{"alt":210,"src":211},"Deploying workflow configurations into a Reactive Cluster","/images/blog/2022-03-01/e6bd8ff7.png",[11,213,214],{},"So unlike the pure Kubernetes/Docker concept, there is no hassle with different Pods containing different containers which need to be re-built on every change and then managed from a deployment point-of-view. Contrary to Kubernetes you don't have to think about where to run which Pod/Container upfront, or how to shuffle Pods around in case you want to rearrange them. In layline.io you can simply activate a preloaded Workflow in one or more Reactive Engines, or deploy a new Workflow Configuration to the Cluster in order to bring this Workflow online.",[15,216,218],{"id":217},"summary","Summary",[220,221,222,238],"table",{},[223,224,225],"thead",{},[226,227,228,232,235],"tr",{},[229,230,231],"th",{},"Aspect",[229,233,234],{},"Kubernetes/Docker",[229,236,237],{},"layline.io",[239,240,241,253,264,275],"tbody",{},[226,242,243,247,250],{},[244,245,246],"td",{},"Scaling",[244,248,249],{},"Scale via Pods",[244,251,252],{},"Scale within Pod via Workflow instances",[226,254,255,258,261],{},[244,256,257],{},"Scaling reaction time",[244,259,260],{},"medium",[244,262,263],{},"fast",[226,265,266,269,272],{},[244,267,268],{},"Resource consumption",[244,270,271],{},"Better with small scenarios",[244,273,274],{},"Better with medium to large scenarios",[226,276,277,280,283],{},[244,278,279],{},"Setup",[244,281,282],{},"Many different Pods and Containers",[244,284,285],{},"Configurations injected into Reactive Engine",[11,287,288],{},"Kubernetes is great. Period. But there are downsides in complexity and operation.",[11,290,291],{},"layline.io provides a much better and leaner way to not only create and manage Services, but also to manage and distribute them in a Cluster environment. For medium to large scenarios, there is also a significant upside in regard to resource management and consumption.",[11,293,294,295,300,301,306],{},"You can download and use layline.io for free ",[32,296,299],{"href":297,"rel":298},"https://layline.io/download",[36],"here",". If you have any questions about layline.io please don't hesitate to ",[32,302,305],{"href":303,"rel":304},"https://layline.io/resources/contact",[36],"contact us","!",[15,308,310],{"id":309},"resources","Resources",[312,313,314,321,328,336],"ul",{},[315,316,317],"li",{},[32,318,320],{"href":297,"rel":319},[36],"Download layline.io",[315,322,323],{},[32,324,327],{"href":325,"rel":326},"https://layline.io/blog/2022-02-14",[36],"Fixing what's wrong with Microservices",[315,329,330,331,335],{},"Read more about layline.io ",[32,332,299],{"href":333,"rel":334},"https://layline.io/",[36],".",[315,337,338,339,335],{},"Contact us at ",[32,340,342],{"href":341},"mailto:hello@layline.io","hello@layline.io",{"title":344,"searchDepth":345,"depth":345,"links":346},"",2,[347,352,353,354,360,361],{"id":17,"depth":345,"text":18,"children":348},[349,351],{"id":22,"depth":350,"text":23},3,{"id":44,"depth":350,"text":45},{"id":57,"depth":345,"text":58},{"id":86,"depth":345,"text":87},{"id":96,"depth":345,"text":97,"children":355},[356,357,358,359],{"id":100,"depth":350,"text":101},{"id":163,"depth":350,"text":164},{"id":179,"depth":350,"text":180},{"id":198,"depth":350,"text":199},{"id":217,"depth":345,"text":218},{"id":309,"depth":345,"text":310},"Article","2022-03-01","The traditional Microservices model on Kubernetes/Docker has some disadvantages which result in overly complex management and resource consumption. We explain the background and how layline.io can help.","md",false,{},true,"/blog/2022-03-01-kubernetes-workflows","7 min",{"title":5,"description":364},{"loc":369},"blog/2022-03-01-kubernetes-workflows","2","_p7Zhg6sd5sxuu9rv3s1InBcEhBSmmfriDu1Bh3ngi8",{"doc":377,"isFallback":366,"effectiveLocale":1113},{"id":378,"title":379,"body":380,"description":898,"extension":365,"manual_override":366,"meta":899,"navigation":368,"page":902,"path":1083,"section_hashes":1084,"seo":1101,"sitemap":1102,"source_hash":1104,"source_locale":1105,"stem":1106,"tier":1107,"translated_at":1108,"translated_from_hash":1104,"translation_model":1109,"translation_provider":1110,"translation_status":1111,"updatedAt":1103,"__hash__":1112},"legal/legal/es/privacy-policy.md","Política de Privacidad",{"type":8,"value":381,"toc":868},[382,385,389,392,398,417,421,424,428,446,450,453,457,460,468,472,475,483,487,490,498,502,505,513,517,520,537,540,544,547,573,577,580,618,622,625,675,680,683,687,690,694,697,701,704,708,711,715,718,731,735,738,750,754,757,768,772,775,787,791,794,798,801,804,807,811,814,818,821,824,830,838,842,845,849,852,856],[11,383,384],{},"Esta política de privacidad explica cómo layline.io GmbH (\"layline.io\", \"nosotros\", \"nos\" o \"nuestro\") recopila, utiliza y protege su información personal cuando visita nuestro sitio web o utiliza nuestros servicios, de acuerdo con el Reglamento General de Protección de Datos (GDPR).",[15,386,388],{"id":387},"_1-responsable-del-tratamiento-de-datos","1. Responsable del Tratamiento de Datos",[11,390,391],{},"El responsable del tratamiento de sus datos personales en este sitio web es:",[11,393,394,397],{},[28,395,396],{},"layline.io GmbH","\nFlughafenstr. 52a\n22335 Hamburgo, Alemania",[312,399,400,403,406,409,412],{},[315,401,402],{},"Registrado en: Amtsgericht Hamburg, HRB 159256",[315,404,405],{},"Directores Gerentes: Andrew Tan / Stefan Deigmüller",[315,407,408],{},"ID de IVA: DE327083403",[315,410,411],{},"Teléfono: +49 (40) 5329-9328",[315,413,414,415],{},"Correo electrónico: ",[32,416,342],{"href":341},[15,418,420],{"id":419},"_2-delegado-de-protección-de-datos","2. Delegado de Protección de Datos",[11,422,423],{},"Si tiene alguna pregunta sobre cómo manejamos sus datos personales, puede contactar a nuestro Delegado de Protección de Datos:",[11,425,426,397],{},[28,427,396],{},[312,429,430,433,439],{},[315,431,432],{},"Representado por: Andrew Tan",[315,434,414,435],{},[32,436,438],{"href":437},"mailto:ds@layline.io","ds@layline.io",[315,440,441,442],{},"Sitio web: ",[32,443,444],{"href":444,"rel":445},"https://www.layline.io",[36],[15,447,449],{"id":448},"_3-qué-datos-recopilamos","3. Qué Datos Recopilamos",[11,451,452],{},"Recopilamos y procesamos los siguientes tipos de datos personales:",[20,454,456],{"id":455},"_31-datos-de-registro-del-servidor","3.1 Datos de Registro del Servidor",[11,458,459],{},"Cuando visita nuestro sitio web, nuestro proveedor de alojamiento recopila automáticamente información técnica, incluyendo su dirección IP, tipo y versión de navegador, sistema operativo, URL de referencia, páginas visitadas, y la fecha y hora de su visita. Su dirección IP se trunca (anonimiza) inmediatamente tras su recopilación y nunca se almacena en su forma completa.",[312,461,462,465],{},[315,463,464],{},"Base legal: Interés legítimo (Art. 6(1)(f) GDPR) en garantizar la seguridad y funcionalidad del sitio web.",[315,466,467],{},"Período de almacenamiento: 30 días, tras los cuales los registros se eliminan automáticamente.",[20,469,471],{"id":470},"_32-datos-del-formulario-de-contacto","3.2 Datos del Formulario de Contacto",[11,473,474],{},"Cuando nos contacta a través de los formularios de nuestro sitio web, recopilamos la información que proporciona, como su nombre, dirección de correo electrónico, nombre de la empresa y contenido del mensaje. Utilizamos estos datos únicamente para responder a su consulta. Proporcionar estos datos es voluntario; sin embargo, sin una dirección de correo electrónico no podemos responder a su mensaje.",[312,476,477,480],{},[315,478,479],{},"Base legal: Ejecución de un contrato o medidas precontractuales (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR).",[315,481,482],{},"Período de almacenamiento: Duración de la relación comercial, luego se eliminan después de 3 años, salvo que apliquen requisitos legales de retención.",[20,484,486],{"id":485},"_33-datos-de-cuenta-de-usuario-y-base-de-datos","3.3 Datos de Cuenta de Usuario y Base de Datos",[11,488,489],{},"Cuando crea una cuenta de usuario o interactúa con funciones que requieren autenticación, recopilamos y almacenamos los datos de su cuenta (por ejemplo, dirección de correo electrónico, nombre, empresa) en nuestra base de datos alojada por Supabase, Inc. Estos datos se utilizan para proporcionarle acceso a nuestros servicios y gestionar su cuenta.",[312,491,492,495],{},[315,493,494],{},"Base legal: Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR) en proporcionar autenticación y gestión de cuentas seguras.",[315,496,497],{},"Período de almacenamiento: Durante la existencia de su cuenta; se eliminan dentro de los 30 días posteriores al cierre de la cuenta, salvo que apliquen requisitos legales de retención.",[20,499,501],{"id":500},"_34-datos-de-análisis","3.4 Datos de Análisis",[11,503,504],{},"Con su consentimiento previo y explícito, recopilamos datos de uso anonimizados a través de Google Analytics para comprender cómo los visitantes utilizan nuestro sitio web y mejorar nuestros servicios. Hemos habilitado la anonimización de IP. Puede retirar su consentimiento en cualquier momento a través de las preferencias de cookies.",[312,506,507,510],{},[315,508,509],{},"Base legal: Consentimiento (Art. 6(1)(a) GDPR).",[315,511,512],{},"Período de almacenamiento: 14 meses, tras los cuales los datos se eliminan automáticamente por Google.",[15,514,516],{"id":515},"_4-cómo-usamos-sus-datos","4. Cómo Usamos Sus Datos",[11,518,519],{},"Utilizamos sus datos personales para los siguientes fines:",[312,521,522,525,528,531,534],{},[315,523,524],{},"Proveer y mantener nuestro sitio web",[315,526,527],{},"Responder a sus consultas y solicitudes",[315,529,530],{},"Analizar el uso del sitio web y mejorar nuestros servicios (solo con su consentimiento previo)",[315,532,533],{},"Garantizar la seguridad de nuestro sitio web",[315,535,536],{},"Cumplir con obligaciones legales",[11,538,539],{},"No utilizamos sus datos personales para la toma de decisiones automatizada ni para la elaboración de perfiles en el sentido del Art. 22 GDPR.",[15,541,543],{"id":542},"_41-bases-legales-para-el-tratamiento","4.1 Bases Legales para el Tratamiento",[11,545,546],{},"Tratamos datos personales bajo las siguientes bases legales, dependiendo del propósito:",[312,548,549,555,561,567],{},[315,550,551,554],{},[28,552,553],{},"Art. 6(1)(a) GDPR:"," Consentimiento (por ejemplo, cookies de análisis)",[315,556,557,560],{},[28,558,559],{},"Art. 6(1)(b) GDPR:"," Ejecución de un contrato o medidas precontractuales (por ejemplo, responder a consultas, cuentas de usuario)",[315,562,563,566],{},[28,564,565],{},"Art. 6(1)(c) GDPR:"," Obligación legal",[315,568,569,572],{},[28,570,571],{},"Art. 6(1)(f) GDPR:"," Intereses legítimos (por ejemplo, seguridad del sitio web, prevención de fraudes, mejora de servicios)",[15,574,576],{"id":575},"_5-retención-de-datos","5. Retención de Datos",[11,578,579],{},"Retenemos sus datos personales solo durante el tiempo necesario para cumplir con los propósitos para los que fueron recopilados:",[312,581,582,588,594,600,606,612],{},[315,583,584,587],{},[28,585,586],{},"Registros del servidor:"," Eliminados después de 30 días",[315,589,590,593],{},[28,591,592],{},"Datos del formulario de contacto:"," Retenidos durante la relación comercial, luego eliminados después de 3 años, salvo que apliquen requisitos legales de retención",[315,595,596,599],{},[28,597,598],{},"Datos de la cuenta de usuario:"," Eliminados dentro de los 30 días posteriores al cierre de la cuenta, salvo que apliquen requisitos legales de retención",[315,601,602,605],{},[28,603,604],{},"Datos de análisis:"," Eliminados automáticamente después de 14 meses",[315,607,608,611],{},[28,609,610],{},"Preferencias de cookies:"," Almacenadas localmente en su navegador hasta que borre los datos del navegador o retire su consentimiento",[315,613,614,617],{},[28,615,616],{},"Correos electrónicos transaccionales (por ejemplo, confirmaciones):"," Retenidos según sea necesario para la prestación del servicio y los períodos de retención legales",[15,619,621],{"id":620},"_6-sus-derechos-bajo-el-gdpr","6. Sus Derechos Bajo el GDPR",[11,623,624],{},"Bajo el Reglamento General de Protección de Datos (GDPR), usted tiene los siguientes derechos respecto a sus datos personales:",[312,626,627,633,639,645,651,657,663,669],{},[315,628,629,632],{},[28,630,631],{},"Derecho de acceso:"," Obtener confirmación de si procesamos sus datos personales y acceder a dichos datos. (Art. 15 GDPR)",[315,634,635,638],{},[28,636,637],{},"Derecho de rectificación:"," Solicitar la corrección de datos personales inexactos. (Art. 16 GDPR)",[315,640,641,644],{},[28,642,643],{},"Derecho de supresión:"," Solicitar la eliminación de sus datos personales bajo ciertas condiciones. (Art. 17 GDPR)",[315,646,647,650],{},[28,648,649],{},"Derecho de restricción:"," Solicitar la limitación del tratamiento de sus datos personales. (Art. 18 GDPR)",[315,652,653,656],{},[28,654,655],{},"Derecho a la portabilidad de datos:"," Recibir sus datos personales en un formato estructurado y legible por máquina. (Art. 20 GDPR)",[315,658,659,662],{},[28,660,661],{},"Derecho de oposición:"," Oponerse al tratamiento basado en intereses legítimos. (Art. 21(1) GDPR)",[315,664,665,668],{},[28,666,667],{},"Derecho de oposición al marketing directo:"," Oponerse al tratamiento de sus datos con fines de marketing directo en cualquier momento. (Art. 21(2) GDPR)",[315,670,671,674],{},[28,672,673],{},"Derecho a presentar una reclamación:"," Presentar una reclamación ante una autoridad de supervisión. (Art. 77 GDPR)",[11,676,677,678,335],{},"Para ejercer cualquiera de estos derechos, por favor contacte a nuestro Delegado de Protección de Datos en ",[32,679,438],{"href":437},[11,681,682],{},"Si el tratamiento se basa en su consentimiento, puede retirarlo en cualquier momento con efecto futuro. Esto no afecta la legalidad del tratamiento antes de la retirada. Puede retirar su consentimiento para las cookies de análisis en cualquier momento utilizando el gestor de preferencias de cookies en esta página.",[15,684,686],{"id":685},"_7-cookies","7. Cookies",[11,688,689],{},"Nuestro sitio web utiliza cookies para mejorar su experiencia de navegación. Las cookies son pequeños archivos de texto almacenados en su dispositivo que nos ayudan a entender cómo utiliza nuestro sitio web.",[20,691,693],{"id":692},"cookies-esenciales","Cookies Esenciales",[11,695,696],{},"Estas cookies son necesarias para que el sitio web funcione correctamente. Habilitan funcionalidades básicas como la seguridad, la gestión de la red y el recuerdo de sus preferencias de cookies. No puede optar por no recibir estas cookies. Estas cookies se almacenan hasta por 12 meses o hasta que borre los datos de su navegador.",[20,698,700],{"id":699},"cookies-de-análisis","Cookies de Análisis",[11,702,703],{},"Estas cookies nos ayudan a entender cómo los visitantes interactúan con nuestro sitio web recopilando y reportando información de manera anónima. Solo configuramos estas cookies con su consentimiento explícito. Puede retirar su consentimiento en cualquier momento. Estas cookies se almacenan hasta por 14 meses.",[15,705,707],{"id":706},"_8-servicios-de-terceros","8. Servicios de Terceros",[11,709,710],{},"Utilizamos los siguientes servicios de terceros que pueden procesar sus datos personales (como encargados del tratamiento, cuando corresponda):",[20,712,714],{"id":713},"cloudera-alojamiento","Cloudera (Alojamiento)",[11,716,717],{},"Nuestro sitio web está alojado en la infraestructura de Cloudera. Los datos de registro del servidor, incluida su dirección IP truncada, se procesan para entregar el contenido de nuestro sitio web. Los datos se almacenan exclusivamente dentro del Espacio Económico Europeo (EEE).",[312,719,720,723],{},[315,721,722],{},"Base legal: Interés legítimo (Art. 6(1)(f) GDPR) en proporcionar un sitio web rápido y confiable.",[315,724,725,726],{},"Política: ",[32,727,730],{"href":728,"rel":729},"https://www.cloudera.com/legal/policies.html",[36],"Política de Privacidad de Cloudera",[20,732,734],{"id":733},"resend-entrega-de-correos-electrónicos","Resend (Entrega de Correos Electrónicos)",[11,736,737],{},"Utilizamos Resend, Inc. para enviar correos electrónicos transaccionales, como confirmaciones de formularios de contacto. Cuando envía un formulario de contacto, su dirección de correo electrónico y el contenido del mensaje pueden ser procesados por Resend.",[312,739,740,743],{},[315,741,742],{},"Base legal: Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR).",[315,744,725,745],{},[32,746,749],{"href":747,"rel":748},"https://resend.com/legal/privacy-policy",[36],"Política de Privacidad de Resend",[20,751,753],{"id":752},"google-analytics","Google Analytics",[11,755,756],{},"Con su consentimiento previo y explícito, utilizamos Google Analytics, un servicio de análisis web proporcionado por Google Ireland Limited, Gordon House, Barrow Street, Dublín 4, Irlanda. Google Analytics utiliza cookies para ayudarnos a analizar cómo los visitantes usan nuestro sitio web. Hemos habilitado la anonimización de IP. Los datos pueden ser transferidos a Google LLC en los EE.UU. bajo Cláusulas Contractuales Estándar.",[312,758,759,761],{},[315,760,509],{},[315,762,725,763],{},[32,764,767],{"href":765,"rel":766},"https://policies.google.com/privacy",[36],"Política de Privacidad de Google",[20,769,771],{"id":770},"supabase-base-de-datos-y-autenticación","Supabase (Base de Datos y Autenticación)",[11,773,774],{},"Utilizamos Supabase, Inc. como nuestro proveedor de base de datos y autenticación. Los datos de su cuenta (por ejemplo, dirección de correo electrónico, nombre, empresa) y cualquier dato que envíe a través de nuestros servicios se almacenan en la infraestructura de Supabase. Supabase actúa como encargado del tratamiento bajo el Art. 28 GDPR. Los datos se almacenan dentro de la Unión Europea (UE).",[312,776,777,780],{},[315,778,779],{},"Base legal: Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR) en proporcionar almacenamiento seguro de datos y autenticación.",[315,781,725,782],{},[32,783,786],{"href":784,"rel":785},"https://supabase.com/privacy",[36],"Política de Privacidad de Supabase",[15,788,790],{"id":789},"_81-destinatarios-y-encargados-del-tratamiento","8.1 Destinatarios y Encargados del Tratamiento",[11,792,793],{},"Podemos compartir datos personales con proveedores de servicios (encargados del tratamiento) que apoyan las operaciones de nuestro sitio web (alojamiento, entrega de correos electrónicos, base de datos, autenticación, análisis). Tenemos acuerdos de tratamiento de datos cuando lo requiere el Art. 28 GDPR.",[15,795,797],{"id":796},"_9-transferencias-internacionales-de-datos","9. Transferencias Internacionales de Datos",[11,799,800],{},"Algunos de nuestros proveedores de servicios externos están ubicados fuera del Espacio Económico Europeo (EEE), particularmente en los Estados Unidos. Nos aseguramos de que existan las salvaguardas adecuadas para cualquier transferencia de datos personales fuera del EEE, incluidas las Cláusulas Contractuales Estándar (SCCs) aprobadas por la Comisión Europea y decisiones de adecuación cuando corresponda.",[11,802,803],{},"Específicamente, las transferencias de datos a los EE.UU. se basan en el Marco de Privacidad de Datos UE-EE.UU. (cuando esté certificado) o en Cláusulas Contractuales Estándar con salvaguardas técnicas adicionales (por ejemplo, anonimización de IP para análisis).",[11,805,806],{},"Nuestro proveedor de base de datos y autenticación, Supabase, Inc., tiene su sede en los Estados Unidos. Hemos firmado un Anexo de Tratamiento de Datos (DPA) con Supabase que incorpora Cláusulas Contractuales Estándar (SCCs) aprobadas por la Comisión Europea. Los datos de su cuenta se almacenan en la infraestructura de Supabase ubicada dentro de la Unión Europea. Cualquier tratamiento por parte del personal de Supabase o subencargados fuera del EEE está protegido por estas SCCs y salvaguardas técnicas y organizativas adicionales.",[15,808,810],{"id":809},"_10-seguridad-de-los-datos","10. Seguridad de los Datos",[11,812,813],{},"Implementamos medidas técnicas y organizativas adecuadas para proteger sus datos personales contra el acceso no autorizado, alteración, divulgación o destrucción. Nuestro sitio web utiliza cifrado SSL/TLS para asegurar la transmisión de datos entre su navegador y nuestros servidores.",[15,815,817],{"id":816},"_11-derecho-a-presentar-una-reclamación","11. Derecho a Presentar una Reclamación",[11,819,820],{},"Si considera que nuestro tratamiento de sus datos personales infringe las leyes de protección de datos, tiene derecho a presentar una reclamación ante una autoridad de supervisión, en particular en el estado miembro de la UE de su residencia habitual, lugar de trabajo o lugar de la supuesta infracción (Art. 77 GDPR).",[11,822,823],{},"Nuestra autoridad de supervisión principal es:",[11,825,826,829],{},[28,827,828],{},"Der Hamburgische Beauftragte für Datenschutz und Informationsfreiheit","\nLudwig-Erhard-Str. 22, 7th Floor\n20459 Hamburgo, Alemania",[312,831,832],{},[315,833,441,834],{},[32,835,836],{"href":836,"rel":837},"https://datenschutz-hamburg.de",[36],[15,839,841],{"id":840},"_12-cambios-a-esta-política","12. Cambios a Esta Política",[11,843,844],{},"Podemos actualizar esta Política de Privacidad de vez en cuando para reflejar cambios en nuestras prácticas o por otras razones operativas, legales o reglamentarias. Le notificaremos sobre cualquier cambio material publicando la nueva Política de Privacidad en esta página y actualizando la fecha de \"Última actualización\" en la parte superior.",[15,846,848],{"id":847},"_13-contáctenos","13. Contáctenos",[11,850,851],{},"Si tiene alguna pregunta sobre esta Política de Privacidad o nuestras prácticas de datos, por favor contáctenos:",[11,853,854,397],{},[28,855,396],{},[312,857,858,863],{},[315,859,860,861],{},"Consultas generales: ",[32,862,342],{"href":341},[315,864,865,866],{},"Protección de datos: ",[32,867,438],{"href":437},{"title":344,"searchDepth":345,"depth":345,"links":869},[870,871,872,878,879,880,881,882,886,892,893,894,895,896,897],{"id":387,"depth":345,"text":388},{"id":419,"depth":345,"text":420},{"id":448,"depth":345,"text":449,"children":873},[874,875,876,877],{"id":455,"depth":350,"text":456},{"id":470,"depth":350,"text":471},{"id":485,"depth":350,"text":486},{"id":500,"depth":350,"text":501},{"id":515,"depth":345,"text":516},{"id":542,"depth":345,"text":543},{"id":575,"depth":345,"text":576},{"id":620,"depth":345,"text":621},{"id":685,"depth":345,"text":686,"children":883},[884,885],{"id":692,"depth":350,"text":693},{"id":699,"depth":350,"text":700},{"id":706,"depth":345,"text":707,"children":887},[888,889,890,891],{"id":713,"depth":350,"text":714},{"id":733,"depth":350,"text":734},{"id":752,"depth":350,"text":753},{"id":770,"depth":350,"text":771},{"id":789,"depth":345,"text":790},{"id":796,"depth":345,"text":797},{"id":809,"depth":345,"text":810},{"id":816,"depth":345,"text":817},{"id":840,"depth":345,"text":841},{"id":847,"depth":345,"text":848},"Política de Privacidad para layline.io - Aprende cómo recopilamos, usamos y protegemos tus datos personales de acuerdo con el RGPD.",{"tier_1_approved":368,"tier_1_approved_at":900,"tier_1_approved_by":901},"2026-07-02T08:00:39Z","andrew@layline.io",{"badge":903,"lastUpdatedLabel":904,"updatedAtDisplay":905,"fallback":906,"cookiePreferences":907,"intro":384,"sections":911},"Legal","Última actualización","23 de abril de 2026","Esta página aún no está traducida para la configuración regional actual. Estás viendo la versión original en inglés.",{"title":908,"description":909,"button":910},"Preferencias de cookies","Gestiona qué cookies nos permites usar en este sitio web","Gestionar cookies",{"dataController":912,"dataProtectionOfficer":932,"dataCollected":943,"useData":971,"legalBases":973,"retention":987,"rights":1006,"cookies":1033,"thirdParty":1037,"recipients":1062,"transfers":1063,"security":1065,"complaint":1066,"changes":1073,"contact":1074},{"title":388,"intro":391,"card":913},{"name":396,"street":914,"city":915,"rows":916},"Flughafenstr. 52a","22335 Hamburgo, Alemania",[917,920,923,926,929],{"label":918,"value":919},"Registrado en","Amtsgericht Hamburg, HRB 159256",{"label":921,"value":922},"Directores Gerentes","Andrew Tan / Stefan Deigmüller",{"label":924,"value":925},"ID de IVA","DE327083403",{"label":927,"value":928},"Teléfono","+49 (40) 5329-9328",{"label":930,"link":931},"Correo electrónico",{"label":342,"href":341},{"title":420,"intro":423,"card":933},{"name":396,"street":914,"city":915,"rows":934},[935,938,940],{"label":936,"value":937},"Representado por","Andrew Tan",{"label":930,"link":939},{"label":438,"href":437},{"label":941,"link":942},"Sitio web",{"label":444,"href":444},{"title":449,"intro":452,"cards":944},[945,953,959,965],{"title":456,"text":459,"details":946},[947,950],{"label":948,"value":949},"Base legal","Interés legítimo (Art. 6(1)(f) GDPR) en garantizar la seguridad y funcionalidad del sitio web.",{"label":951,"value":952},"Período de almacenamiento","30 días, tras los cuales los registros se eliminan automáticamente.",{"title":471,"text":474,"details":954},[955,957],{"label":948,"value":956},"Ejecución de un contrato o medidas precontractuales (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR).",{"label":951,"value":958},"Duración de la relación comercial, luego se eliminan después de 3 años, salvo que apliquen requisitos legales de retención.",{"title":486,"text":489,"details":960},[961,963],{"label":948,"value":962},"Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR) en proporcionar autenticación y gestión de cuentas seguras.",{"label":951,"value":964},"Durante la existencia de su cuenta; se eliminan dentro de los 30 días posteriores al cierre de la cuenta, salvo que apliquen requisitos legales de retención.",{"title":501,"text":504,"details":966},[967,969],{"label":948,"value":968},"Consentimiento (Art. 6(1)(a) GDPR).",{"label":951,"value":970},"14 meses, tras los cuales los datos se eliminan automáticamente por Google.",{"title":516,"intro":519,"items":972,"outro":539},[524,527,530,533,536],{"title":543,"intro":546,"items":974},[975,978,981,984],{"label":976,"value":977},"Art. 6(1)(a) GDPR","Consentimiento (por ejemplo, cookies de análisis)",{"label":979,"value":980},"Art. 6(1)(b) GDPR","Ejecución de un contrato o medidas precontractuales (por ejemplo, responder a consultas, cuentas de usuario)",{"label":982,"value":983},"Art. 6(1)(c) GDPR","Obligación legal",{"label":985,"value":986},"Art. 6(1)(f) GDPR","Intereses legítimos (por ejemplo, seguridad del sitio web, prevención de fraudes, mejora de servicios)",{"title":576,"intro":579,"items":988},[989,992,995,998,1001,1003],{"label":990,"value":991},"Registros del servidor","Eliminados después de 30 días",{"label":993,"value":994},"Datos del formulario de contacto","Retenidos durante la relación comercial, luego eliminados después de 3 años, salvo que apliquen requisitos legales de retención",{"label":996,"value":997},"Datos de la cuenta de usuario","Eliminados dentro de los 30 días posteriores al cierre de la cuenta, salvo que apliquen requisitos legales de retención",{"label":999,"value":1000},"Datos de análisis","Eliminados automáticamente después de 14 meses",{"label":908,"value":1002},"Almacenadas localmente en su navegador hasta que borre los datos del navegador o retire su consentimiento",{"label":1004,"value":1005},"Correos electrónicos transaccionales (por ejemplo, confirmaciones)","Retenidos según sea necesario para la prestación del servicio y los períodos de retención legales",{"title":621,"intro":624,"cards":1007,"contact":1032,"consent":682},[1008,1011,1014,1017,1020,1023,1026,1029],{"title":1009,"text":1010},"Derecho de acceso","Obtener confirmación de si procesamos sus datos personales y acceder a dichos datos. (Art. 15 GDPR)",{"title":1012,"text":1013},"Derecho de rectificación","Solicitar la corrección de datos personales inexactos. (Art. 16 GDPR)",{"title":1015,"text":1016},"Derecho de supresión","Solicitar la eliminación de sus datos personales bajo ciertas condiciones. (Art. 17 GDPR)",{"title":1018,"text":1019},"Derecho de restricción","Solicitar la limitación del tratamiento de sus datos personales. (Art. 18 GDPR)",{"title":1021,"text":1022},"Derecho a la portabilidad de datos","Recibir sus datos personales en un formato estructurado y legible por máquina. (Art. 20 GDPR)",{"title":1024,"text":1025},"Derecho de oposición","Oponerse al tratamiento basado en intereses legítimos. (Art. 21(1) GDPR)",{"title":1027,"text":1028},"Derecho de oposición al marketing directo","Oponerse al tratamiento de sus datos con fines de marketing directo en cualquier momento. (Art. 21(2) GDPR)",{"title":1030,"text":1031},"Derecho a presentar una reclamación","Presentar una reclamación ante una autoridad de supervisión. (Art. 77 GDPR)","Para ejercer cualquiera de estos derechos, por favor contacte a nuestro Delegado de Protección de Datos en",{"title":686,"intro":689,"cards":1034},[1035,1036],{"title":693,"text":696},{"title":700,"text":703},{"title":707,"intro":710,"cards":1038},[1039,1045,1051,1056],{"title":714,"text":717,"details":1040,"link":1043},[1041],{"label":948,"value":1042},"Interés legítimo (Art. 6(1)(f) GDPR) en proporcionar un sitio web rápido y confiable.",{"label":1044,"href":728},"Ver política de privacidad: Política de Privacidad de Cloudera →",{"title":734,"text":737,"details":1046,"link":1049},[1047],{"label":948,"value":1048},"Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR).",{"label":1050,"href":747},"Ver política de privacidad: Política de Privacidad de Resend →",{"title":753,"text":756,"details":1052,"link":1054},[1053],{"label":948,"value":968},{"label":1055,"href":765},"Ver política de privacidad: Política de Privacidad de Google →",{"title":771,"text":774,"details":1057,"link":1060},[1058],{"label":948,"value":1059},"Ejecución de un contrato (Art. 6(1)(b) GDPR) e interés legítimo (Art. 6(1)(f) GDPR) en proporcionar almacenamiento seguro de datos y autenticación.",{"label":1061,"href":784},"Ver política de privacidad: Política de Privacidad de Supabase →",{"title":790,"text":793},{"title":797,"paragraphs":1064},[800,803,806],{"title":810,"text":813},{"title":817,"intro":820,"authorityIntro":823,"card":1067},{"name":828,"street":1068,"city":1069,"rows":1070},"Ludwig-Erhard-Str. 22, 7th Floor","20459 Hamburgo, Alemania",[1071],{"label":941,"link":1072},{"label":836,"href":836},{"title":841,"text":844},{"title":848,"intro":851,"card":1075},{"name":396,"street":914,"city":915,"rows":1076},[1077,1080],{"label":1078,"link":1079},"Consultas generales",{"label":342,"href":341},{"label":1081,"link":1082},"Protección de datos",{"label":438,"href":437},"/legal/es/privacy-policy",{"intro":1085,"h2-1-data-controller":1086,"h2-2-data-protection-officer":1087,"h2-3-what-data-we-collect":1088,"h2-4-how-we-use-your-data":1089,"h2-4-1-legal-bases-for-processing":1090,"h2-5-data-retention":1091,"h2-6-your-rights-under-gdpr":1092,"h2-7-cookies":1093,"h2-8-third-party-services":1094,"h2-8-1-recipients-processors":1095,"h2-9-international-data-transfers":1096,"h2-10-data-security":1097,"h2-11-right-to-lodge-a-complaint":1098,"h2-12-changes-to-this-privacy-policy":1099,"h2-13-contact-us":1100},"4eeadd43e9f43bb1c162cd616d476e0a22e9bfa374e52dfe7cda47a8f0f01828","4de3056ffe796ac7b54fa34819c339abed5977fbe49fcd4b017fc7965cf455a5","06f7b0007ccf76273e5d9a1068687dbdffe2871b00c6da6e581f12332dbacc9f","72a6009d0d720d83541d4a9c48a54689b3514f97fd7be35b0f722dadb4fe706b","9d9d4d69afc921679c248e01d36802e9e67bdca75735383efa051906349eddf4","568b177024b2d32897282b8eabb0ad651a3c00dd377060d006a8932727356a99","df44a1b86d91c9680a1a5eddbdd3d300d54a2f4bb76a3c8a9eccd0ef9a5a065b","8c07dd291028fba057706fcfb6b0d6350a8fd3d87a3fdd866c8417a47b021508","8b4ad68b1ec74efea36d6751e7639a154a2e39280d55d7ff113505ad5e44d23c","2192e118c3029a819e8b4c5897c2004e08f31617d5dd33c80409228affa56eb6","35e88607366a1c36e58f58b7df3373522569a31597d4e316eca1b755de708250","ad094cf15d2a81f3f7364fb37cd7687afcd7f3e782e996b218179781996cd7f9","95b644fc9db55a62a30fa02ab2e947172521c7a9da3c55d0e894d7c4c085cff8","cdd945ad457dc8057e1a42b4535f100904510069ff6d48f8d1bc0e85574e8490","fc702d0bdfe63192bfec48976323ce0a88129ea16639fc4746271a4bafb0cabc","99daad3897af07301e0f01f76aca8d22af1e51d552df3acfcbd6158db272e458",{"title":379,"description":898},{"loc":1083,"lastmod":1103},"2026-04-23","c9a2e113838b1d070e319a129e131b38253fc83ce92889190fad0d943ac8dccc","en","legal/es/privacy-policy","1","2026-06-19T15:06:40.358Z","gpt-4o","github-models","up_to_date","T7r7Fok7DJNHlwRauzeutLh-gdB75nIS06qXOQ4fztQ","es",1787666694039]