<?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: Pepe Molinero Moles</title>
    <description>The latest articles on DEV Community by Pepe Molinero Moles (@pepe_molinero_moles).</description>
    <link>https://dev.to/pepe_molinero_moles</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2853921%2Fe784312e-9aa8-4378-9c6a-c96181ee58fc.jpg</url>
      <title>DEV Community: Pepe Molinero Moles</title>
      <link>https://dev.to/pepe_molinero_moles</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pepe_molinero_moles"/>
    <language>en</language>
    <item>
      <title>AWS SAM y Terraform: De desconocidos a aliados en mi experiencia en la nube</title>
      <dc:creator>Pepe Molinero Moles</dc:creator>
      <pubDate>Mon, 17 Feb 2025 08:53:49 +0000</pubDate>
      <link>https://dev.to/pepe_molinero_moles/aws-sam-y-terraform-de-desconocidos-a-aliados-en-mi-experiencia-en-la-nube-4mnf</link>
      <guid>https://dev.to/pepe_molinero_moles/aws-sam-y-terraform-de-desconocidos-a-aliados-en-mi-experiencia-en-la-nube-4mnf</guid>
      <description>&lt;p&gt;Hola mundo! &lt;br&gt;
Este es mi primer post, soy Pepe Molinero, DevOps especializado en arquitectura AWS, y espero que lo que os voy a contar os resulte útil. Todo surgió a partir de una experiencia que tuve recientemente y que me hizo replantearme cómo gestiono mi infraestructura.&lt;/p&gt;

&lt;p&gt;He escuchado y leído en varios sitios sobre el servicio de &lt;strong&gt;AWS SAM&lt;/strong&gt; y su funcionamiento como &lt;strong&gt;IaC&lt;/strong&gt; que desconocía, ya que solo había trabajado con &lt;strong&gt;Terraform&lt;/strong&gt; y no sabía que se tenía tanto en cuenta. Por lo que me informé sobre &lt;strong&gt;AWS SAM&lt;/strong&gt; o &lt;strong&gt;AWS Serverless Application Model&lt;/strong&gt;, que es un framework especializado para el desarrollo de aplicaciones &lt;strong&gt;serverless&lt;/strong&gt; en &lt;strong&gt;AWS&lt;/strong&gt;. Su principal fortaleza radica en simplificar la definición y despliegue de funciones &lt;strong&gt;Lambda&lt;/strong&gt;, &lt;strong&gt;API Gateway&lt;/strong&gt; y otros servicios relacionados, utilizando plantillas &lt;strong&gt;YAML&lt;/strong&gt; que se traducen en &lt;strong&gt;CloudFormation&lt;/strong&gt;. Esto resulta en un flujo de trabajo optimizado para proyectos enfocados exclusivamente en &lt;strong&gt;serverless&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por otro lado, ya conocía &lt;strong&gt;Terraform&lt;/strong&gt;, que para el que no la haya trabajado mucho, solo comentar que es una herramienta de &lt;strong&gt;IaC&lt;/strong&gt; de carácter agnóstico, es decir, que permite gestionar infraestructuras en múltiples nubes. Con su lenguaje declarativo &lt;strong&gt;HCL&lt;/strong&gt;, &lt;strong&gt;Terraform&lt;/strong&gt; se suele conocer más por su capacidad para manejar infraestructuras complejas, gestionar el estado y facilitar la reutilización mediante módulos y variables. Esta flexibilidad lo ha convertido en la elección más común en entornos empresariales y multi-cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características Principales y Diferencias Clave
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AWS SAM&lt;/strong&gt; se centra en el ámbito &lt;strong&gt;serverless&lt;/strong&gt;, ofreciendo comandos integrados como &lt;code&gt;sam build&lt;/code&gt; y &lt;code&gt;sam deploy&lt;/code&gt; que facilitan el empaquetado, testeo y despliegue de funciones &lt;strong&gt;Lambda&lt;/strong&gt;. Su sintaxis simplificada y optimizada permite a los desarrolladores concentrarse en la lógica de la aplicación sin preocuparse demasiado por la infraestructura subyacente.&lt;/p&gt;

&lt;p&gt;En cambio, &lt;strong&gt;Terraform&lt;/strong&gt; sobresale por su capacidad para gestionar una infraestructura completa y heterogénea. Su manejo de estado, que puede ser local o remoto, permite un control detallado sobre los cambios en la infraestructura, mientras que su soporte para módulos facilita la organización y el mantenimiento en entornos complejos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparativa y Casos de Uso
&lt;/h2&gt;

&lt;p&gt;Si bien &lt;strong&gt;AWS SAM&lt;/strong&gt; está diseñado específicamente para aplicaciones &lt;strong&gt;serverless&lt;/strong&gt;, &lt;strong&gt;Terraform&lt;/strong&gt; se posiciona como la herramienta ideal cuando se requiere gestionar una infraestructura variada o cuando se trabaja en un entorno multi-cloud. Por ejemplo, para proyectos enfocados en funciones &lt;strong&gt;Lambda&lt;/strong&gt; y otros servicios sin servidor, &lt;strong&gt;SAM&lt;/strong&gt; ofrece una experiencia directa y simplificada. En cambio, si además de las funciones &lt;strong&gt;serverless&lt;/strong&gt; se requiere la creación de redes, bases de datos u otros recursos, &lt;strong&gt;Terraform&lt;/strong&gt; brinda la versatilidad necesaria para un manejo integral.&lt;/p&gt;

&lt;p&gt;La integración en pipelines de &lt;strong&gt;CI/CD&lt;/strong&gt; también varía según la herramienta. Con &lt;strong&gt;SAM&lt;/strong&gt;, el flujo suele incluir etapas de empaquetado, construcción y despliegue mediante sus comandos propios, aprovechando la potencia de &lt;strong&gt;CloudFormation&lt;/strong&gt;. &lt;strong&gt;Terraform&lt;/strong&gt;, en cambio, se basa en la ejecución de &lt;code&gt;terraform plan&lt;/code&gt; y &lt;code&gt;terraform apply&lt;/code&gt;, gestionando el estado de manera centralizada y permitiendo una mayor flexibilidad al integrarse con diversas herramientas de automatización.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integración Conjunta: Una Opción Viable
&lt;/h2&gt;

&lt;p&gt;En 2022, &lt;strong&gt;AWS&lt;/strong&gt; anunció oficialmente el soporte para integrar &lt;strong&gt;AWS SAM&lt;/strong&gt; con &lt;strong&gt;Terraform&lt;/strong&gt;, lo que abrió la puerta a una colaboración más estrecha entre ambas herramientas. Esta iniciativa permite a los equipos aprovechar lo mejor de cada una, combinando la especialización de &lt;strong&gt;SAM&lt;/strong&gt; en aplicaciones &lt;strong&gt;serverless&lt;/strong&gt; con la robustez y flexibilidad de &lt;strong&gt;Terraform&lt;/strong&gt; para gestionar la infraestructura general.&lt;/p&gt;

&lt;p&gt;Un enfoque común es utilizar &lt;strong&gt;Terraform&lt;/strong&gt; para definir y provisionar la infraestructura base en &lt;strong&gt;AWS&lt;/strong&gt; – como &lt;strong&gt;VPCs&lt;/strong&gt;, roles &lt;strong&gt;IAM&lt;/strong&gt; y buckets &lt;strong&gt;S3&lt;/strong&gt; – incluyendo una configuración superficial de las funciones &lt;strong&gt;Lambda&lt;/strong&gt;. Paralelamente, &lt;strong&gt;AWS SAM&lt;/strong&gt; se encarga de detallar la configuración &lt;strong&gt;serverless&lt;/strong&gt;, permitiendo definir aspectos específicos como triggers, variables de entorno y configuraciones de &lt;strong&gt;API Gateway&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esta integración requiere delimitar claramente las responsabilidades de cada herramienta para evitar solapamientos o conflictos en la gestión del estado. Además, es importante orquestar el pipeline de &lt;strong&gt;CI/CD&lt;/strong&gt; de forma que, primero, se genere y empaquete la aplicación &lt;strong&gt;serverless&lt;/strong&gt; con &lt;strong&gt;SAM&lt;/strong&gt;, y luego &lt;strong&gt;Terraform&lt;/strong&gt; se encargue de desplegar el paquete en el contexto de la infraestructura predefinida.&lt;/p&gt;




&lt;p&gt;En este post he querido compartir mi viaje de descubrimiento en el que, partiendo de mi conocimiento en &lt;strong&gt;IaC&lt;/strong&gt; con &lt;strong&gt;Terraform&lt;/strong&gt;, me adentré en el mundo de &lt;strong&gt;AWS SAM&lt;/strong&gt; y su integración conjunta. Aunque se trata de un tema que ha resonado especialmente en 2022 y 2023, recabar la información y documentarla me ha servido para tener una idea más clara de sus usos.&lt;/p&gt;

&lt;p&gt;Si queréis seguir informándoos, os recomiendo echar un vistazo al &lt;a href="https://dev.to/aws-builders/leveraging-infrastructure-as-code-iac-for-aws-lambda-a-comparative-analysis-of-aws-sam-terraform-and-serverless-framework-2ia8"&gt;post de Kasun de Silva en Dev.to&lt;/a&gt;, que realizó un excelente análisis comparativo en 2023.&lt;/p&gt;

&lt;p&gt;Y para aquellos que deseen hacer una prueba en local, &lt;strong&gt;AWS&lt;/strong&gt; publicó en 2023 una guía bastante clara y con el paso a paso de la implementación usando una &lt;strong&gt;Lambda&lt;/strong&gt;, todo en el entorno local pero perfectamente funcional en la nube. Podéis consultarla &lt;a href="https://aws.amazon.com/es/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform" rel="noopener noreferrer"&gt;aquí&lt;/a&gt;.&lt;/p&gt;

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