Full_Stack developer

AWS CloudFormation์œผ๋กœ ์ธํ”„๋ผ ์ž๋™ํ™” ๋ฐ ๊ด€๋ฆฌ ๋ณธ๋ฌธ

Devops/AWS

AWS CloudFormation์œผ๋กœ ์ธํ”„๋ผ ์ž๋™ํ™” ๋ฐ ๊ด€๋ฆฌ

develkbh 2025. 4. 10. 17:41


๐Ÿ“ฃ AWS CloudFormation์œผ๋กœ ์ธํ”„๋ผ ์ž๋™ํ™” ๋ฐ ๊ด€๋ฆฌ

๐Ÿงญ ์™œ ์ธํ”„๋ผ ์ž๋™ํ™”๊ฐ€ ํ•„์š”ํ• ๊นŒ?
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด, ์„œ๋ฒ„, DB, ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ๋“ฑ ์ธํ”„๋ผ๋ฅผ ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฑด ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
์ธํ”„๋ผ ์ž๋™ํ™”๋Š” ํ™˜๊ฒฝ์„ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ๋™์ผํ•œ ์ธํ”„๋ผ๋ฅผ ๋ฐ˜๋ณต ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ ์ค‘์‹ฌ์— ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ AWS CloudFormation์ž…๋‹ˆ๋‹ค.


โœ… 1. AWS CloudFormation์ด๋ž€?

โ–ถ AWS ๋ฆฌ์†Œ์Šค(EC2, RDS, S3, VPC ๋“ฑ)๋ฅผ **์ฝ”๋“œ ํ˜•ํƒœ์˜ ํ…œํ”Œ๋ฆฟ(YAML/JSON)**์œผ๋กœ ์ •์˜ํ•˜๊ณ ,
ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ”„๋ผ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

  • Infrastructure as Code (IaC) ์‹คํ˜„
  • ์ˆ˜๋™ ์„ค์ • ์—†์ด ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๋ฐ˜๋ณต ๊ตฌ์ถ• ๊ฐ€๋Šฅ
  • ๋ณ€๊ฒฝ ์ด๋ ฅ ์ถ”์  ๋ฐ ์ž๋™ ๋กค๋ฐฑ ๊ธฐ๋Šฅ ์ œ๊ณต

๐Ÿ“ฆ 2. ํ…œํ”Œ๋ฆฟ์˜ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

CloudFormation์€ YAML ๋˜๋Š” JSON ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


 

[yaml]

 

AWSTemplateFormatVersion: '2010-09-09'
Description: My first CloudFormation Template
Resources:
  MyBucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: my-sample-bucket


  • Resources: ์ƒ์„ฑํ•  AWS ๋ฆฌ์†Œ์Šค ์ •์˜
  • Parameters: ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ์ •์˜ (์˜ˆ: ๋ฆฌ์ „, ์ธ์Šคํ„ด์Šค ํƒ€์ž…)
  • Outputs: ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค ์ •๋ณด ์ถœ๋ ฅ

๐Ÿ’ก 3. ์‹ค์ „ ์‚ฌ์šฉ ํ๋ฆ„

  1. ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ
    • YAML ๋˜๋Š” JSON์œผ๋กœ AWS ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ์–ธ
  2. ์Šคํƒ(Stack) ์ƒ์„ฑ
    • AWS ์ฝ˜์†” ๋˜๋Š” CLI์—์„œ ์Šคํƒ ์ƒ์„ฑ → ๋ฆฌ์†Œ์Šค ์ž๋™ ์ƒ์„ฑ
  3. ์—…๋ฐ์ดํŠธ & ๋ฐฐํฌ
    • ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • → ์Šคํƒ ์—…๋ฐ์ดํŠธ → ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ๋ฐ˜์˜๋จ
  4. ๋กค๋ฐฑ ๋ฐ ์‚ญ์ œ
    • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋กค๋ฐฑ
    • ์Šคํƒ ์‚ญ์ œ ์‹œ ๋ฆฌ์†Œ์Šค๋„ ์ž๋™ ์ œ๊ฑฐ

๐Ÿ’ฌ 4. CloudFormation vs ์ˆ˜๋™ ์„ค์ •

ํ•ญ๋ชฉCloudFormation์ˆ˜๋™ ์„ค์ •
๋ฐ˜๋ณต ๊ฐ€๋Šฅ์„ฑ O (ํ…œํ”Œ๋ฆฟ ์žฌ์‚ฌ์šฉ) X (๋งค๋ฒˆ ์ง์ ‘ ์„ค์ •)
์‹ค์ˆ˜ ๋ฐฉ์ง€ O (์ž๋™ํ™”, ์ฝ”๋“œ ๊ธฐ๋ฐ˜) X (์‚ฌ๋žŒ์ด ํ•˜๋‹ค ๋ณด๋ฉด ์˜ค๋ฅ˜)
๋ฒ„์ „ ๊ด€๋ฆฌ O (Git์œผ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ) X (์„ค์ • ๋‚ด์—ญ ์ถ”์  ์–ด๋ ค์›€)
ํ™•์žฅ์„ฑ O (๋งค์šฐ ๋†’์Œ) โ–ณ (๊ด€๋ฆฌ ํฌ์ธํŠธ ๋งŽ์•„์ง)

โœจ 5. ์‹ค์ „ ์˜ˆ: EC2 + RDS ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ


[yaml]

 

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-xxxxxxxx
  MyRDS:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceClass: db.t3.micro
      Engine: mysql
      MasterUsername: admin
      MasterUserPassword: password123


→ ์ด ํ…œํ”Œ๋ฆฟ ํ•˜๋‚˜๋กœ EC2์™€ RDS๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค!


๐Ÿ” ๋งˆ๋ฌด๋ฆฌ

AWS CloudFormation์„ ์‚ฌ์šฉํ•˜๋ฉด, โœ”๏ธ ์ธํ”„๋ผ ๊ตฌ์ถ• ์†๋„๋ฅผ ๋†’์ด๊ณ 
โœ”๏ธ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์•ˆ์ •์ ์œผ๋กœ ๋ณต์ œํ•˜๊ณ 
โœ”๏ธ ์˜ค๋ฅ˜๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ”„๋ผ๋Š” ์ด์ œ ํด๋ฆญ์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋กœ!
CloudFormation์€ DevOps ๋ฌธํ™”์™€ ์ž๋™ํ™”์˜ ํ•ต์‹ฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค ๐Ÿ˜Š