<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luis</title>
    <description>The latest articles on DEV Community by Luis (@luis_d301c3ab18fcfad97ba1).</description>
    <link>https://dev.to/luis_d301c3ab18fcfad97ba1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4009841%2Fa370349b-ceeb-4fa5-ac74-99132c33ee99.png</url>
      <title>DEV Community: Luis</title>
      <link>https://dev.to/luis_d301c3ab18fcfad97ba1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luis_d301c3ab18fcfad97ba1"/>
    <language>en</language>
    <item>
      <title>No puedes escalar lo que no puedes medir</title>
      <dc:creator>Luis</dc:creator>
      <pubDate>Tue, 30 Jun 2026 16:33:52 +0000</pubDate>
      <link>https://dev.to/luis_d301c3ab18fcfad97ba1/no-puedes-escalar-lo-que-no-puedes-medir-284h</link>
      <guid>https://dev.to/luis_d301c3ab18fcfad97ba1/no-puedes-escalar-lo-que-no-puedes-medir-284h</guid>
      <description>&lt;p&gt;El título suena a regaño, pero es una realidad que he visto repetirse: software que crece sin medirse desde el inicio termina siendo imposible de mantener.&lt;/p&gt;

&lt;p&gt;Es como un niño que nunca va al médico, todo parece bien hasta que no lo está, y entonces ya es tarde para prevenir.&lt;/p&gt;

&lt;p&gt;El software debería medirse desde su etapa inicial. No con herramientas enterprise ni sobre-ingeniería, con lo mínimo necesario para saber cómo está tu sistema internamente.&lt;/p&gt;

&lt;p&gt;Para eso diseñé un modelo de fases basado en 4 recursos fundamentales que reflejan cómo se está comportando la carga de tu sistema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;RAM&lt;/li&gt;
&lt;li&gt;Disco&lt;/li&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fase 1: Escalar verticalmente (exprimir primero)
&lt;/h2&gt;

&lt;p&gt;Antes de agregar más máquinas, exprime la que tienes. Escalar verticalmente (más CPU/RAM a la misma instancia) te da dos cosas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Una perspectiva real de cuánto aguanta tu sistema antes de necesitar complejidad adicional.&lt;/li&gt;
&lt;li&gt;Una referencia inicial de costos: sabes cuánto pagarás cuando eventualmente necesites más instancias.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No tiene sentido distribuir un sistema que no has medido en una sola máquina. Primero entiende dónde está el cuello de botella.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fase 2: Entiende qué parte del sistema está gritando
&lt;/h2&gt;

&lt;p&gt;Antes de escalar horizontalmente, identifica exactamente dónde duele:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU al 100%: Primero identifica la causa. Puede ser un algoritmo ineficiente, consultas costosas, serialización, compresión, cifrado o simplemente una carga legítima que ya superó la capacidad del nodo. Optimiza cuando sea posible; si el problema es capacidad, entonces escala CPU.&lt;/li&gt;
&lt;li&gt;RAM saturada: Analiza por qué la memoria está creciendo. Puede ser una caché demasiado grande, un memory leak, consultas que cargan más datos de los necesarios o simplemente un patrón de uso esperado. La memoria alta no siempre significa que exista un problema.&lt;/li&gt;
&lt;li&gt;Disco lento: Revisa el patrón de I/O. Puede ser la base de datos, escritura intensiva de logs o simplemente un volumen que ya no da más. Antes de cambiar infraestructura, entiende qué está generando ese tráfico.&lt;/li&gt;
&lt;li&gt;Red saturada: No solo revises el ancho de banda. También analiza latencia, cantidad de llamadas entre servicios, tamaño de payloads y tráfico innecesario. Muchas veces el problema no es la red, sino cómo la estamos utilizando.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hay una métrica que normalmente olvidamos y que termina siendo la más importante: la latencia. El usuario no sabe cuánta CPU consume tu sistema ni cuánta RAM tiene. Lo único que percibe es cuánto tarda en responder. Por eso vale la pena medir P50, P95 y P99 además del uso de recursos.&lt;/p&gt;

&lt;p&gt;Solo cuando agotaste la capacidad vertical del nodo y ya identificaste el cuello de botella real, pasas a escalar horizontalmente, es decir, agregar más nodos. No antes.&lt;/p&gt;

&lt;p&gt;Escalar horizontalmente sin entender por qué un solo nodo dejó de ser suficiente es, muchas veces, tirar dinero al problema en lugar de resolver la causa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fase 3: Escalar horizontalmente (distribuir la carga)
&lt;/h2&gt;

&lt;p&gt;Ya exprimiste el nodo, ya identificaste los cuellos de botella. Ahora sí: distribuyes.&lt;/p&gt;

&lt;p&gt;Pero “escalar horizontalmente” no es una sola cosa. Hay varios ejes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escalar la base de datos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replicación: múltiples copias para distribuir lecturas (líder-seguidor, multi-líder o sin líder).&lt;/li&gt;
&lt;li&gt;Particionado: dividir los datos en shards para que ningún nodo cargue con todo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Escalar la aplicación&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Múltiples instancias detrás de un load balancer.&lt;/li&gt;
&lt;li&gt;Auto Scaling basado en métricas (CPU, requests por segundo, etc.).&lt;/li&gt;
&lt;li&gt;Stateless por diseño. Si tu aplicación guarda estado en memoria, escalar será mucho más difícil.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Escalar la red&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CDN para assets y contenido estático.&lt;/li&gt;
&lt;li&gt;Rate limiting para proteger el backend.&lt;/li&gt;
&lt;li&gt;Compresión y optimización de payloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Escalar el sistema como un todo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desacoplar servicios (de monolito a microservicios o, al menos, servicios independientes).&lt;/li&gt;
&lt;li&gt;Arquitecturas orientadas a eventos para reducir el acoplamiento entre servicios.&lt;/li&gt;
&lt;li&gt;Queues para absorber picos de carga sin perder solicitudes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El objetivo no es tener más servidores. Es darle al usuario final una mejor experiencia y al sistema la capacidad de crecer sin romperse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Escalar no es agregar servidores. Es un proceso que empieza midiendo, sigue identificando dónde duele y termina distribuyendo con intención.&lt;/p&gt;

&lt;p&gt;La secuencia importa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mide: si no sabes cómo está tu sistema, cualquier decisión será a ciegas.&lt;/li&gt;
&lt;li&gt;Exprime: escala verticalmente antes de distribuir.&lt;/li&gt;
&lt;li&gt;Identifica: entiende qué componente es realmente el cuello de botella.&lt;/li&gt;
&lt;li&gt;Distribuye: escala horizontalmente solo aquello que realmente necesita ser escalado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La mayoría de sistemas no necesitan Kubernetes ni veinte microservicios. Necesitan algo mucho más simple: entender cómo se comportan. Cuando puedes medir tu sistema, dejas de tomar decisiones por intuición y empiezas a hacerlo con evidencia.&lt;/p&gt;

&lt;p&gt;En el siguiente post voy a entrar en cómo implementar observabilidad desde cero para medir todo esto en la práctica.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
