ν΄λΉ μ리μ¦λ 3κ°μ κΈλ‘ ꡬμ±λμ΄μμ΅λλ€. κ° λ¨κ³μ μμΈν μ¬νμ μλ λ§ν¬λ₯Ό μ°Έμ‘°ν΄μ£ΌμΈμ
- 1νΈ Spring Boot μλ² μμ±νκΈ°
- 2νΈ Elastic Beanstalk μμ±νκΈ°
- 3νΈ Github Actions μ μνκΈ°
- ν΄λΉ κΈμ μ€μ΅ μ½λ λ° github repository
μ§λ μκ°...
μ§λ μκ° μ°λ¦¬λ Spring Boot λ₯Ό μ΄μ©ν΄μ Application μλ²λ₯Ό μμ±νκ³ github μ push νλ μμ κΉμ§ λ§μ³€λ€.
μ΄λ² μκ°μλ Elastic Beanstalk μ λν΄μ μμλ³΄κ³ μ€μ λ‘ μμ±μ ν΄λ³΄λλ‘ νμ.
Elastic Beanstalk μ λν΄μ λ μμΈν
Elastic Beanstalk μ λν΄μ λ€μ ν λ² μ μν΄λ³΄μ.
Elastic Beanstalk λ μ ν리μΌμ΄μ μ μ€ννλ AWS μΈνλΌμ λν΄μ μμΈν μμ§ λͺ»ν΄λ ν΄λΌμ°λμ λΉ λ₯΄κ² λ°°ν¬νκ³ κ΄λ¦¬ν μ μκ² νλ λꡬμ΄λ€.
μ΄λ¬ν λꡬλ₯Ό ν΅ν΄μ μ°λ¦¬λ Auto Scaling, μ©λμ λν Provisining, Load Balancing, Monitoring μ μμ½κ² μνν μ μκ³ , κ·Έμ λ°λ₯Έ κ΄λ¦¬ 볡μ‘μ±μ μ€μ΄κ² λλ€.
EBλ AWS CLIλ EB CLI λ₯Ό ν΅ν΄μ ꡬμ±ν μ μμ§λ§ λ€λ₯Έ 리μμ€λ€κ³Ό λ§μ°¬κ°μ§λ‘ EB μΉ Console μ΄ μ‘΄μ¬νλ€.
μμΈν μ¬νμ AWS Elastic Beanstalk Docs μμ νμΈν μ μλ€.
μΆκ°μ μΌλ‘ EBμ λν μ¬μ©μ λͺ¨λ 무λ£μ΄λ©° EBλ₯Ό ν΅ν΄ μμ±λλ μΈμ€ν΄μ€μ νν΄μλ§ κ³ΌκΈμ΄ λλ€λ μ₯μ μ΄ μλ€.
Elastic Beanstalk κ°λ
μμ Docs μμ λμ¨ κ°λ λ€μ λΉ λ₯΄κ² μ 리νμλ©΄ λ€μκ³Ό κ°λ€
- μ ν리μΌμ΄μ
, Application
- νκ²½, λ²μ λ° κ΅¬μ±μ ν¬ν¨ν Elastic Beanstalk κ΅¬μ± μμμ λ Όλ¦¬μ 컬λ μ
- κ°λ μ μΌλ‘ ν΄λμ μ μ¬ν¨
- μ ν리μΌμ΄μ
λ²μ , Application version
- μΉ μ ν리μΌμ΄μ μ λ°°ν¬ κ°λ₯ν μ½λμ νΉμ λ²μ
- λ²μ μ λ°°ν¬ κ°λ₯ν μ½λκ° ν¬ν¨λ S3 κ°μ²΄λ₯Ό κ°λ¦¬ν΄
- Uniqueness λ₯Ό 보μ₯
- νκ²½, Environment
- μ ν리μΌμ΄μ λ²μ μ μ€ν μ€μΈ AWS 리μμ€μ λͺ¨μ
- νκ²½μ μμ±νλ©΄ Elastic Beanstalk μμ μ¬μ©μκ° μ§μ ν μ ν리μΌμ΄μ μ λ²μ μ μ€ννλλ° νμν AWS 리μμ€λ₯Ό νλ‘λΉμ λ
- νκ²½ ν°μ΄, Environment Tier
- νκ²½μμ μ€νλλ μ ν리μΌμ΄μ
μ μ νμ νλ‘λΉμ λν 리μμ€λ₯Ό κ²°μ
- HTTP μμ²μ μ²λ¦¬νλ μ ν리μΌμ΄μ
μ
μΉ μλ² νκ²½ ν°μ΄
μμ μ€νλ¨ - SQS λκΈ°μ΄μμ κ°μ Έμ€λ λ°±μλ νκ²½μ
μμ μ νκ²½ ν°μ΄
μμ κ²°μ λ¨
- HTTP μμ²μ μ²λ¦¬νλ μ ν리μΌμ΄μ
μ
- νκ²½μμ μ€νλλ μ ν리μΌμ΄μ
μ μ νμ νλ‘λΉμ λν 리μμ€λ₯Ό κ²°μ
- νκ²½ ꡬμ±, Environment Configuration
- 리μμ€μ μλ λ°©λ²μ μ μνλ νλΌλ―Έν° λ° μ€μ μ λͺ¨μ
- μ μ₯λ ꡬμ±, Saved Configuration
- κ³ μ ν νκ²½ ꡬμ±μ μμ±νκΈ° μν μμμ
- νλ«νΌ, Platform
- OS, Runtime, Web Server, WAS λ± Beanstalk κ΅¬μ± μμμ μ‘°ν©
μ£Όλ‘ μ°λ¦¬λ Application κ³Ό Envorionment λ₯Ό λ€λ£¨κ² λ κ²μΈλ°, κ·Έλλ μμλμ
EB μμ±νκΈ°
Elastic Beanstalk Web Console μ λ€μ΄κ°μ μμ±νκΈ° λ²νΌμ ν΄λ¦νλ©΄ λ€μκ³Ό κ°μ UI κ° λμ€κ² λλ€.
첫λ²μ§Έλ‘ Application Name μ μ§μ ν΄μ€μΌ νλλ°, μΆνμ μ°λν Github Actions μμλ μ΄ Application Name μ ν λλ‘ EBλ₯Ό μλ³νκΈ° λλ¬Έμ μ μ ν μ΄λ¦μΌλ‘ μ μ§μ΄μΌ νλ€.
μλ AWS Web Console μ΄ μ ꡬμ±λμ΄μκΈ° λλ¬Έμ μ΄λ €μμ μμ κ²μ΄λ€.
μ κΉ μ΄ν΄λ³΄μλ©΄,
- μ¬μ μ€μ μ ν΅ν΄ κ³ κ°μ©μ±μ μ ννκ² λλ©΄ μλ‘κ² λ°°ν¬λ μμ μ Auto-Scaling μ μννλ€.
- μ ν리μΌμ΄μ μ½λ λ 무μμ μ ννλλΌλ μκ΄μ΄ μλ€. λ€λ§ μν μ ν리μΌμ΄μ μ μ΄μ©νλ©΄ AWS μμ μ 곡νλ μ½λκ° μ΄κΈ°μ λμκ°λ―λ‘ μν μ ν리μΌμ΄μ μ μ νν΄μ£Όλλ‘ νλ€.
λ€μκ³Ό κ°μ΄ ꡬμ±ν΄μ£Όκ³ μμ±μ νμ.
μ΄κΈ° μ€μ μ μν΄ κΈ°λ€λ¦¬λ€ 보면 λ€μκ³Ό κ°μ΄ EBκ° μμ±λλ€.
μμ±ν λ λλ΅ 5λΆ? μ λ κ±Έλ Έλκ² κ°λ€. λ§μ½ κ³μν΄μ μμ±μ΄ λμ§ μλλ€λ©΄ EB νμΌλ‘ λμκ°μ μλ‘κ³ μΉ¨μ ν΄λ³΄μ!
EB Load Balancing μΌλ‘ Spring Boot μλ² ν¬μλ© νκΈ°
μ΄μ EBμ Load Balancing μ€μ μ μ‘°κΈ μμ ν κ²μ΄λ€.
μ΄μ λ μ°λ¦¬κ° λ§λ Application Server λ κΈ°λ³Έμ μΌλ‘ 8080 ν¬νΈλ‘ λμκ°μ§λ§ EBμ default λ 5000 portλ‘ λμκ°κΈ° λλ¬Έμ 80 ν¬νΈμ 8080 ν¬νΈλ₯Ό ν¬νΈ ν¬μλ© μμΌμ€μΌνλ€.
κ·Έλμ EBμ κ΅¬μ± νμμ λ‘λ λ°Έλ°μ± μΉμ μ λ€μ΄κ°λ³΄μ
κ·Έλ° λ€ λ€μκ³Ό κ°μ΄ νΈμ§νκ³ μ μ₯νλ€
κ·ΈλΌ μ΄μ EBλ₯Ό μν μ€μ μ λͺ¨λ λ§μ³€λ€.
μ΄μ Github Actions κ° μ κ·Όν μ μλλ‘ Programming Access κΈ°λ°μ IAM μ λ§λ€μ΄λ³΄μ
Github Actions λ₯Ό μν IAM μμ±
IAM μ AWS 리μμ€μ λν μ‘μΈμ€λ₯Ό μμ νκ² μ μ΄νλ μλΉμ€μ΄λ€.
μμΈν μ¬νμ AWSμ λ‘κ·ΈμΈ νλ 2κ°μ§ λ°©μ (λ£¨νΈ μ¬μ©μμ IAM μ¬μ©μ) μμ νμΈνλλ‘ νκ³ κ³μ μ΄μ΄ μ§νν΄λ³΄λ €νλ€.
IAM λμ보λμ μ¬μ©μ νμΌλ‘ κ°μ μλ‘μ΄ μ¬μ©μλ₯Ό μΆκ°ν΄μ£Όμ.
λ§μ½ κΈ°μ‘΄μ μ¬μ©μκ° μ‘΄μ¬νκ³ ACCESS_KEY μ SECRET_KEY λ₯Ό μκ³ μλ€λ©΄ ν΄λΉ ν€λ₯Ό μ΄μ©ν΄λ 무방νλ€.
κ·Έλ¦¬κ³ μ¬μ©μ μ νμμ Programming Access λ°©μμ μ ννκ³ AdministratorAccess-AWSElasticBeanstalk κΆνμ λΆμ¬νλ€.
μ μμ±μ΄ λμλ€λ©΄ .csv νμΌμ λ€μ΄λ‘λ ν μ μλλ°, Github Actions μμ μΈμ¦μ μν΄ νμνλ κΌ κ°μ§κ³ μμ΄μΌ νλ€.
.csv νμΌμ μ λ§νλ©΄ λ€μ΄λ°κ³ μμ ν κ³³μ 보κ΄νμ!!
μ΄λ κ² ν΄μ EBμ μμ±μ λͺ¨λ λ§μΉκ² λμλ€.
μ¬μ€ μμ κ³Όμ λ€μμ μμ£Ό λ§μ AWS Resource λ€μ΄ μ¬μ©λμλ€.
μ°λ¦¬λ μΌμΌμ΄ μ€μ μ νμ§ μλλΌλ Elastic Beanstalk λ₯Ό μ΄μ©νμ¬ μμ½κ² νκ²½μ ꡬμ±ν μ μλ€.
λ€μ μκ°μλ λ°©κΈ μμ±ν EBλ₯Ό Github Actions κ³Ό μ°λν΄λ³΄λλ‘ νμ
λκΈ