<?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: Xin Lin</title>
    <description>The latest articles on DEV Community by Xin Lin (@xinlin25).</description>
    <link>https://dev.to/xinlin25</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%2F3981889%2F7f832e0b-65a7-4725-b14c-0b16d1009d94.jpeg</url>
      <title>DEV Community: Xin Lin</title>
      <link>https://dev.to/xinlin25</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xinlin25"/>
    <language>en</language>
    <item>
      <title>Arquitectura y Seguridad en la Nube: El próximo nivel del desarrollador</title>
      <dc:creator>Xin Lin</dc:creator>
      <pubDate>Tue, 16 Jun 2026 21:05:59 +0000</pubDate>
      <link>https://dev.to/xinlin25/arquitectura-y-seguridad-en-la-nube-el-proximo-nivel-del-desarrollador-1bnd</link>
      <guid>https://dev.to/xinlin25/arquitectura-y-seguridad-en-la-nube-el-proximo-nivel-del-desarrollador-1bnd</guid>
      <description>&lt;h1&gt;
  
  
  Arquitectura y Seguridad en la Nube: el próximo nivel del desarrollador
&lt;/h1&gt;

&lt;p&gt;Cuando una aplicación web funciona en local, parece que ya esta casi terminada. Pero en realidad todavía queda una parte muy importante: decidir donde va a vivir, como se va a proteger y que pasara si de repente la usan muchas personas a la vez.&lt;/p&gt;

&lt;p&gt;En este articulo voy a explicar, desde el punto de vista de un desarrollador Full-Stack, como llevar una aplicación web al entorno cloud de forma segura. La idea de esta guía es entender los conceptos que permiten tomar buenas decisiones técnicas a la hora de subir nuestra aplicación a la nube.&lt;/p&gt;

&lt;p&gt;Imagen de portada: &lt;a href="https://unsplash.com/@adigold1" rel="noopener noreferrer"&gt;Adi Goldstein&lt;/a&gt; en &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Donde vive mi código: PaaS y modelos de servicio
&lt;/h2&gt;

&lt;p&gt;En cloud hay varias formas de ejecutar una aplicación. Una de las mas importantes para desarrollo web es &lt;strong&gt;PaaS&lt;/strong&gt;, que significa &lt;strong&gt;Platform as a Service&lt;/strong&gt; o Plataforma como Servicio.&lt;/p&gt;

&lt;p&gt;Con PaaS, el proveedor cloud se encarga de gran parte de la infraestructura: servidores, sistema operativo, parches, red, escalado y despliegue, mientras que el equipo de desarrollo se centra mas en el código, las variables de entorno, la seguridad de la aplicación y la experiencia del usuario.&lt;/p&gt;

&lt;p&gt;Para una aplicación web moderna, PaaS suele ser una opción muy cómoda porque permite desplegar sin tener que administrar maquinas virtuales manualmente.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS App Runner
&lt;/h3&gt;

&lt;p&gt;AWS App Runner permite desplegar una aplicación desde código fuente o desde una imagen de contenedor y convertirla en una aplicación web escalable y segura en AWS. Es una opción pensada para reducir la cantidad de infraestructura que el desarrollador tiene que configurar.&lt;/p&gt;

&lt;p&gt;En un escenario real, podría usar App Runner si tengo una API o una aplicación web empaquetada en contenedor y quiero que AWS gestione despliegue, escalado y operaciones básicas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure App Service
&lt;/h3&gt;

&lt;p&gt;Azure App Service es la opción PaaS de Microsoft Azure para ejecutar aplicaciones web, APIs REST y backends móviles sin gestionar directamente la infraestructura.&lt;/p&gt;

&lt;p&gt;Una ventaja importante de Azure App Service es que se integra muy bien con el ecosistema Microsoft: GitHub Actions, Azure DevOps, certificados gestionados y escalado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Cloud Run
&lt;/h3&gt;

&lt;p&gt;Google Cloud Run es una plataforma gestionada para ejecutar código, funciones o contenedores sobre la infraestructura escalable de Google. Es muy interesante porque permite ejecutar aplicaciones en contenedores sin administrar clusters.&lt;/p&gt;

&lt;p&gt;Cloud Run puede escalar automáticamente según el trafico e incluso escalar a cero cuando no hay peticiones. Esto ayuda a ahorrar costes en aplicaciones con trafico irregular.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Seguridad en Cloud: el escudo de la aplicación
&lt;/h2&gt;

&lt;p&gt;Subir una aplicación a la nube no significa que automáticamente sea segura. El cloud da herramientas, pero es el desarrollador quien tiene que usarlas bien.&lt;/p&gt;

&lt;p&gt;La primera idea clave es el &lt;strong&gt;principio de mínimo privilegio&lt;/strong&gt;: cada usuario, servicio o proceso debe tener solo los permisos que necesita.&lt;/p&gt;

&lt;p&gt;En AWS se usa &lt;strong&gt;IAM&lt;/strong&gt; para gestionar usuarios, roles, políticas y permisos. En Azure, el servicio de identidad principal es &lt;strong&gt;Microsoft Entra ID&lt;/strong&gt;, antes llamado Azure Active Directory. En Google Cloud se usa Cloud IAM. Aunque cada proveedor tiene sus nombres, la idea es similar: controlar quien puede hacer que, sobre que recurso y en que condiciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variables de entorno
&lt;/h3&gt;

&lt;p&gt;Uno de los errores mas comunes es dejar una contraseña o token dentro del repositorio. Por ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pwd123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto es peligroso porque si el repositorio se hace publico, esa credencial queda expuesta. La practica correcta es usar variables de entorno:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y el archivo &lt;code&gt;.env&lt;/code&gt; debe estar dentro de &lt;code&gt;.gitignore&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En producción, esas variables se configuran desde el panel de Vercel, Netlify, Azure, AWS o Google Cloud, no dentro del código.&lt;/p&gt;

&lt;h3&gt;
  
  
  Soberanía de datos
&lt;/h3&gt;

&lt;p&gt;La soberanía de datos significa saber donde se almacenan los datos y que leyes se aplican sobre ellos. No es lo mismo guardar información de usuarios europeos en una región europea que en otra zona con normas diferentes.&lt;/p&gt;

&lt;p&gt;Para una aplicación real, especialmente si maneja datos personales, hay que hacerse preguntas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;¿En que región se almacenan los datos?&lt;/li&gt;
&lt;li&gt;¿Hay copias de seguridad en otras regiones?&lt;/li&gt;
&lt;li&gt;¿Quien tiene acceso administrativo?&lt;/li&gt;
&lt;li&gt;¿Se cumplen normas como RGPD si los usuarios son de la Unión Europea?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Escalabilidad y disponibilidad: que pasa si mi web se vuelve viral
&lt;/h2&gt;

&lt;p&gt;Imaginemos que publicamos una web de venta de entradas. Al principio entran 20 personas y todo va bien, pero de repente un influencer comparte el enlace y entran miles de usuarios en pocos minutos.&lt;/p&gt;

&lt;p&gt;En un servidor mal preparado, podrían pasar varias cosas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La CPU se satura.&lt;/li&gt;
&lt;li&gt;La memoria se agota.&lt;/li&gt;
&lt;li&gt;La base de datos recibe demasiadas conexiones.&lt;/li&gt;
&lt;li&gt;La web carga muy lento.&lt;/li&gt;
&lt;li&gt;El servidor deja de responder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La escalabilidad intenta evitar esto. En cloud, muchos servicios pueden crear más instancias automáticamente cuando aumenta el tráfico. Eso se llama &lt;strong&gt;autoescalado&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hay dos formas de verlo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Escalado vertical:&lt;/strong&gt; hacer mas potente una máquina, por ejemplo más CPU o RAM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalado horizontal:&lt;/strong&gt; crear más instancias de la aplicación y repartir el tráfico entre ellas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para aplicaciones modernas, el escalado horizontal suele ser muy importante. Si una instancia no puede con todo, se levantan mas instancias y un balanceador reparte las peticiones.&lt;/p&gt;

&lt;p&gt;La disponibilidad, por otro lado, significa que la aplicación siga funcionando aunque haya fallos. Para mejorarla se usan ideas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desplegar en varias zonas.&lt;/li&gt;
&lt;li&gt;Usar balanceadores de carga.&lt;/li&gt;
&lt;li&gt;Tener backups.&lt;/li&gt;
&lt;li&gt;Separar frontend, backend y base de datos.&lt;/li&gt;
&lt;li&gt;Monitorizar errores y tiempos de respuesta.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Comparación rápida: AWS, Azure y Google Cloud
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plataforma&lt;/th&gt;
&lt;th&gt;Servicio ejemplo&lt;/th&gt;
&lt;th&gt;Ideal para&lt;/th&gt;
&lt;th&gt;Punto fuerte&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;td&gt;App Runner&lt;/td&gt;
&lt;td&gt;Apps web/API en contenedores&lt;/td&gt;
&lt;td&gt;Integration con ecosistema AWS y despliegue gestionado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;td&gt;App Service&lt;/td&gt;
&lt;td&gt;Webs, APIs y stacks variados&lt;/td&gt;
&lt;td&gt;Integration con Microsoft, GitHub y Entra ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Cloud&lt;/td&gt;
&lt;td&gt;Cloud Run&lt;/td&gt;
&lt;td&gt;Contenedores serverless&lt;/td&gt;
&lt;td&gt;Escalado automation, HTTPS gestionado y posible escala a cero&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La mejor plataforma no existe sino que depende del equipo, el presupuesto, los conocimientos previos, la región de datos y el tipo de aplicación.&lt;/p&gt;

&lt;p&gt;Para empezar, Vercel o Netlify son opciones muy prácticas. Para una API o backend mas completo, Azure App Service o Google Cloud Run pueden ser alternativas muy buenas.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Actividad práctica: El Desafío del Viral
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Situación
&lt;/h3&gt;

&lt;p&gt;Has lanzado una web de venta de entradas y un influencer la acaba de compartir. Tienes 5 minutos para que la web sea escalable y no muera por el trafico.&lt;/p&gt;

&lt;h3&gt;
  
  
  Objetivo
&lt;/h3&gt;

&lt;p&gt;Desplegar una web estática en una plataforma cloud moderna y comprobar que usa buenas practicas básicas de seguridad.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 1: sube el código a GitHub o GitLab
&lt;/h3&gt;

&lt;p&gt;Crea un repositorio con tu web. Puede ser una pagina HTML/CSS/JS sencilla o una aplicación hecha con React, Angular, Vue o Astro.&lt;/p&gt;

&lt;p&gt;Antes de subirlo, revisa que no haya datos sensibles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
node_modules/
dist/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El archivo &lt;code&gt;.env&lt;/code&gt; debe estar ignorado por Git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 2: conéctalo a Vercel, Netlify, AWS Amplify o Azure Static Web Apps
&lt;/h3&gt;

&lt;p&gt;Para una web estática, Vercel y Netlify son muy directos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inicia sesión.&lt;/li&gt;
&lt;li&gt;Importa el repositorio.&lt;/li&gt;
&lt;li&gt;Elige el framework si lo detecta automáticamente.&lt;/li&gt;
&lt;li&gt;Pulsa deploy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;La plataforma construirá la web y la publicara en una URL HTTPS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 3: configura una variable de entorno
&lt;/h3&gt;

&lt;p&gt;Aunque una web estática no debería exponer secretos privados en el navegador, este paso sirve para practicar una buena costumbre.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PUBLIC_SITE_NAME=Entradas Cloud
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si fuera una aplicación con backend, una contraseña de base de datos nunca debería estar escrita en el código ni visible en el frontend. Debe configurarse como secreto o variable de entorno en el proveedor de despliegue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 4: comprueba el certificado SSL
&lt;/h3&gt;

&lt;p&gt;Abre la URL desplegada y revisa que empiece por:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;También debe aparecer el candado en el navegador. Esto indica que la comunicación viaja cifrada mediante TLS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resultado esperado
&lt;/h3&gt;

&lt;p&gt;Al terminar la práctica, deberías tener:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un repositorio publico sin secretos.&lt;/li&gt;
&lt;li&gt;Una web publicada en una plataforma cloud.&lt;/li&gt;
&lt;li&gt;HTTPS activo.&lt;/li&gt;
&lt;li&gt;Variables de entorno configuradas correctamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Test de autoevaluación
&lt;/h2&gt;

&lt;p&gt;A continuación tenemos un test de 10 preguntas en Kahoot para comprobar si se han entendido los conceptos principales.&lt;/p&gt;

&lt;p&gt;Enlace al test: &lt;a href="https://create.kahoot.it/share/arquitectura-y-seguridad-en-la-nube/2ed630f8-74a4-4215-8838-d2a184d27c7b" rel="noopener noreferrer"&gt;Kahoot - Arquitectura y Seguridad en la Nube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes consultadas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html" rel="noopener noreferrer"&gt;AWS App Runner Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/app-service/overview" rel="noopener noreferrer"&gt;Azure App Service overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/overview/what-is-cloud-run" rel="noopener noreferrer"&gt;Google Cloud Run documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html" rel="noopener noreferrer"&gt;AWS IAM documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>webdev</category>
      <category>security</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
