Osman Recai Ödemis
Blog about technology

Blog about technology

Intro to Infrastructure as Code (IaC) in AWS context

Intro to Infrastructure as Code (IaC) in AWS context

Osman Recai Ödemis's photo
Osman Recai Ödemis
·Sep 24, 2021·

2 min read

Hello devs

This post is about following AWS picture:

iac.png

Ok .. We have here in the cloud parts of the picture following AWS cloud components:

  • Cloudformation - Infrastructure as Code service from AWS to deploy aws components

  • S3 - object storage service, you can deploy here big data

  • Cloudfront - CDN sevice from AWS

  • Lambda - Serverless on AWS 🚀

  • ....

the list can be around 200 services 😀

To deploy these AWS services you have many options, basically you can use the AWS console. But if you want more reproducible architecture with CI/CD chain or deployments over stages with many accounts, in Cloud-Native development there are solutions named under the buzzword IaC (Inrastrucutre as Code) .

IaC code creates your infrastructure which is composed of cloud services, like S3. The advantage is we can handle your infrastructure like source code 😀

Entering Cloudformation

Cloudformation is IaC service from AWS which accepts yml or json formatted files and deploys the described infrastructure from these files. Yes, Cloudformation is basically a yml or json file 😀

For example following snippet describes an S3-Bucket (yml-formatted):

 MyS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: !Join
        - '-'
        - - !Ref S3BucketName
          - !Ref 'AWS::Region'

The problem with Cloudformation is, these yml or json files can be very complex for big cloud architectures. Refactoring can be disaster, therefore over the years many IaC frameworks are developed, so we enter IaC Frameworks or abstractions over Cloudformation

There are much more frameworks, every one with his strength and different paradigm.

All these frameworks produces in AWS as cloud provider, Cloudformation code (yml-formatted) which creates and deploys your services. Framworks like CDK, Serverless Framework or SST is only abstraction over Cloudformation, to make it easier to develop your infrastructure.

For example following SST-Snippet creates an S3-Bucket named Uploads.

let bucket = new sst.Bucket(this, "Uploads");

You see the difference, SST framework in this case uses another abstraction layer over CDK and has a programming paradigm for creating IaC 😀

Happy Coding 😀

 
Share this