All pages
Powered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

Terraform을 μ‚¬μš©ν•œ μ†Œκ·œλͺ¨ 인프라

좜처: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform

이 μ˜ˆμ‹œμ—λŠ” μ™ΈλΆ€ μ˜μ‘΄μ„±μ„ μ „ν˜€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ†Œκ·œλͺ¨ 인프라에 λŒ€ν•œ Terraform ꡬ성(configurations)을 κ΅¬μ‘°ν™”ν•˜λŠ” 예제 μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  • ν”„λ‘œμ νŠΈλ₯Όμ‹œμž‘ν•˜κ³  μ§„ν–‰ν•΄ κ°€λ©΄μ„œ λ¦¬νŒ©ν† λ§ν•˜κΈ°μ— λ”±μž…λ‹ˆλ‹€.

  • μ†Œκ·œλͺ¨ λ¦¬μ†ŒμŠ€ λͺ¨λ“ˆμ— 적합

  • μ†Œκ·œλͺ¨ 및 μ„ ν˜• 인프라 λͺ¨λ“ˆ(예: )에 적합

  • μ†Œμˆ˜μ˜ λ¦¬μ†ŒμŠ€μ— 적합(20~30개 미만)

λ¦¬μ†ŒμŠ€ μˆ˜κ°€ μ¦κ°€ν•˜λŠ” 경우, λͺ¨λ“  λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 단일 μƒνƒœ νŒŒμΌμ€ Terraform μž‘μ—… ν”„λ‘œμ„ΈμŠ€λ₯Ό 느리게 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€(λ¦¬μ†ŒμŠ€ 수λ₯Ό μ œν•œν•˜λ €λ©΄ -target 인수λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€).

terraform-aws-atlantis

Terraform

Terraform을 μ‚¬μš©ν•œ 쀑간 규λͺ¨ 인프라

좜처: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform

이 μ˜ˆμ‹œμ—λŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜λŠ” 쀑간 규λͺ¨ 인프라에 λŒ€ν•œ Terraform ꡬ성(configurations)을 κ΅¬μ‘°ν™”ν•˜λŠ” 예제 μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  • AWS 계정 2개

  • 2개의 별도 ν™˜κ²½(아무것도 κ³΅μœ ν•˜μ§€ μ•ŠλŠ” prod 및 stage). 각 ν™˜κ²½μ€ λ³„λ„μ˜ AWS 계정에 쑴재

  • 각 ν™˜κ²½μ€ μ—μ„œ μ œκ³΅λ˜λŠ” κΈ°μ‘΄ 인프라 λͺ¨λ“ˆ(alb)의 λ‹€λ₯Έ 버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • 둜컬 λ””λ ‰ν† λ¦¬μ—μ„œ μ†ŒμŠ€λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ 각 ν™˜κ²½μ€ 같은 λ²„μ „μ˜ λ‚΄λΆ€ λͺ¨λ“ˆ modules/network을 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • 인프라가 λ…Όλ¦¬μ μœΌλ‘œ λΆ„λ¦¬λœ ν”„λ‘œμ νŠΈμ— 적합(λ³„λ„μ˜ AWS 계정듀이 μ“°μž„)

  • AWS 계정 간에 곡유된 λ¦¬μ†ŒμŠ€λ₯Ό μˆ˜μ •ν•  ν•„μš”κ°€ μ—†λŠ” 경우(ν™˜κ²½ 1개 = AWS 계정 1개 = μƒνƒœ 파일 1개)에 μ’‹μŒ

ν”„λ‘œμ νŠΈκ°€ 컀짐에 따라 μ΄λŸ¬ν•œ ν™˜κ²½μ„ μ„œλ‘œ μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜λŠ” 것은 λ”μš± μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€. 반볡 κ°€λŠ₯ν•œ μž‘μ—…μ— 인프라 λͺ¨λ“ˆ(κΈ°μ‘΄ λͺ¨λ“ˆ λ˜λŠ” λ‚΄λΆ€ λͺ¨λ“ˆ) μ‚¬μš©μ„ κ³ λ €ν•΄ λ³΄μ„Έμš”.

ν™˜κ²½ 간에 λ³€κ²½ 사항을 μ‘°μ •ν•  ν•„μš”κ°€ μ—†λŠ” κ²½μš°μ— 적합
  • μΈν”„λΌλ¦¬μ†ŒμŠ€κ°€ ν™˜κ²½λ³„λ‘œ μ˜λ„μ μœΌλ‘œ 달라 μΌλ°˜ν™”ν•  수 μ—†λŠ” 경우(예: μ–΄λ–€ λ¦¬μ†ŒμŠ€κ°€ νŠΉμ • ν™˜κ²½μ΄λ‚˜ 일뢀 지역에 μ—†μŒ)

  • Terraform Registry

    Terraform을 μ‚¬μš©ν•œ λŒ€κ·œλͺ¨ 인프라

    좜처: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform

    이 μ˜ˆμ‹œμ—λŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜λŠ” λŒ€κ·œλͺ¨ 인프라에 λŒ€ν•œ Terraform ꡬ성(configurations)을 κ΅¬μ‘°ν™”ν•˜λŠ” 예제 μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

    • AWS 계정 2개

    • μ§€μ—­ 2κ³³

    • 2개의 κ°œλ³„ ν™˜κ²½(아무것도 κ³΅μœ ν•˜μ§€ μ•ŠλŠ” prod 및 stag). 각 ν™˜κ²½μ€ λ³„λ„μ˜ AWS 계정에 μ‘΄μž¬ν•˜λ©° 두 μ§€μ—­ κ°„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό ν¬κ΄„ν•©λ‹ˆλ‹€

    • 각 ν™˜κ²½μ€ μ—μ„œ μ œκ³΅λ˜λŠ” κΈ°μ‘΄ 인프라 λͺ¨λ“ˆ(alb)의 λ‹€λ₯Έ 버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.

    • 둜컬 λ””λ ‰ν† λ¦¬μ—μ„œ μ†ŒμŠ€λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ 각 ν™˜κ²½μ€ 같은 λ²„μ „μ˜ λ‚΄λΆ€ λͺ¨λ“ˆ modules/network을 μ‚¬μš©ν•©λ‹ˆλ‹€.

    여기에 μ„€λͺ…λœ 것과 같은 λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” Terragrruntλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ 얻을 수 μžˆλŠ” 이점이 맀우 λΆ„λͺ…ν•΄μ§‘λ‹ˆλ‹€. λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

    • μΈν”„λΌκ°€λ…Όλ¦¬μ μœΌλ‘œ λΆ„λ¦¬λœ ν”„λ‘œμ νŠΈμ— 적합(AWS 계정 별도)

    • AWS 계정 간에 곡유된 λ¦¬μ†ŒμŠ€λ₯Ό μˆ˜μ •ν•  ν•„μš”κ°€ μ—†λŠ” 경우(ν™˜κ²½ 1개 = AWS 계정 1개 = μƒνƒœ 파일 1개)

    • ν™˜κ²½ 간에 λ³€κ²½ 사항을 μ‘°μ •ν•  ν•„μš”κ°€ μ—†λŠ” κ²½μš°μ— 적합

    ν”„λ‘œμ νŠΈκ°€ 컀짐에 따라 μ΄λŸ¬ν•œ ν™˜κ²½μ„ μ„œλ‘œ μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜λŠ” 것은 λ”μš± μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€. 반볡 κ°€λŠ₯ν•œ μž‘μ—…μ— 인프라 λͺ¨λ“ˆ(κΈ°μ‘΄ λͺ¨λ“ˆ λ˜λŠ” λ‚΄λΆ€ λͺ¨λ“ˆ) μ‚¬μš©μ„ κ³ λ €ν•΄ λ³΄μ„Έμš”.

  • 인프라 λ¦¬μ†ŒμŠ€κ°€ ν™˜κ²½λ³„λ‘œ μ˜λ„μ μœΌλ‘œ 달라 μΌλ°˜ν™”ν•  수 μ—†λŠ” 경우(예: μ–΄λ–€ λ¦¬μ†ŒμŠ€κ°€ νŠΉμ • ν™˜κ²½μ΄λ‚˜ 일뢀 지역에 μ—†μŒ)

  • Terraform Registry
    Terragruntλ₯Ό μ‚¬μš©ν•œ μ½”λ“œ ꡬ쑰 예제