μΆμ²: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
μ΄ μμμλ μΈλΆ μμ‘΄μ±μ μ ν μ¬μ©νμ§ μλ μκ·λͺ¨ μΈνλΌμ λν Terraform ꡬμ±(configurations)μ ꡬ쑰ννλ μμ μ½λκ° ν¬ν¨λμ΄ μμ΅λλ€.
νλ‘μ νΈλ₯Όμμνκ³ μ§νν΄ κ°λ©΄μ 리ν©ν λ§νκΈ°μ λ±μ λλ€.
μκ·λͺ¨ 리μμ€ λͺ¨λμ μ ν©
μκ·λͺ¨ λ° μ ν μΈνλΌ λͺ¨λ(μ: )μ μ ν©
μμμ 리μμ€μ μ ν©(20~30κ° λ―Έλ§)
리μμ€ μκ° μ¦κ°νλ κ²½μ°, λͺ¨λ 리μμ€μ λν λ¨μΌ μν νμΌμ Terraform μμ
νλ‘μΈμ€λ₯Ό λλ¦¬κ² λ§λ€ μ μμ΅λλ€(리μμ€ μλ₯Ό μ ννλ €λ©΄ -target μΈμλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€).
μΆμ²: 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κ°)μ μ’μ
νλ‘μ νΈκ° 컀μ§μ λ°λΌ μ΄λ¬ν νκ²½μ μλ‘ μ΅μ μνλ‘ μ μ§νλ κ²μ λμ± μ΄λ €μμ§λλ€. λ°λ³΅ κ°λ₯ν μμ μ μΈνλΌ λͺ¨λ(κΈ°μ‘΄ λͺ¨λ λλ λ΄λΆ λͺ¨λ) μ¬μ©μ κ³ λ €ν΄ λ³΄μΈμ.
μΈνλΌλ¦¬μμ€κ° νκ²½λ³λ‘ μλμ μΌλ‘ λ¬λΌ μΌλ°νν μ μλ κ²½μ°(μ: μ΄λ€ 리μμ€κ° νΉμ νκ²½μ΄λ μΌλΆ μ§μμ μμ)
μΆμ²: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
μ΄ μμμλ λ€μμ μ¬μ©νλ λκ·λͺ¨ μΈνλΌμ λν Terraform ꡬμ±(configurations)μ ꡬ쑰ννλ μμ μ½λκ° ν¬ν¨λμ΄ μμ΅λλ€.
AWS κ³μ 2κ°
μ§μ 2κ³³
2κ°μ κ°λ³ νκ²½(μ무κ²λ 곡μ νμ§ μλ prod λ° stag). κ° νκ²½μ λ³λμ AWS κ³μ μ μ‘΄μ¬νλ©° λ μ§μ κ°μ 리μμ€λ₯Ό ν¬κ΄ν©λλ€
κ° νκ²½μ μμ μ 곡λλ κΈ°μ‘΄ μΈνλΌ λͺ¨λ(alb)μ λ€λ₯Έ λ²μ μ μ¬μ©ν©λλ€.
λ‘컬 λλ ν 리μμ μμ€λ₯Ό μ 곡νλ―λ‘ κ° νκ²½μ κ°μ λ²μ μ λ΄λΆ λͺ¨λ modules/networkμ μ¬μ©ν©λλ€.
μΈνλΌκ°λ Όλ¦¬μ μΌλ‘ λΆλ¦¬λ νλ‘μ νΈμ μ ν©(AWS κ³μ λ³λ)
AWS κ³μ κ°μ 곡μ λ 리μμ€λ₯Ό μμ ν νμκ° μλ κ²½μ°(νκ²½ 1κ° = AWS κ³μ 1κ° = μν νμΌ 1κ°)
νκ²½ κ°μ λ³κ²½ μ¬νμ μ‘°μ ν νμκ° μλ κ²½μ°μ μ ν©
νλ‘μ νΈκ° 컀μ§μ λ°λΌ μ΄λ¬ν νκ²½μ μλ‘ μ΅μ μνλ‘ μ μ§νλ κ²μ λμ± μ΄λ €μμ§λλ€. λ°λ³΅ κ°λ₯ν μμ μ μΈνλΌ λͺ¨λ(κΈ°μ‘΄ λͺ¨λ λλ λ΄λΆ λͺ¨λ) μ¬μ©μ κ³ λ €ν΄ λ³΄μΈμ.
μΈνλΌ λ¦¬μμ€κ° νκ²½λ³λ‘ μλμ μΌλ‘ λ¬λΌ μΌλ°νν μ μλ κ²½μ°(μ: μ΄λ€ 리μμ€κ° νΉμ νκ²½μ΄λ μΌλΆ μ§μμ μμ)