<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Juliano Marcos Martins on Medium]]></title>
        <description><![CDATA[Stories by Juliano Marcos Martins on Medium]]></description>
        <link>https://medium.com/@julianommartins?source=rss-7c02ab1e1e21------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*l0jx8b6YLqL8f-KQXFP24w.jpeg</url>
            <title>Stories by Juliano Marcos Martins on Medium</title>
            <link>https://medium.com/@julianommartins?source=rss-7c02ab1e1e21------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 10:57:30 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@julianommartins/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[GenAI em Platform Engineering: o que separa adoção real de experimento eterno]]></title>
            <link>https://medium.com/@julianommartins/genai-em-platform-engineering-o-que-separa-ado%C3%A7%C3%A3o-real-de-experimento-eterno-4fa764ae43ef?source=rss-7c02ab1e1e21------2</link>
            <guid isPermaLink="false">https://medium.com/p/4fa764ae43ef</guid>
            <category><![CDATA[platform-engineering]]></category>
            <category><![CDATA[genai]]></category>
            <dc:creator><![CDATA[Juliano Marcos Martins]]></dc:creator>
            <pubDate>Thu, 30 Apr 2026 12:39:13 GMT</pubDate>
            <atom:updated>2026-04-30T12:39:13.056Z</atom:updated>
            <content:encoded><![CDATA[<p>Existe um padrão que se repete em quase toda organização de engenharia neste momento: AI em todo lugar, valor real em poucos lugares. O DORA Report 2025 coloca um número nessa sensação: <strong>88% das organizações usam IA em pelo menos uma função de negócio, mas apenas 39% reportam impacto financeiro mensurável</strong>. O diagnóstico é simples: a maioria ainda está fazendo experimentação descentralizada, não adoção estratégica.</p><p>Platform engineering é a resposta estrutural para esse problema. Não porque seja uma moda, mas porque a única forma de escalar IA em engenharia com governança, consistência e medição de impacto é por meio de uma plataforma interna madura. O DORA Report 2025 é explícito: há uma correlação direta entre a qualidade de uma plataforma interna e a capacidade de uma organização de extrair valor real da IA.</p><p>Esse artigo trata de como fazer isso funcionar na prática.</p><h3>Por que platform engineering e GenAI precisam um do outro</h3><p>A relação é bidirecional e isso importa.</p><p>Por um lado, GenAI acelera as práticas de engenharia existentes. Agentes embebidos em pipelines melhoram a cobertura de testes, identificam vulnerabilidades de segurança antes do deploy e reduzem o trabalho repetitivo que consome o tempo dos engenheiros sênior. Por outro lado, a plataforma é o que torna isso possível em escala: provendo os recursos de computação certos (GPUs, TPUs, clusters especializados), além de guardrails, observabilidade e governança.</p><p>Sem plataforma, o que se tem é shadow AI: cada time escolhendo seu próprio LLM, construindo seus próprios conectores, reinventando as mesmas regras de governança. Os custos ficam opacos, os riscos de compliance se multiplicam e a organização acumula dívida técnica em IA tão rapidamente quanto a de infraestrutura nos anos 2010.</p><p>Gartner previa que 80% das organizações de engenharia de software teriam times dedicados a platform engineering até 2026. O dado real chegou antes: quase 90% das empresas já têm plataformas internas, superando a previsão de um ano adiantado. A aceleração foi diretamente impulsionada pela necessidade de governar a adoção de IA.</p><h3>Os três enablers técnicos que tornaram isso possível</h3><h3>RAG: ancorando agentes no conhecimento interno</h3><p>Retrieval-Augmented Generation resolve o problema fundamental dos LLMs em contexto organizacional: modelos treinados em dados genéricos não conhecem seus runbooks, seu histórico de PRs, suas políticas de segurança. RAG permite que agentes recuperem esse conhecimento em tempo de inferência, sem necessidade de re-treinar modelos.</p><p>Em 2025–2026, RAG evoluiu para arquiteturas modulares e agênticas, sistemas iterativos e auto-corretivos que decidem dinamicamente quando e como recuperar informação externa. A diferença entre um agente que alucina contexto genérico e um que propõe um fix correto para um pipeline falho está quase sempre na qualidade do RAG por trás.</p><h3>MCP: o protocolo que virou infraestrutura</h3><p>O Model Context Protocol, lançado pela Anthropic em novembro de 2024, padronizou a comunicação entre agentes de IA e ferramentas externas. Antes do MCP, cada integração era um conector custom: o clássico problema N×M de integração que a indústria já resolveu uma vez com APIs e teve que resolver de novo para os agentes.</p><p>Em menos de um ano, o MCP acumulou mais de 97 milhões de downloads mensais de SDK, mais de 10 mil servidores ativos e adoção formal de OpenAI, Google DeepMind e Microsoft. Em dezembro de 2025, a Anthropic doou o protocolo à Agentic AI Foundation, sob a Linux Foundation, o sinal mais claro possível de que MCP é infraestrutura crítica neutra de vendor, não um diferencial competitivo.</p><p>Para equipes de platform engineering, o MCP resolve algo concreto: quando um agente dispara um job de CI, o MCP carrega o metadado e o contexto necessários para que a plataforma entenda a intenção. É a camada de comunicação padronizada entre o mundo dos agentes e o das plataformas.</p><h3>Agentes nos pipelines de CI/CD</h3><p>A infusão de GenAI diretamente nos pipelines cria um nível de inteligência que vai além da automação tradicional. Pipelines que detectam anomalias em logs por meio de similaridade de embeddings, propõem fixes contextualizados e disparam rollbacks condicionados à aprovação humana não são ficção científica: são casos de uso em produção hoje. O resultado direto é a redução do MTTR e a prevenção da recorrência de falhas que antes dependiam de post-mortem humano.</p><h3>O que realmente separa adoção de experimento</h3><h3>1. Integrar ao fluxo, não adicionar por cima</h3><p>O erro mais comum é tratar GenAI como uma camada nova: um dashboard separado, uma ferramenta à parte, um bot que o desenvolvedor precisa lembrar de consultar. Isso não funciona. O DORA 2025 confirma que a user-centricity amplifica o impacto positivo da IA: fazer com que o desenvolvedor precise mudar seu fluxo de trabalho para usar IA é a receita para baixa adoção.</p><p>GenAI precisa estar onde o desenvolvedor já está: extensões no dev portal (Backstage, Cortex), plugins de IDE, respostas automáticas no CLI. A plataforma deve prover funcionalidades de IA baseadas no contexto do papel e do momento, como a geração de pipeline de CI para quem está escrevendo uma feature e a sugestão de right-sizing para quem está provisionando infraestrutura, sem que ninguém precise declarar explicitamente o que quer.</p><p>Dados do State of AI in Platform Engineering 2025 mostram que 75% dos profissionais de plataforma usam IA diariamente na geração de código. Mas uso individual e adoção estratégica são coisas diferentes: apenas 48% conseguiram integrar IA com sucesso nos processos de seus times.</p><h3>2. Agentes que propõem, não que decidem</h3><p>A tentação de substituir o julgamento humano pela automação é real, especialmente quando os primeiros resultados parecem bons. Resistir a ela não é conservadorismo, e sim pragmatismo. O DORA 2025 aponta que 30% dos desenvolvedores ainda relatam pouca ou nenhuma confiança no código gerado por IA. Forçar autonomia antes de construir confiança produz o resultado oposto.</p><p>O design correto é: agentes propõem ações, humanos aprovam. Com o tempo, à medida que os padrões de qualidade são estabelecidos e a confiança aumenta, o escopo de autonomia pode ampliar-se. Desenvolvedores precisam poder sobrescrever, re-treinar e re-contextualizar agentes sem atrito. Isso não é uma limitação de design, é parte da arquitetura de valor.</p><h3>3. Golden paths como primeiro-cidadão para IA</h3><p>Golden paths (os workflows padronizados e suportados que definem a forma recomendada de fazer as coisas) tornam-se ainda mais críticos no contexto de IA, pois estabelecem os limites seguros dentro dos quais agentes podem operar. Sem golden paths, agentes introduzem variabilidade em lugares onde você precisa de consistência.</p><p>A abordagem correta é tratar templates de agentes como você trata templates de microsserviço: pré-configurados com capacidades de produção desde o primeiro dia, integração com LLM providers, gerenciamento de quota, governança de acesso e observabilidade padrão. Não deixar cada time reinventar isso é exatamente o problema para o qual o platform engineering existe.</p><h3>4. Observabilidade LLM-specific não é opcional</h3><p>O stack de observabilidade existente não é suficiente para os agentes em produção. Além das métricas tradicionais de infraestrutura, você precisa de:</p><ul><li><strong>Token trace logs</strong>: rastreabilidade de cada ação do agente, o que foi invocado, com qual contexto</li><li><strong>Prompt drift detection</strong>: identificar quando o comportamento do agente deriva do esperado ao longo do tempo, um problema que se manifesta lentamente e é invisível sem instrumentação específica</li><li><strong>Relevância de scoring de respostas RAG</strong>: ter um RAG não garante respostas relevantes. Medir continuamente a qualidade do que é recuperado é o que separa RAG útil de RAG que confunde</li><li><strong>Audit trails explícitos</strong>: não só para compliance, mas para debug e para construir confiança com os times que usam os agentes</li><li><strong>Versionamento de agentes e prompts</strong>: o mesmo rigor que você aplica a código se aplica aqui</li></ul><p>O Datadog State of AI Engineering 2026 documenta que a próxima onda de vantagem competitiva pertence a organizações que conseguem madurar agentes em sistemas de produção disciplinados: observáveis, governáveis, resilientes e com visibilidade de custo.</p><h3>5. Governança de IA como código de plataforma, não como política de compliance</h3><p>A regulação está chegando. Na Europa, obrigações para provedores de IA de propósito geral já são aplicáveis desde agosto de 2025, com requisitos para sistemas de alto risco entrando em vigor em agosto de 2026, e multas de até €35 milhões ou 7% do faturamento global. Organizações que tentam atender a esses requisitos na camada de aplicação, onde cada time constrói seus próprios mecanismos de logging, transparência e audit trails, vão encontrar compliance caro, inconsistente e frágil.</p><p>A plataforma é o lugar certo para embutir mecanismos de compliance: autenticação e autorização na camada de acesso ao modelo, logging padronizado para audit trails, avaliação de bias integrada nos pipelines de desenvolvimento, documentação obrigatória antes de um serviço de IA ir ao ar. Gartner encontrou que organizações que implantam plataformas de governança de IA têm 3,4 vezes mais probabilidade de alcançar alta efetividade na governança de IA do que as que gerenciam ad hoc.</p><h3>6. Medir impacto de negócio, não só métricas técnicas</h3><p>A precisão e a latência são métricas necessárias, mas não suficientes. O que sustenta o investimento em AI em plataforma é conectar ações de desenvolvimento a resultados de negócio.</p><p>Isso significa rastrear melhorias no MTTR, na redução da change failure rate e no flow index dos times. Significa conseguir dizer “meu agente economizou duas horas de escrita de configuração por semana em seis times, o que equivale a X em valor de engenharia”. Significa conectar commits e releases de features a dashboards de OKRs.</p><p>A evolução das métricas DORA vai nessa direção: de métricas de throughput puras para um framework que conecta o desempenho de entrega a resultados de produto e ao bem-estar dos times. Plataformas que expõem essa visibilidade para os próprios desenvolvedores criam um loop de engajamento que se auto-sustenta.</p><h3>7. Platform as a product não é opcional</h3><p>A última chave que fecha tudo. Times de plataforma que não tratam a plataforma como um produto, com pesquisa de usuário, documentação, customer success e melhoria contínua: ainda não estão fazendo platform engineering. Estão operando a infraestrutura.</p><p>O mesmo princípio se aplica à IA: não coloque funcionalidades de IA nos seus usuários sem saber o que eles querem. A easyJet, por exemplo, só observou aceleração na adoção de ferramentas de IA quando as lideranças a tornaram uma expectativa verbalizada, não um mandato. Segurança e outras travas devem ser obrigatórias. Tudo o que serve ao desenvolvedor interno deve ser opcional e suficientemente bom para que ninguém queira sair do golden path.</p><h3>A arquitetura que suporta tudo isso</h3><p>Uma plataforma que implementa esses princípios se organiza em quatro zonas funcionais:</p><p><strong>Zona de Input</strong>: onde reside o intent do desenvolvedor: source code, issue tracking, CLI, dev portal. É aqui que ficam os prompt engines e os agentes locais: co-pilots, PR assistants, pipeline generators.</p><p><strong>Zona de Plataforma</strong>: serviços core: CI/CD, infraestrutura-as-code, golden paths, definindo workflows padronizados para integração segura de IA.</p><p><strong>Zona de IA</strong>: a infraestrutura agêntica, múltiplos agentes LLM, MCP para comunicação padronizada entre agentes e plataforma, RAG para contexto a partir de bases de conhecimento internas. É aqui que fica o AI gateway, que roteia chamadas entre os providers, gerencia quotas e faz failover.</p><p><strong>Zona de Dados</strong>: telemetria centralizada via OpenTelemetry, feedback loops (histórico de prompts, performance metadata, feedback de desenvolvedor), e a camada de business intelligence que conecta a atividade da plataforma a OKRs. Sem essa zona, você está operando às cegas.</p><h3>O que o dado mais duro de 2025 diz</h3><p>O DORA Report 2025 traz uma constatação que vale guardar: a adoção de IA tem relação positiva com o throughput de entrega de software e com a performance do produto — uma melhoria em relação a 2024, quando a relação era negativa. Mas ainda há uma relação negativa com a estabilidade de entrega.</p><p>A interpretação correta não é a de que a IA é problemática. É que a IA acelera o desenvolvimento e essa aceleração expõe fragilidades downstream. Sem sistemas de controle robustos (testes automatizados maduros, batch sizes pequenos, loops de feedback rápido), o aumento do volume de mudanças gera instabilidade. A plataforma interna é exatamente o ambiente em que esses sistemas de controle vivem.</p><p>Platform engineering e GenAI não são tendências paralelas. É um único movimento. As organizações que entenderem isso primeiro vão ter uma vantagem difícil de replicar.</p><h3>Referências</h3><p>DORA RESEARCH TEAM. <strong>Accelerate State of DevOps Report 2024</strong>. Google Cloud, 2024. Disponível em: <a href="https://dora.dev/research/2024/dora-report/">https://dora.dev/research/2024/dora-report/</a>. Acesso em: 23 abr. 2026.</p><p>GOOGLE CLOUD. <strong>Announcing the 2025 DORA Report</strong>. Google Cloud Blog, set. 2025. Disponível em: <a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report">https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report</a>. Acesso em: 23 abr. 2026.</p><p>PLATFORM ENGINEERING. <strong>State of AI in Platform Engineering 2025</strong>. PlatformEngineering.org, 2025. Disponível em: <a href="https://platformengineering.org/reports/state-of-ai-in-platform-engineering-2025">https://platformengineering.org/reports/state-of-ai-in-platform-engineering-2025</a>. Acesso em: 23 abr. 2026.</p><p>PLATFORM ENGINEERING. <strong>A framework for integrating AI into platform engineering</strong>. PlatformEngineering.org, jan. 2026. Disponível em: <a href="https://platformengineering.org/blog/a-framework-for-integrating-ai-into-platform-engineering">https://platformengineering.org/blog/a-framework-for-integrating-ai-into-platform-engineering</a>. Acesso em: 23 abr. 2026.</p><p>PLATFORM ENGINEERING. <strong>Platform engineering in 2025: What changed, AI, and the future of platforms</strong>. PlatformEngineering.org, dez. 2025. Disponível em: <a href="https://platformengineering.org/events/platform-engineering-in-2025-what-changed-ai-and-the-future-of-platforms-2025-12-09">https://platformengineering.org/events/platform-engineering-in-2025-what-changed-ai-and-the-future-of-platforms-2025-12-09</a>. Acesso em: 23 abr. 2026.</p><p>MIA PLATFORM. <strong>Top 5 Predictions For Platform Engineering In 2026</strong>. Mia-Platform Blog, dez. 2025. Disponível em: <a href="https://mia-platform.eu/blog/top-5-predictions-platform-engineering-2026/">https://mia-platform.eu/blog/top-5-predictions-platform-engineering-2026/</a>. Acesso em: 23 abr. 2026.</p><p>LINUX FOUNDATION. <strong>Linux Foundation Announces the Formation of the Agentic AI Foundation (AAIF)</strong>. San Francisco, dez. 2025. Disponível em: <a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation">https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation</a>. Acesso em: 23 abr. 2026.</p><p>MODEL CONTEXT PROTOCOL BLOG. <strong>MCP joins the Agentic AI Foundation</strong>. Anthropic, dez. 2025. Disponível em: <a href="https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/">https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/</a>. Acesso em: 23 abr. 2026.</p><p>THOUGHTWORKS. <strong>The Model Context Protocol’s impact on 2025</strong>. Thoughtworks United States, dez. 2025. Disponível em: <a href="https://www.thoughtworks.com/en-us/insights/blog/generative-ai/model-context-protocol-mcp-impact-2025">https://www.thoughtworks.com/en-us/insights/blog/generative-ai/model-context-protocol-mcp-impact-2025</a>. Acesso em: 23 abr. 2026.</p><p>LEADDEV. <strong>AI made platform engineering strategic again</strong>. LeadDev, abr. 2026. Disponível em: <a href="https://leaddev.com/technical-direction/ai-made-platform-engineering-strategic-again">https://leaddev.com/technical-direction/ai-made-platform-engineering-strategic-again</a>. Acesso em: 23 abr. 2026.</p><p>THENEWSTACK. <strong>In 2026, AI Is Merging With Platform Engineering. Are You Ready?</strong>. The New Stack, jan. 2026. Disponível em: <a href="https://thenewstack.io/in-2026-ai-is-merging-with-platform-engineering-are-you-ready/">https://thenewstack.io/in-2026-ai-is-merging-with-platform-engineering-are-you-ready/</a>. Acesso em: 23 abr. 2026.</p><p>DATADOG. <strong>State of AI Engineering</strong>. Datadog, 2026. Disponível em: <a href="https://www.datadoghq.com/state-of-ai-engineering/">https://www.datadoghq.com/state-of-ai-engineering/</a>. Acesso em: 23 abr. 2026.</p><p>EHTESHAM, Abul et al. <strong>Agentic Retrieval-Augmented Generation: A Survey on Agentic RAG</strong>. arXiv, jan. 2025. Disponível em: <a href="https://arxiv.org/abs/2501.09136">https://arxiv.org/abs/2501.09136</a>. Acesso em: 23 abr. 2026.</p><p>AMAZON WEB SERVICES. <strong>What is RAG? Retrieval-Augmented Generation AI Explained</strong>. AWS, 2025. Disponível em: <a href="https://aws.amazon.com/what-is/retrieval-augmented-generation/">https://aws.amazon.com/what-is/retrieval-augmented-generation/</a>. Acesso em: 23 abr. 2026.</p><p>FAROS AI. <strong>DORA Report 2025 Key Takeaways: AI Impact on Dev Metrics</strong>. Faros AI Blog, set. 2025. Disponível em: <a href="https://www.faros.ai/blog/key-takeaways-from-the-dora-report-2025">https://www.faros.ai/blog/key-takeaways-from-the-dora-report-2025</a>. Acesso em: 23 abr. 2026.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4fa764ae43ef" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Scaling Kubernetes at Mercado Libre with Karpenter and GitOps]]></title>
            <link>https://medium.com/mercadolibre-tech/scaling-kubernetes-at-mercado-libre-with-karpenter-and-gitops-2c792a7403c5?source=rss-7c02ab1e1e21------2</link>
            <guid isPermaLink="false">https://medium.com/p/2c792a7403c5</guid>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[nodepool]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[gitops]]></category>
            <dc:creator><![CDATA[Juliano Marcos Martins]]></dc:creator>
            <pubDate>Tue, 28 Oct 2025 13:10:36 GMT</pubDate>
            <atom:updated>2025-10-28T17:20:17.727Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7Z6-aEv1ZE3elFb3ITL3Ng.png" /></figure><p>Mercado Libre, Latin America’s largest digital ecosystem, runs one of the most demanding and scalable infrastructures in the Southern Hemisphere.</p><p><strong>Our operation at scale</strong></p><ul><li>35,000 active microservices</li><li>Over 20,000 technology professionals</li><li>Approximately 30,000 daily deployments</li><li>Around 120,000 pull requests per day</li><li>Traffic peaks of 15 million requests per second</li></ul><p>In this fast-paced environment, efficient workload orchestration across multiple cloud providers is crucial. Kubernetes has become our standard for container management and is the foundation of our multi-cloud strategy, powering our internal compute engine. You can see more details <a href="https://medium.com/mercadolibre-tech/kubernetes-at-mercado-libre-ec331bea1866">here</a>.</p><p>This article explores how we’ve used <strong>Karpenter</strong> and <strong>GitOps</strong> to evolve our ecosystem, achieving automated provisioning, declarative governance, and large-scale cloud-native operations.</p><h3>The challenge of scale</h3><p>With tens of thousands of microservices, ticket-driven workflows and manual changes quickly became bottlenecks, slowing delivery and increasing operational risk. Even with the evolution of <strong>Infrastructure as Code (IaC)</strong>, new challenges emerged:</p><ul><li>Explosive diversity of templates and pipelines</li><li>State drift and lack of standardization</li><li>Overloaded Platform/DevOps teams with repetitive requests</li></ul><p>In response, we evolved toward <strong>declarative, auditable, </strong>and <strong>fully automated practices</strong>, guided by <strong>GitOps</strong>, <strong>continuous automation</strong>, and <strong>internal infrastructure abstractions</strong>.</p><h3>Karpenter: What it is and why it changed the game</h3><p><strong>Karpenter</strong> is an open-source, Kubernetes-native provisioning engine designed to deliver <strong>automatic scalability, cost optimization, and high flexibility</strong> in managing a cluster’s <strong>data plane</strong> (compute nodes).</p><p><strong>How it works at a high level</strong></p><ul><li><strong>Monitors</strong> the Kubernetes scheduler for pending pods caused by insufficient compute resources.</li><li><strong>Analyzes</strong> each workload’s requirements (CPU, memory, architecture, affinities, labels, tolerations, and more).</li><li><strong>Provisions, scales, or terminates</strong> nodes on demand, automatically selecting the ideal instance type, profile (Spot or On-Demand), and architecture.</li><li><strong>Performs advanced bin packing</strong>, consolidating multiple pods on fewer nodes to maximize efficiency and minimize costs.</li></ul><p>In short, <strong>Karpenter eliminates overprovisioning</strong> and aligns infrastructure capacity to business demand within seconds, enabling <strong>elastic and resilient clusters</strong>.</p><p>With Karpenter, Mercado Libre now operates with:</p><ul><li><strong>Just-in-time provisioning:</strong> Nodes are created or terminated exactly when workloads require them.</li><li><strong>Intelligent instance decisions:</strong> Node types and configurations are dynamically chosen to balance cost and SLA requirements.</li><li><strong>Fully automated cluster lifecycle:</strong> Clusters can be created, scaled, and adjusted in minutes, even under peak load.</li><li><strong>Sustainable growth:</strong> Supporting thousands of workloads across dozens of clusters that rapidly adapt to changes and seasonal demand.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/742/1*GH2ZHxGICqAxrVWFyB22ig.png" /><figcaption>Image 1: Pod scheduling average time.</figcaption></figure><p><strong>In practice,</strong> the average pod scheduling time (from <em>Pending</em> to <em>Running</em>) dropped to around <strong>50 seconds</strong>, even under high concurrency. This improvement represents a significant leap in <strong>agility and operational efficiency</strong>.</p><h3>How on-demand provisioning works</h3><p>Karpenter replaces the traditional approaches based on Auto Scaling Groups or Cluster Autoscaler, bringing greater intelligence and automation to the node lifecycle.</p><p>The diagram below illustrates the end-to-end flow from resource request to optimized pod execution, showing how Karpenter continuously observes, analyzes, and provisions compute capacity on demand.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1015/1*_CqFGwgl2_NblyeEP-BKWQ.png" /><figcaption>Image 2: Karpenter lifecycle provisioning.</figcaption></figure><p>The provisioning cycle happens through several <strong>continuous and coordinated stages</strong>:</p><p>1. <strong>Demand detection by the scheduler</strong></p><p>When a new pod is created and no available nodes meet its requirements, the Kubernetes scheduler detects its pending state and triggers the provisioning cycle.</p><p>2. <strong>Constraint evaluation (scheduling simulation)</strong></p><p>Karpenter simulates the scheduling process by analyzing key constraints, such as:</p><ul><li><strong>nodeAffinity</strong>: Preferences and restrictions for node location and type.</li><li><strong>topologySpreadConstraints</strong>: Rules that ensure high availability by distributing pods across zones or failure domains to avoid overconcentration.</li><li><strong>tolerations</strong>: Criteria allowing pods to run on nodes with specific taints within certain node pools.</li></ul><p>This simulation ensures that defined policies and SLAs are respected while preparing the ground for efficient resource allocation.</p><p>3. <strong>Allocation strategy selection</strong></p><p>Based on workload requirements and organizational policies, Karpenter determines:</p><ul><li><strong>The best NodePool</strong> for demand, considering architecture, compute profile (general-purpose, compute-intensive, ML, or GPU), or logical domain.</li><li><strong>Capacity type</strong>, deciding between Spot, On-Demand, or Preemptible instances to balance cost and service criticality.</li><li><strong>Availability Zone (AZ)</strong>, selecting the most appropriate zone to optimize availability and resource efficiency.</li></ul><p>4. <strong>Intelligent batching</strong></p><p>To prevent inefficient bursts of node creation during high-demand spikes, Karpenter batches multiple pod requests within a short window (typically 1–10 seconds). This consolidation maximizes resource utilization and avoids waste.</p><p>5. <strong>Instance provisioning and launch</strong></p><p>Karpenter then proceeds with actual provisioning by:</p><ul><li>Requesting the ideal instance type and size from the cloud provider, considering dozens of parameters like machine family, generation, capacity, and pricing.</li><li>Creating the instance in the most suitable availability zone and automatically joining it to the cluster.</li></ul><p>6. <strong>Optimized workload execution</strong></p><p>Once the instance is ready, the pod is scheduled and begins execution on infrastructure tailored to its specific requirements. The result is a <strong>highly efficient and resilient operation</strong>, with Karpenter continuously consolidating pods, eliminating underutilized nodes, and dynamically adjusting compute resources in real-time.</p><h3>Allocation strategies and operational governance</h3><p>Operating Kubernetes clusters at scale requires balancing <strong>isolation, flexibility,</strong> and <strong>cost efficiency</strong>. At Mercado Libre, we achieve this balance using <strong>NodePools</strong> <strong>and</strong> <strong>NodeClasses</strong>.</p><p>A <strong>NodePool</strong> is a group of nodes with similar configurations, organizing and scheduling workloads according to several key criteria:</p><ul><li><strong>Service type:</strong> User-facing applications, platform services, batch jobs, or machine learning workloads.</li><li><strong>Capacity model:</strong> A division between On-Demand and Spot instances, each offering different levels of resilience and cost optimization.</li><li><strong>Architecture and hardware:</strong> AMD64, ARM64, or GPU-based nodes, chosen based on the workload profile.</li><li><strong>Compute profile:</strong> Distinction between general-purpose nodes and CPU-intensive workloads.</li></ul><p>These NodePools follow <strong>self-descriptive naming conventions</strong>, making automation simpler and aligning engineering teams more straightforward. Real-world examples include:<br>user_application-spot-amd64-cpu_optimized<br>platform_application-ondemand-arm64-general_computing</p><h3>Intelligent Spot usage and virtual domains</h3><p>To balance <strong>cost and stability</strong>, we apply <strong>Spot ratio policies</strong> based on workload type:</p><ul><li><strong>Critical workloads:</strong> Use up to <strong>10% Spot capacity</strong>.</li><li><strong>Medium-priority workloads</strong>: Use up to <strong>70% Spot</strong>.</li><li><strong>Test and staging environments</strong>: Can run on <strong>100% Spot instances</strong> to maximize savings.</li></ul><p>Instead of relying on fixed affinities, we use <strong>declarative labels</strong> that define <em>virtual domains</em>. This allows the Kubernetes scheduler to distribute pods evenly across <strong>availability zones</strong>. Constraints like <strong>topologySpreadConstraints</strong> and <strong>maxSkew</strong> ensure high availability and prevent workload concentration within a single failure domain.</p><p>Below is a simplified example of a Pod configuration:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/760/1*nKmFN4FJXO0rUekX0oDF3g.png" /></figure><p>In this example, the workload can be scheduled on <strong>Spot nodes</strong>, requires the <strong>ARM64 architecture</strong>, and is <strong>distributed evenly across multiple availability zones</strong> to prevent concentration and ensure higher resilience.</p><h3>Robust isolation by design</h3><p>Each domain, represented by a <strong>NodePool</strong> and a <strong>NodeClass</strong>, can be configured with <strong>dedicated subnets, security groups, and custom permissions</strong>. This design strengthens regulatory compliance, protects sensitive workloads, and mitigates operational risks while ensuring each workload runs on the most suitable resources for its profile.</p><h3>Declarative governance: GitOps as the foundation for scale</h3><p>As our platform expanded, we needed an operational model that combined <strong>agility, traceability, and quality control</strong>. <strong>GitOps</strong> became the cornerstone of this governance model:</p><ul><li>The <strong>environment’s desired state is declaratively defined</strong> and versioned in Git repositories.</li><li><strong>FluxCD and custom pipelines perform continuous reconciliation</strong> with the actual state.</li><li>Every change goes through a <strong>pull request</strong>, with automated validations and human review.</li><li><strong>Progressive rollouts</strong> are applied in multiple waves, reducing risk and enabling fast, safe rollbacks.</li></ul><p>The result is a <strong>consistent, predictable,</strong> <strong>and fully auditable environment</strong>, even with <strong>tens of thousands of monthly changes</strong>.</p><h3>Automatrix: A governance-first platform for large-scale operations</h3><p>Managing dozens of clusters and hundreds of thousands of workloads requires more than just automation; it requires <strong>governance by design</strong>. With this principle in mind, we developed <strong>Automatrix</strong>, a proprietary platform that centralizes and standardizes the <strong>provisioning and lifecycle management</strong> of Kubernetes clusters at Mercado Libre.</p><p><strong>Automatrix</strong> is <strong>API-driven</strong> and enables:</p><ul><li>Fully automated <strong>provisioning and upgrade workflows</strong>.</li><li>The generation of <strong>hybrid templates</strong> using <strong>CDKTF</strong> and <strong>CDK8s</strong> for fast creation and configuration adjustments.</li><li><strong>Inheritance of corporate standards</strong> across different types of clusters and workloads.</li><li><strong>Native integration with GitOps pipelines</strong> for continuous governance and automation.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/877/1*2XmGpsKzIcCw_6-CKmgFmw.png" /><figcaption>Image 3: Automatrix: Governance-First Infrastructure Platform</figcaption></figure><p>Every change automatically generates a <strong>pull request</strong> that is validated and tested before being applied. This process minimizes human error, simplifies rollbacks, and ensures <strong>sustainable, auditable platform evolution</strong>.</p><p>The result is an operation where <strong>clusters can be created and made production-ready within minutes</strong>, with <strong>security, compliance, and best practices embedded from the start</strong>.</p><h3>Results in production</h3><p><strong>Karpenter</strong>, <strong>GitOps</strong>, and <strong>Automatrix</strong> integration have transformed our container operations. The key outcomes include:</p><ul><li><strong>Intelligent provisioning and scalability</strong> enable near-instant deployments and migrations.</li><li><strong>Operational consistency</strong> is achieved with automated and auditable policies that ensure compliance and traceability.</li><li><strong>Autonomy and productivity for squads</strong> allow teams to focus on innovation and delivering business value.</li><li><strong>Cost efficiency</strong> results from the extensive use of <strong>Spot instances</strong> and <strong>advanced bin packing</strong>, achieving continuous savings without sacrificing availability.</li></ul><h3>Lessons for the Kubernetes community</h3><p>Our experience at Mercado Libre demonstrates that <strong>scaling Kubernetes across large, multi-cloud environments</strong> is achievable without compromising control, cost efficiency, or governance. The pillars of this model include:</p><ul><li><strong>Automation and intelligence:</strong> Tools like <strong>Karpenter</strong> enhance automation, optimize costs, and improve resilience without adding bureaucracy.</li><li><strong>Declarative governance and GitOps:</strong> A single source of truth, auditable pipelines, and continuous reconciliation ensure quality even in complex, large-scale environments.</li><li><strong>Robust internal platforms:</strong> Investing in solutions like <strong>Automatrix</strong> promotes reusability, standardization, and adopting new practices while maintaining flexibility and compliance.</li><li><strong>Focus on development:</strong> We empower product teams to focus on innovation by simplifying and automating infrastructure.</li></ul><p>Our journey continues as we explore <strong>intelligent autoscaling, serverless provisioning, and AI-powered observability</strong>, innovations that continuously expand our capabilities. For those operating at a large scale, pursuing <strong>automation, intelligence, and governance at every level</strong> is the key to building the <strong>next generation of cloud-native platforms</strong>.</p><p><strong>Acknowledgments</strong></p><p>This article was written with the support of Marcelo Quadros and Marcos Pinheiro</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2c792a7403c5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mercadolibre-tech/scaling-kubernetes-at-mercado-libre-with-karpenter-and-gitops-2c792a7403c5">Scaling Kubernetes at Mercado Libre with Karpenter and GitOps</a> was originally published in <a href="https://medium.com/mercadolibre-tech">Tecnología de Mercado Libre</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Kubernetes became the right fit for Mercado Libre’s internal developer platform]]></title>
            <link>https://medium.com/mercadolibre-tech/how-kubernetes-became-the-right-fit-for-mercado-libres-internal-developer-platform-fb02df289def?source=rss-7c02ab1e1e21------2</link>
            <guid isPermaLink="false">https://medium.com/p/fb02df289def</guid>
            <category><![CDATA[fury]]></category>
            <category><![CDATA[devex]]></category>
            <category><![CDATA[idp]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[Juliano Marcos Martins]]></dc:creator>
            <pubDate>Sat, 08 Mar 2025 11:44:13 GMT</pubDate>
            <atom:updated>2025-03-08T11:44:13.728Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O4_g3HOkpyD29kDWSkenzA.png" /></figure><p>In the previous article, <a href="https://medium.com/mercadolibre-tech/kubernetes-at-mercado-libre-ec331bea1866"><em>How Kubernetes powers Fury at Mercado Libre</em></a>, we explored how our internal development platform overcame the challenges of scale and complexity by adopting Kubernetes as its core engine. We also highlighted how <strong>Fury transforms the developer experience (DevEx)</strong> by abstracting infrastructure management, allowing teams to focus entirely on innovation and value creation.</p><p>This new article dives deeper into the technical and strategic aspects behind our decision to adopt Kubernetes. We’ll analyze the alternatives we evaluated, the challenges we faced during implementation, and how these decisions continue to support our multi-cloud strategy and operational resilience. This evaluation process, which took about six months, resulted in the creation of multiple RFCs and detailed reports, complete with metrics that guided our decision-making.</p><h3>Context</h3><p>As Mercado Libre continued to expand, we encountered limitations with Fury’s first computing model, known as “Standard.” This instance-based model effectively served as an interface between our platform and cloud providers. However, we faced two critical issues: <strong>low efficiency</strong> due to the 1:1 relationship between application replicas and computing instances, and <strong>limited utilization of native cloud provider functionalities</strong>.</p><p>These challenges underscored the need for a more efficient solution to optimize resource utilization and reduce costs, ultimately steering us toward adopting Kubernetes.</p><h3>Evaluating alternatives</h3><p>In our search for the best infrastructure solution, we conducted a thorough study of several alternatives, as shown in Image 1. We started by examining job workloads and then looked at <strong>Function as a Service (FaaS)</strong> options. Next, we explored <strong>Container-as-a-Service (CaaS)</strong> models and finally assessed <strong>orchestrators</strong> for enhanced container management. Each alternative had its own strengths and weaknesses, leading us to choose Kubernetes as the optimal solution.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Zz-wU1StLe3XGJMRLrNPCg.png" /><figcaption>Image 1: Study of alternatives by category to implement Kubernetes.</figcaption></figure><h3>First alternative: Job workloads</h3><p>We started evaluating new alternatives starting with <strong>Job workloads</strong>. For this type of workload, where Cron rules schedule executions, inefficiency was particularly noticeable: instances remained active 24/7, incurring unnecessary costs even when jobs ran only once a week, for example.</p><p>To address the inefficiencies associated with idle resources in our infrastructure, we explored AWS Batch, a managed service designed for running batch-processing workloads at scale. AWS Batch dynamically provisions compute resources based on a job’s requirements, making it suitable for scheduled workloads such as those managed via Cron jobs. By using AWS Batch, we could trigger jobs without keeping instances running continuously, reducing the overhead of maintaining idle resources for infrequent workloads (e.g., once a week or monthly).</p><p>However, while AWS Batch is effective for traditional batch jobs, it didn’t meet all our needs. Specifically, it wasn’t suitable for workloads that require more dynamic scaling or event-driven activation. One example is BigQueue, our internal messaging system built on cloud services. BigQueue processes messages consumed by various applications that may only receive messages sporadically. This pattern led to idle periods, with message consumers remaining inactive until new data arrived. Since AWS Batch<em> </em>is designed for jobs with predictable start and end times, it wasn’t suitable for the unpredictable workload of systems like BigQueue consumers, which often handle bursts of messages. As a result, AWS Batch was insufficient for our needs; we required a solution that could effectively manage variable message traffic with minimal latency and scale on demand.</p><h3>Second alternative: Function as a Service</h3><p>The second set of alternatives we considered was <strong>Function as a Service(FaaS)</strong>, specifically evaluating <strong>AWS Lambda</strong>. While AWS Lambda was designed to run code in response to events, it has a maximum execution time of 15 minutes, making it unsuitable for long-running tasks — a critical requirement for some workloads. Although Lambda works well for short-lived, stateless tasks triggered by events, its limitations in execution duration and state management forced us to explore other options.</p><p>Moreover, combining AWS Lambda with AWS Batch<em> </em>would have introduced significant complexity. Each service is optimized for different use cases — Lambda is event-driven and stateless, while AWS Batch manages large-scale batch jobs. Implementing and managing two distinct systems would increase operational overhead, particularly in terms of monitoring, logging, and workflow orchestration. This complexity highlighted our need for a more unified solution.</p><p>Another significant challenge was the extensive code refactoring needed to adapt our existing applications to new solutions. With over <strong>30,000 microservices in operation</strong>, this would have required considerable rework on our development teams. Since our architecture was container-based, we decided to focus on Container-as-a-Service (CaaS) models to simplify deployment and management.</p><h3>Third alternative: Container as a Service</h3><p>In evaluating Container as a Service (<strong>CaaS)</strong> options, we considered <strong>AWS ECS, Google Cloud Run, and Cloud Run with Anthos</strong>. Each had its strengths, but none fully met our requirements.</p><p>We started by assessing AWS ECS (Elastic Container Service), designed for deploying and scaling containerized applications. ECS supports sidecar containers, which are critical for our architecture, as we rely on sidecars to manage auxiliary services such as logging and monitoring. Despite its power, ECS lacked the flexibility we needed, particularly in multi-cloud environments, and didn’t support certain features we required out of the box.</p><p>Next, we evaluated Google Cloud Run, a fully managed, serverless platform optimized for stateless containers. Cloud Run automatically scales containers based on HTTP requests, making it ideal for event-driven workloads. However, it didn’t support sidecar containers at the time, which are central to our system’s design, leading us to rule out Cloud Run for our use cases.</p><p>We then tested Cloud Run integrated with Anthos, which enables Cloud Run’s serverless workloads to deploy across hybrid and multi-cloud environments. While this integration provided flexibility to overcome some limitations of using Cloud Run alone, it introduced additional operational complexity. Managing Cloud Run for container execution alongside Anthos’ orchestration capabilities across different cloud environments proved to be challenging. The added complexity and integration challenges made this solution less favorable for us.</p><p>Ultimately, none of these CaaS options fully met our requirements, especially considering the complexity of managing such a large-scale architecture.</p><h3>The final solution: orchestrators</h3><p>Our exploration then shifted toward <strong>orchestrators</strong>. We evaluated <strong>Kubernetes (EKS and GKE)</strong>, <strong>Nomad</strong>, and solutions like <strong>Knative</strong>, which builds on Kubernetes to offer additional serverless and event-driven workload features. However, Knative was ruled out early as it didn’t align with Fury’s operational requirements and introduced functionality that conflicted with our existing architecture. The ideal orchestrator needed to integrate seamlessly with Fury’s operating model while avoiding application rewrites or significant rework by developers.</p><p>With prior experience using Nomad in other projects, we divided the team to run proofs of concept (POCs) simulating Fury’s workloads on Kubernetes and Nomad. Both POCs yielded positive results, but a deeper analysis of critical factors — such as cluster management and service exposure — revealed Kubernetes as the more suitable choice. Its straightforward IP-per-pod configuration, robust autoscaling capabilities, and strong community support (including plugins tailored to multiple cloud providers) gave it a clear edge. In contrast, Nomad’s cluster management presented more significant challenges, mainly due to the need for complementary tools like Consul and the absence of managed clusters on the cloud platforms we used.</p><p>After several months of thorough research — including POCs, RFCs, and comparative analyses — we selected managed Kubernetes solutions:<strong> Elastic Kubernetes Service (EKS) and Google Kubernetes Engine (GKE)</strong>. These platforms best addressed Fury’s operational and technical needs while ensuring scalability and ease of integration with our ecosystem.</p><h3>Lessons learned</h3><p>Reflecting on our journey, several key lessons emerged that can serve as actionable takeaways for others embarking on a similar path:</p><ul><li><strong>Evaluate all options thoroughly:</strong> Conduct comprehensive assessments of multiple platforms, considering not only technical features but also alignment with operational needs.</li><li><strong>Plan for code refactoring</strong>: Anticipate the need for code changes and factor in the potential impact on development timelines and resources.</li><li><strong>Focus on integration</strong>: Choose solutions that can seamlessly integrate with existing architectures to minimize disruptions and reduce the burden on development teams.</li><li><strong>Use proofs of concept:</strong> Implement POCs to test the viability of solutions in the context of your specific workloads and operational requirements before fully committing.</li><li><strong>Leverage community support</strong>: Opt for technologies with strong community backing to ensure access to resources, plugins, and best practices that can ease the implementation process.</li><li><strong>Do not buy the buzz</strong>: Evaluate solutions against your unique needs rather than following trends or popular choices. A solution that meets others’ needs may not suit your specific criteria.</li></ul><p>By keeping these lessons in mind, organizations can better navigate the complexities of adopting new orchestration technologies like Kubernetes and enhance their chances of successful implementation.</p><h3>Conclusion</h3><p>Adopting Kubernetes has significantly enhanced Fury, amplifying the platform’s capabilities and flexibility. By transitioning to managed Kubernetes solutions like EKS and GKE, we resolved operational inefficiencies and seamlessly integrated with our existing container-based architecture. This improvement empowered our platform to better support the needs of over 30,000 microservices, providing developers with a scalable, streamlined environment focused on innovation rather than operational complexities.</p><p>What sets our implementation apart is its <strong>forward-looking design</strong>. By aligning with Kubernetes, we’ve ensured that Fury remains adaptable to future technologies. Our architecture is built to allow a transition to an alternative orchestrator or paradigm with minimal disruption, reflecting our commitment to flexibility and resilience in a constantly evolving tech landscape.</p><p>Kubernetes has improved Fury’s operational power and strengthened its position as a platform built for sustainable growth and innovation. For organizations looking to elevate their internal platforms, this journey underscores the importance of balancing immediate benefits with long-term adaptability.</p><p>Even though we say Kubernetes is our final solution, at Mercado Libre, we’re in a state of <strong>Continuous Beta</strong>. We are always looking for new options. Who knows — in the future, we’ll revisit this article and add an evolution or a new choice. What do you think?</p><p><em>This article was written in collaboration with Marcos Antonio Souza Pinheiro and Marcelo Cordeiro De Quadros.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fb02df289def" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mercadolibre-tech/how-kubernetes-became-the-right-fit-for-mercado-libres-internal-developer-platform-fb02df289def">How Kubernetes became the right fit for Mercado Libre’s internal developer platform</a> was originally published in <a href="https://medium.com/mercadolibre-tech">Tecnología de Mercado Libre</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kubernetes at Mercado Libre]]></title>
            <link>https://medium.com/mercadolibre-tech/kubernetes-at-mercado-libre-ec331bea1866?source=rss-7c02ab1e1e21------2</link>
            <guid isPermaLink="false">https://medium.com/p/ec331bea1866</guid>
            <category><![CDATA[software]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[developer-platform]]></category>
            <category><![CDATA[infrastructure]]></category>
            <category><![CDATA[efficiency]]></category>
            <dc:creator><![CDATA[Juliano Marcos Martins]]></dc:creator>
            <pubDate>Fri, 15 Nov 2024 21:16:43 GMT</pubDate>
            <atom:updated>2025-03-17T17:43:06.995Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SGqDS2rAoWQ8nXFeAd_wmg.png" /></figure><p>At Mercado Libre, managing over 30,000 microservices and supporting 16,000 developers requires a robust and scalable solution. To address these challenges, we adopted Kubernetes (K8s) as the core engine of our internal platform, Fury. This article explores how Kubernetes streamlined our infrastructure management, accelerated software delivery, and improved cost efficiency, enabling our developers to focus on innovation and product creation.</p><p><strong>Fury structure</strong></p><p>Since this article focuses on implementing Kubernetes within the Fury platform, it’s important to have a basic understanding of Fury to better grasp the topics covered. We recommend a <a href="https://medium.com/mercadolibre-tech/the-technological-evolution-at-mercado-libre-fb269776a4e8">preliminary reading </a>on the subject.</p><p>In brief, Fury is an internal developer platform (IDP) composed of cloud applications and services. It provides a web interface and a command-line interface (CLI), allowing developers to create and manage resources. Additionally, the Cloud and Platform teams use a back office to administer and monitor the platform and manage its operations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vkbxKwDjaBKuSnlCOR0ecw.gif" /><figcaption>Image 1: Fury initial page.</figcaption></figure><p><strong>Fury and its abstractions</strong></p><p>In a simplified way, Fury is an abstraction layer developed internally at Mercado Libre. It serves as a bridge between third-party services, such as Amazon Web Services (AWS), Google Cloud Platform (GCP), Datadog, and others, and user applications. Regardless of the provider or partner used, developers generally interact with services through <a href="https://medium.com/mercadolibre-tech/for-devs-by-devs-67a395a03c3f">Software Development Kits (SDKs)</a>, while Fury’s APIs communicate with the providers.</p><p>This means that applications do not communicate directly with cloud services. There is an anti-corruption layer that prevents lock-in, facilitates version updates, and enables switching to similar services without requiring code changes. This abstraction is essential to support the company’s multi-cloud strategy, ensuring flexibility and better cost and security management.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L5F43Cn0hFWFNQ2sg9-dSA.png" /><figcaption>Image 2: Fury serves an abstraction layer between developers’ apps and external services, such as AWS, GCP, and others.</figcaption></figure><p><strong>The genesis: the compute engine</strong></p><p>The compute engine is the Fury component responsible for managing user workloads. When Fury was created in 2015, Kubernetes was still in its early stages and wasn’t mature enough to handle the volume of workloads and technical needs that Mercado Libre required. Thus, adopting instance-based computing services from cloud providers like AWS EC2 and Google Compute Engine was the most natural choice.</p><p>The first computing model developed was called <em>Standard</em>. It serves as an interface between the platform and cloud providers. This model receives platform commands, such as creating or scaling instances, and executes these operations on the providers.</p><p>While the simplified diagram below represents this model, its complexity is much greater. One example is a component called <em>Little Monster (LM)</em>, part of the <em>Standard</em> module, which manages the atomicity of distributed transactions. LM requests instances from the cloud provider and ensures they are ready for use, handling necessary waits and pooling during the creation and initialization process.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bp53A2SD8gWK7DTwmNWjCA.png" /><figcaption>Image 3: <em>Standard</em>, the first compute model for Fury.</figcaption></figure><p>The diagram shows that this model already operates across multiple regions and cloud providers. Since its inception, it has been designed for this purpose, so all auto-scaling management was developed internally as part of the compute module without relying on AWS Auto Scaling Groups (ASGs) or equivalent features from other clouds. This decision was motivated by the need to create a multi-vendor solution, thus justifying the development of this abstraction layer.</p><p>The <em>Standard</em> module has been a reliable component of Fury, operating successfully for many years. It has enabled Mercado Libre to scale and address significant business challenges. However, over time, it presented two challenges that needed solution:</p><ol><li><strong>Low efficiency</strong>: Each replica of an application requires a computing instance, such as an EC2, creating a 1:1 relationship. Even though we employed strategies like reservations, spot instances, savings plans, and ARM instances with Graviton for cost efficiency, there was still room for improvement.</li><li><strong>Limited utilization of native cloud provider resources</strong>: Due to the developed abstractions, the module did not optimally leverage native cloud provider resources and functionalities, limiting the full potential of the capacities offered.</li></ol><p><strong>Alternative study</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WaDr-Dn8PZltuWqhrJorAQ.png" /><figcaption>Image 4: Study of alternatives to replace the <em>Standard</em> model.</figcaption></figure><p>We conducted an extensive study to find a more efficient solution, evaluating various technologies and approaches. Initially, we explored AWS Batch for on-demand resource activation, but it didn’t meet all our needs. We also considered AWS Lambda, but its limitations for long-running tasks made it unsuitable. We looked into container-based solutions like ECS and Cloud Run as well, but their complexity and lack of necessary features led us to dismiss them. After testing Kubernetes (EKS and GKE) and Nomad, we ultimately discarded Nomad and decided to move forward with managed Kubernetes solutions, EKS and GKE, as they best fit our needs.</p><p>This evaluation and its findings are available in <a href="https://medium.com/mercadolibre-tech/how-kubernetes-became-the-right-fit-for-mercado-libres-internal-developer-platform-fb02df289def"><strong>this post</strong></a>.</p><p><strong>Current implementation: compute service with EKS and GKE</strong></p><p>After months of planning and development, we arrived at the current architectural model, named <em>Serverless</em>. Unlike the common concept of serverless computing, which typically refers to Lambda functions, we adopted this name to illustrate the complete lack of direct server knowledge and management required from developers — they interact exclusively with Fury’s abstraction layer, embracing a server-free perspective. The platform, in turn, manages resources transparently, with Serverless serving as a unique differentiator that reflects this philosophy of full automation, thus facilitating adoption.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pDLM5SRHim6QiV5EH5iZew.png" /><figcaption>Image 5: Simplified representation of the Serverless compute model.</figcaption></figure><p>This evolution introduced the <em>Serverless Module</em>, replacing the old Standard Module while retaining the Little Monster (LM) component, ensuring operations’ atomicity. The most notable change lies in the communication layer between the platform and the cloud providers: the new compute module interacts with a solution called <em>Cluster API</em>. It’s worth noting that this Cluster API is not the same as the one defined by Kubernetes; in our context, it abstracts the Kubernetes control plane, acting as a translation layer between various Kubernetes versions and the compute module.</p><p><strong>Cluster API: an efficient abstraction layer</strong></p><p>The Cluster API was developed to address the growing complexity of managing multiple simultaneous Kubernetes versions and to handle APIs that are frequently deprecated over time. This component is designed to minimize the impact of these changes on the compute module, leaving the lifecycle management of Kubernetes versions solely to the Cluster API. This approach also allows us to replace Kubernetes in the future, if necessary, with minimal migration effort to another orchestrator.</p><p><strong>Serverless module: control and scalability</strong></p><p>Unlike the Cluster API, which acts as a wrapper for the control plane, the Serverless Module abstracts the computational “shadings” introduced by clusters. Clusters fragmented what was once a single regional data plane into multiple ones. The Serverless Module<em> </em>is responsible for adapting this new concept to the platform, handling additional complexities such as inferring the most suitable cluster for a given workload.</p><p><strong>Scalability and controlled upgrades</strong></p><p>With over 130,000 instances, the current architecture is already segmented by regions, providers, and other divisions based on criticality and workload type. These segmentations are crucial in our approach to controlled upgrades, especially during data and control plane component updates. When an upgrade is required, the process begins with clusters of lower criticality and test environments to ensure stability. Only after careful validation are changes gradually promoted to higher criticality clusters. This strategy minimizes risks and ensures that service continuity is not compromised.</p><p><strong>Deployment flow</strong></p><p>Now that we’ve explored our engine’s architecture, let’s examine the application deployment flow within the Fury platform. We adopted a GitOps approach to deploy our engine’s internal components; however, this topic deserves a separate discussion.</p><p>There are different deployment strategies within Fury, such as All-in, Blue-Green, and Canary, each catering to specific developer scenarios. However, there are two platform-specific strategies: Safe deployment and Migration:</p><ul><li><strong>Safe deployment</strong>: This strategy is similar to Blue-Green deployment but takes a more gradual and cautious approach. It continuously monitors metrics and makes automated rollback decisions or adjustment recommendations, ensuring a safe and controlled process.</li><li><strong>Migration</strong>: A broader strategy that allows workloads to be moved between vendors, regions, or even between different computational environments (from <em>Standard</em> to <em>Serverless</em> and vice versa), depending on resilience and cost needs.</li></ul><p><strong>Deployment flow details</strong></p><p>In the deployment architecture, Fury triggers the Serverless Module, which initiates the process by requesting the creation of workloads. This request passes through the Cluster API via an Application Load Balancer (Ingress ALB), which distributes the traffic and creates everything necessary to route the applications properly.</p><p>Next, the Cluster API configures the required Kubernetes components, such as ReplicaSets and Horizontal Pod Autoscalers (HPAs). We chose to use ReplicaSets instead of Kubernetes Deployments because our goal is to ensure the proper number of replicas without needing additional resources provided by Deployments, as such strategies were already part of the platform.</p><p><strong>Monitoring and asynchronous control</strong></p><p>Once the workloads are created, the Serverless Module — specifically its Little Monster (LM) component — performs continuous monitoring and handles the asynchronous requests sent to the cluster. The Serverless API Controller (a Kubernetes controller) extends K8S by observing the behavior of the pods and nodes directly in the cluster, keeping the platform informed about any real-time changes. This controller reconciles the state of the cluster with an external state through the “watchers” of these objects, notifying the Serverless Module so that the platform can respond and dynamically adapt.</p><p>This structure allows Fury to perform deployments efficiently and robustly, monitor the state of clusters and workloads, and respond to real-time changes with resilience and security.</p><p><strong>Deployment flow — Blue-Green</strong></p><p>When applying a Blue-Green deployment in Fury, the process follows the same basic flow described earlier but includes some essential specifics.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_VmCr7bJ2bQs7S-Z7TREtg.png" /><figcaption>Image 6: A Blue-Green deployment flow in Fury, illustrating the current and candidate infrastructure.</figcaption></figure><p>In this scenario, the <strong>current</strong> set of workloads in production (the Blue version) is maintained while a new set of workloads (the Green version) is created in parallel. This new set can be deployed in the same cluster or, depending on shard balancing strategies, in a different cluster.</p><p>The creation flow is the same as the standard deployment: the platform activates the Serverless Module, which then requests the Cluster API via the Ingress ALB. This step sets up all the necessary Kubernetes components, such as ReplicaSets and HPAs, replicating the current infrastructure for the new set of workloads.</p><p>Once the Blue-Green deployment is completed, the platform automatically updates its internal state, recording all changes. This way, we maintain continuous and detailed control over both versions of the workloads (Blue and Green), allowing for a safe and organized transition to the new version once the necessary checks are completed.</p><p><strong>Network and traffic swap</strong></p><p>A critical point during the Blue-Green deployment is the progressive traffic redirection from the <strong>current</strong> version to the <strong>candidate</strong>. To achieve this, we employ a specific approach that ensures comprehensive network visibility and rapid synchronization between components.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QSGrxZbpHdVYYQ3MqMG7rA.png" /><figcaption>Image 7: Traffic swap between current and candidate in Fury.</figcaption></figure><p>Every pod inside our clusters have unique and routable IPs from the VPC instead of VIPs (Virtual IP). This allows each pod to have direct network visibility, facilitating communication with other services and reducing the need for entry points per cluster.</p><p>Since we do not use third-party networking products for routing, we developed an internal component called the <em>Mesh Controller</em>. This controller plays a crucial role in the traffic swap process, responding to changes generated by the control plane. As soon as an event is detected, the Mesh Controller synchronizes the state and notifies the control plane API of the platform, that is, our <a href="https://medium.com/mercadolibre-tech/internal-traffic-what-a-crazy-airport-3c9281831df9">Service Mesh</a>.</p><p>This notification automatically updates all Envoy sidecars deployed with the applications. As a result, the routes are adjusted so that the Envoys redirect traffic to the new candidate, completing the traffic transition to the latest version and ensuring that the platform and applications are always aware of the updated route.</p><p><strong>Conclusion</strong></p><p>The journey of Fury at Mercado Libre exemplifies how technological evolution and constant innovation determine the ability to overcome challenges and drive efficiency at scale. Built on a robust Kubernetes foundation, Fury has transcended operational complexities, offering developers an intuitive, secure, and scalable environment. By abstracting infrastructure management and optimizing the deployment flow, Fury allows our engineers to focus on creating real value through code while also enabling the company to adopt strategies like multi-cloud and make strategic decisions with rapid financial impact. This approach positions us to meet current demands and anticipate and overcome future challenges, reaffirming our commitment to an exceptional development experience and continuous evolution.</p><p><strong>Acknowledgments</strong></p><p>This article was written with the collaboration of Marcos Antonio Souza Pinheiro and Marcelo Cordeiro De Quadros.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ec331bea1866" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mercadolibre-tech/kubernetes-at-mercado-libre-ec331bea1866">Kubernetes at Mercado Libre</a> was originally published in <a href="https://medium.com/mercadolibre-tech">Tecnología de Mercado Libre</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The technological evolution at Mercado Libre]]></title>
            <link>https://medium.com/mercadolibre-tech/the-technological-evolution-at-mercado-libre-fb269776a4e8?source=rss-7c02ab1e1e21------2</link>
            <guid isPermaLink="false">https://medium.com/p/fb269776a4e8</guid>
            <category><![CDATA[monolithic-architecture]]></category>
            <category><![CDATA[multi-cloud]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[it]]></category>
            <category><![CDATA[idp]]></category>
            <dc:creator><![CDATA[Juliano Marcos Martins]]></dc:creator>
            <pubDate>Thu, 22 Feb 2024 18:25:16 GMT</pubDate>
            <atom:updated>2024-12-12T14:20:18.098Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NnM6jaufseDJ6QvKau-K5A.png" /></figure><h3>The technological evolution at Mercado Libre: from the monolith to the multicloud platform</h3><p>If you are wondering whether to embrace a <strong>multicloud platform</strong> or not, then you’ve come to the right place. Welcome to our series of articles where we share our experiences in building the main features of the <strong>Fury platform,</strong> an Internal Developer Platform created by Mercado Libre that provides developers with a unified and self-service environment to efficiently create, deploy, manage, and monitor applications.</p><p>Join us on a journey to the heart of Mercado Libre’s tech team, where we create and orchestrate all the applications that make up our ecosystem. Throughout this exploration, you will witness our technological evolution as we move from a monolithic architecture to an integrated, cloud-agnostic, and flexible platform as a service.</p><p>To get to speed with the exponential growth of Mercado Libre, our Tech team has developed a solution that enables massive scaling and provides a world-class user experience to our +15,000 engineers. They use this platform daily to create top-notch applications. Managing over 30,000 microservices running on 100,000 instances in production, our team ensures seamless integration, agility, simplicity, and security.</p><p>The Mercado Libre ecosystem consists of various pillars or business units such as marketplace, fintech, online shops and ERP, logistics, and advertising. These units rely on a single platform, <strong>Fury</strong>, for their development and operation. But how did we come up with this innovative solution?</p><h3><strong>A glimpse into history: Old World</strong></h3><p>Back in 1999, we released the first version of Mercado Libre’s Marketplace, which was built on a monolithic architecture. At that time, the platform consisted of a few hundred physical servers running on a single Oracle database, with only one code repository in which over 200 developers interacted daily. What started as a small-scale solution quickly grew into a behemoth.</p><p>Deployments were carried out on a weekly basis, resulting in frequent delays in the development process as code freezes were required to deliver the solution to the Quality teams. Testing every functionality became a challenge, leading to slow error response times. Additionally, the complex configurations of the environments made it difficult to test new technologies.</p><p>Developers faced significant challenges when deploying their changes on the same codebase. This often resulted in conflicting functionalities, where one functionality would work correctly while the others would break. Scaling the system became significantly challenging, finally leading to a high time-to-market.</p><p>Imagine the chaos — would it be possible to have 3000 developers deploying more than 10 times a day in this scenario?</p><h3><strong>MeliCloud: Embracing innovation for complex workflows</strong></h3><p>Around 2010, Mercado Libre faced a critical decision — to build a “New World” that could break free from constraints an embrace a more scalable infrastructure based on microservices. With the mobile technology boom creating a demand for APIs to handle the growing complexity of workflows, our Cloud &amp; Platform team embarked on a journey of research and experimentation. After careful consideration, we boldly decided to migrate to a cutting-edge platform called <strong>MeliCloud</strong>.</p><p>Melicloud introduced infrastructure as a service, bringing several advantages, including increased developer speed and flexibility. We were able to efficiently manage a large number of interconnected microservices, including:</p><ul><li>17,500 instances</li><li>Over 1,200 traffic pools</li><li>Deployment of over 1,400 instances per day (representing over 10% of the total number of instances)</li><li>Partial service failure support</li></ul><h3><strong>Now that you are into microservices, is chaos controlled?</strong></h3><p>As our focus shifted towards <strong>microservices</strong>, we found ourselves in a precarious situation — was chaos truly under control? Too much flexibility led to a complex scenario where our teams dedicated considerable time to resolving operational production issues instead of focusing on product improvement. We transitioned from a state of utter chaos, where progress seemed impossible, to a state of chaotic freedom, where everyone had unlimited control.</p><p>However, this infrastructure posed significant maintenance challenges given the available resources at that time:</p><ul><li>Numerous environments and configurations</li><li>Complexity in evolving the infrastructure</li><li>Substantial disparities between Development, Stage, and Production environments</li><li>Steep learning curve</li><li>Demanding extensive infrastructure knowledge to operate</li><li>Team expansion and an increase in the number of development centers</li></ul><h3><strong>What were our needs?</strong></h3><p>Our main objective was to streamline operational tasks for engineers, providing them with all the necessary tools for simple development and production management while maintaining a clear separation between frontends and APIs. We required a single location for <strong>infrastructure</strong>, <strong>build</strong>, <strong>deployment</strong>, <strong>metrics</strong>, and <strong>services</strong>.</p><p>We realized that we needed a robust platform that would allow our developers to have an application up and running in just three clicks. Our goal was to enable them to download the app, make changes, and test it while brewing a cup of coffee: easy to run, easier to deploy to production. So, we designed and developed <strong>Fury</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dXQPiUfGmfw79mvEP80uNw.png" /></figure><h3><strong>Fury: Hello, world</strong></h3><p>That’s how <strong>Fury</strong> was born in 2015. It’s an internal developer platform (IDP) built in-house that empowers developers to create, deploy, manage, and monitor applications.</p><p>Here are some highlights:</p><ul><li>A unified platform with a defined technological stack, languages, frameworks, and tools tailored to our needs and quality standards</li><li>Portability and consistency in deployment by using containerization</li><li>Similar and replicable environments with reusable components and services</li><li>Cost management and optimization</li><li>Multicloud capability with cloud provider abstraction</li><li>Ready-to-use deployment infrastructure</li><li>Integrated monitoring tools within the platform</li><li>Simple development workflow</li><li>User-centered UI focused on a platform that is easy to manage and use</li><li>Scalability for products and teams</li></ul><h3><strong>What benefits does Fury bring to Mercado Libre?</strong></h3><p>Fury brings several benefits to Mercado Libre:</p><ol><li><strong>Streamlined Development Process</strong>: Fury provides a centralized, self-service platform where developers can access the necessary tools, services, and infrastructure to build and deploy applications. This improves developer productivity and accelerates the development cycle.</li><li><strong>Reduced Cognitive Load</strong>: By offering a unified platform, Fury relieves developers of the cognitive load associated with navigating multiple systems and processes. This allows them to focus more on developing high-quality applications.</li><li><strong>Enhanced Security and Compliance</strong>: Fury enforces standardized policies and controls, ensuring consistency and reducing risks associated with ad-hoc development practices. This strengthens security and helps maintain compliance with relevant regulations.</li><li><strong>Flexibility and Scalability</strong>: With its multicloud abstraction, Fury enables teams to leverage the most suitable services and resources from different cloud providers. This flexibility and scalability allow Mercado Libre to adapt and grow as needed.</li></ol><p>In summary, Fury has significantly contributed to faster, more efficient, and secure software development at Mercado Libre.</p><h3><strong>Building apps has never been this easy at Mercado Libre</strong></h3><p>To create an application, developers can use the Fury front end. With just a few clicks, they can select the desired application type and technology. Behind the scenes, the platform automatically generates a GitHub code repository with the necessary team permissions, sets up the CI/CD pipeline, and provides a basic scaffolding with a preconfigured containerized image.</p><p>Additionally, Fury offers a command-line interface (CLI) that enables developers to download the application locally, run it, test it, and create versions ready to deploy using the terminal on their computers. This seamless integration not only extends to the infrastructure but also to the developer’s local environment, providing a cohesive development experience.</p><h3><strong>Simplifying application deployment with Scopes</strong></h3><p>At Mercado Libre, we have introduced the concept of <strong>Scopes</strong> as a means of managing application versions, deployments, and segmentation. Scopes serve as a simplified representation of Fury within cloud provider containers like AWS or GCP. With Scopes, applications can quickly transition from the development environment to an integrated infrastructure, enabling efficient testing in a dedicated test or demo scope. Once the final version is ready, it can be deployed to a production scope.</p><p>When creating a scope, the necessary infrastructure is automatically generated, including a load balancer, autoscaling groups, and instances. Traffic is directed to these resources, generating logs, metrics, and monitoring alerts. Fury also provides insights into infrastructure costs and leverages automated optimizations to reduce them. To ensure reliability, critical applications are divided into separate scopes. This approach prevents any failure in one scope from affecting others, enabling a more efficient response to contingencies.</p><p>What does this mean for us? With Fury as our platform, the infrastructure is automatically managed and scaled based on our business needs, adding or removing instances as necessary. This enables us to maximize efficiency and optimize costs.</p><h3><strong>Efficient code integration with Release Process</strong></h3><p>Since 2018, we have implemented a Release Process feature to manage code integration into our applications effectively. This process leverages the concepts of Continuous Integration (CI) and Continuous Delivery (CD). It uses open-source tools to ensure a simple and rapid flow that aligns with our development needs.</p><p>Powering over 26,000 repositories, our Release process automatically runs seven tailored quality validations to uphold the integrity of every application we build. These comprehensive checks include dependencies, branching models, CI, code coverage, and hardcoded credentials. If any check fails, the entire flow is interrupted until the issue is solved. The result? A seamless and efficient code integration process that backs up our developers every step of the way.</p><h3><strong>Deploying with different strategies according to scenario criticality</strong></h3><p>When it comes to deploying our applications, there is no one-size-fits-all approach. Each scenario has its unique requirements and considerations. That’s why Fury offers a range of deployment strategies for developers to choose from according to the scenario’s criticality and the potential impact on the business.</p><p>Some strategies involve reusing existing infrastructure, making them fast and cost-effective. However, they can bedifficult to roll back in case of errors, potentially causing downtime. These strategies are ideal for testing small changes or low-criticality scopes.</p><p>On the other hand, strategies like Blue Green deployment involve creating a new environment and gradually swapping traffic. They are ideal for productive scopes that requiere fast recovery in case of errors. They allow for quick rollback with no downtime and minimize user impact through careful traffic monitoring.</p><p>By providing these different deployment strategies, Fury enables developers to make informed decisions based on the specific needs of each scenario, ensuring efficient and reliable application deployments.</p><h3><strong>Empowering developers with app monitoring tools</strong></h3><p>At Fury, we provide developers with robust app tools to keep their applications running. By focusing on metrics, logs, and monitoring, we detect issues early and minimize potential downtime. From monitoring infrastructure (CPU and memory) to tracking business rules like peak payment processing times, we ensure that nothing slips from our radar.</p><p>Developers have complete ownership over their applications and are equipped with customizable alerts for all kinds of errors. This proactive monitoring culture enables us to take action before problems escalate. With Fury, developers can leverage the power of monitoring services like DataDog, NewRelic, and Opsgenie, with standard monitors tailored to the specific services they are using.</p><h3><strong>Keep driving innovation and growth</strong></h3><p>The technological evolution at Mercado Libre has been remarkable. Evolving our work culture in this way allowed us to iterate on our products in an agile and decoupled manner. At the same time, it has accelerated our innovation processes to accompany Mercado Libre’s exponential growth.</p><p>From the early days of monolithic architecture to the current state of our advanced multicloud platform, we have witnessed tremendous growth and innovation. We have embraced the power of microservices for greater scalability and flexibility. The adoption of containerization technology has revolutionized our development and deployment processes, allowing us to iterate faster and deliver value to our users more efficiently.</p><p>The shift towards a multicloud approach has unlocked new possibilities, providing us with the flexibility to leverage the best services and resources from multiple cloud providers. This strategic decision has not only improved our performance and resilience but has also optimized our costs.</p><h3><strong>Next steps in our journey</strong></h3><p>At Mercado Libre, we are always seeking new opportunities to innovate and push the boundaries of what is possible. That’s why we have formed a strategic alliance with OpenAI, with whom we are exploring the possibilities of generative artificial intelligence (GenAI). We believe that GenAI holds great potential within our ecosystem to create disruptive solutions that bring value to our developers.</p><p>As we continue to evolve and push the boundaries of what is possible, we remain committed to delivering better experiences for our developers. We strive to provide them with the best tools and resources to improve our mission of democratizing commerce and financial services to transform the lives of millions of people in Latin America.</p><p>In our upcoming articles, we will delve deep into various aspects such as traffic security, cost optimization, and our multicloud strategy. These topics are vital to our technological evolution and will showcase the innovative solutions we have implemented to ensure the scalability, resilience, and efficiency of our systems.</p><p>This amazing journey has only just begun, and we invite you to stay tuned for more exciting updates and insights. Together, we will continue to shape the future of technology and revolutionize the way people engage in commerce and financial services.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fb269776a4e8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mercadolibre-tech/the-technological-evolution-at-mercado-libre-fb269776a4e8">The technological evolution at Mercado Libre</a> was originally published in <a href="https://medium.com/mercadolibre-tech">Tecnología de Mercado Libre</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>