๋ฐ์ํ
Elastic Beanstalk์ด๋?
- Elastic Beanstalk์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฐ๋ฐ์ ์ค์ฌ์ ์๋น์ค์ ๋๋ค.
- Elastic Beanstalk๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ํ๊ฒฝ(์ธํ๋ผ)์ ๋ํด ์์ธํ ์์ง ๋ชปํด๋ AWS์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ก๋ํ๊ธฐ๋งํ๋ฉด Elastic Beanstalk์์ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์ค๋นํ๊ณ , ๋ก๋๋ฐธ๋ฐ์ฑ๊ณผ ์ฉ๋ ํ์ฅ(scaling), ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ชจ๋ํฐ๋ง์ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- Beanstalk๋ JAVA, Tomcat, Python, Go, Node.js, Ruby, PHP, Docker, .Net Core on Linux, .Net on Windows ๋ฑ์ ์ง์ํฉ๋๋ค.
- Beanstalk ์์ฒด๋ ๋ฌด๋ฃ์ด์ง๋ง ASG, ELB ๋ฑ์ ๋ํด์ ์๊ธ์ ์ง๋ถํฉ๋๋ค.
- Beanstalk๋ 1๊ฐ์ ์ธํฐํ์ด์ค์์ EC2, ASG, ELB, RDS ๋ฑ์ ์๋น์ค๋ฅผ ์์์ ๋ฐฐํฌํ๋ Managed service์ ๋๋ค.
- Beanstalk์ ๋ด๋ถ์ ์ผ๋ก cloudformation ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- Beanstalk์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฐํฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
Elastic Beanstalk์ ๊ฐ๋ (concepts)
Application
- Environments, Versions, Environment configurations๊ณผ ๊ฐ์ Beanstalk ๊ตฌ์ฑ์์์ ๋ ผ๋ฆฌ์ ์งํฉ์ ๋๋ค.
- Elastic Beanstalk์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ ์ ์ผ๋ก ํด๋์ ์ ์ฌํฉ๋๋ค.
Application version
- Appliation version์ ๋ ์ด๋ธ์ด ์ง์ ๋ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ฝ๋์ ๋ฌถ์์ ๋๋ค.
- Application์๋ ์ฌ๋ฌ ๊ฐ์ Application version์ด ์์ ์ ์๊ณ , ๊ฐ Application version์ ๊ณ ์ ํฉ๋๋ค.
- Application version์ Application์ ์ผ๋ถ์ ๋๋ค.
Environment
- Environment๋ Application version์ ์คํ ์ค์ธ AWS ๋ฆฌ์์ค ๋ชจ์์ ๋๋ค.
- 1๊ฐ์ Environment๋ 1๊ฐ์ Application Version๋ง ์คํ ๊ฐ๋ฅํ์ง๋ง 1๊ฐ์ Application Version์ ์ฌ๋ฌ ๊ฐ์ Environment์์ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- dev ํ๊ฒฝ, prod ํ๊ฒฝ, test ํ๊ฒฝ ๋ฑ์ ๋ง๋ค์ด ์ฌ์ฉํ ์ ๋์์ต๋๋ค.
Environment tier
- Environment tier๋ Environment์์ ์คํํ๋ Application์ ์ ํ์ ์ง์ ํ๊ณ ํ๋ก๋น์ ๋ํ ๋ฆฌ์์ค๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- Environment tier๋ 2๊ฐ๊ฐ ์์ต๋๋ค.
- Web server environment
- HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์์คํ
์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
- HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์์คํ
์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
- Worker environment
- Amazon SQS Queue์์ ์์
์ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ์์คํ
์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
- Amazon SQS Queue์์ ์์
์ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ์์คํ
์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
Elastic Beanstalk์ deploy options
- All at once
- ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฐํฌ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ฒ์ ์ ๋ชจ๋ ์ธ์คํด์ค์ ๋์์ ๋ฐฐํฌํฉ๋๋ค.
- ๋ฐฐํฌ๊ฐ ์ํ๋๋ ๋์์๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์ ์ ๋์ ์๋น์ค๊ฐ ๋ถ๊ฐ๋ฅ(๋ค์ด ํ์์ด ๋ฐ์)ํฉ๋๋ค.
- ๋ฐฐํฌ ์ค์ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- Rolling
- ์ผ๋ง๋งํผ ์ธ์คํด์ค๋ฅผ ์ค๋จํ ์ง๋ฅผ ๊ฒฐ์ ํ๊ณ , ์์ฐจ์ ์ผ๋ก ์ ๋ฐ์ดํธํด ๋๊ฐ๋ ๋ฐฐํฌ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ผ๋ง๋งํผ ์ธ์คํด์ค๋ฅผ ์ค๋จํ ์ง๋ฅผ ๊ฒฐ์ ํ ๊ฒ์ Batch Size์ด๋ผ๊ณ ํฉ๋๋ค.
- Batch size๋งํผ ์ธ์คํด์ค๊ฐ ์ฐจ๋ก๋๋ก ๋ฐฐํฌ๊ฐ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด Batch size๊ฐ 2๋ผ๋ฉด 2๊ฐ์ฉ ์์ฐจ์ ์ผ๋ก ์ ๋ฐ์ดํธ ๋ฉ๋๋ค.
- ๋ฐฐํฌ ์ค์ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- Rolling with additional batches
- Rolling์ ์ธ์คํด์ค๊ฐ ์ค๋จ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ์ค๊ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฉ๋(capacity)๊ฐ ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค.
- additional batches๋ ์ถ๊ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฉ๋์ด ์ค์ด๋ค์ง ์๋๋ก ํด์ค๋๋ค.
- ๋ฐฐํฌ ์ค์ ์ถ๊ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
- Immutable
- Immutable ์ ๋ฐ์ดํธ๋ Rolling์ ๋์์ ๋๋ค.
- Rolling ์ ๋ฐ์ดํธ๋ ์ ๋ฐ์ดํธ์ ์คํจํ๋ฉด Rollback ์ ๋ฐ์ดํธ๋ฅผ ์ํํ์ฌ ์ด์ ์ ์ํ๋ก ์ฒ์ฒํ ๋์๊ฐ์ผ ํฉ๋๋ค.
- Immutable ์ ๋ฐ์ดํธ๋ ์์ ASG์ ์์ฑํ์ฌ ์ ๋ฐ์ดํธํ๋๋ฐ ์ ๋ฐ์ดํธ์ ์คํจํ๋ฉด ์์ ASG๋ง ์ข ๋ฃํ๋ฉด ๋ฉ๋๋ค.
- Immutable ์ ๋ฐ์ดํธ๋ ์์ ASG๋ฅผ ์์ฑํ๊ณ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๊ธฐ์กด์ ASG์ ์ธ์คํด์ค๊ฐ ํจ๊ป ์๋น์ค๋ฅผ ํ๋ค๊ฐ ์์ ASG์ ๋จ์ผ ์ธ์คํด์ค๊ฐ ์ ์์ด๋ผ๊ณ ํ๋จ์ด ๋๋ฉด ๊ธฐ์กด ASG์ ์ธ์คํด์ค ์๋งํผ ์์ ASG์ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ ๋ฐ์ดํธ๋ ๋ชจ๋ ์ธ์คํด์ค์ ์ํ ํ์ธ์ด ๋๋๋ฉด ์์ ASG์ ์๋ ๊ธฐ์กด ASG๋ก ์ฎ๊ธฐ๊ณ ์์ ASG๋ฅผ ์ข ๋ฃํฉ๋๋ค.
- ๋ฐฐํฌ ์ค์ ์ถ๊ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
- Traffic splitting
- ์นด๋๋ฆฌ์ ํ ์คํธ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์์ ๋๋ ํธ๋ํฝ์ ์ผ๋ถ๋ฅผ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ผ๋ก ์ ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํ์ธํ ํ ๊ฒ์ฆ์ด ์๋ฃ๋๋ฉด ์ ๋ฒ์ ์ผ๋ก ์์ ํ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ๊ธฐ์กด ASG ๊ทธ๋ฃน๊ณผ ๊ฐ์ ์ฉ๋์ ์์ ASG๋ฅผ ์์ฑํ๊ณ ํธ๋ํฝ ๋ถํ (Traffic split)ํ์ฌ ์๋ก์ด ์ดํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- Traffic splitting ๋ฐฐํฌ์๋ Application Load Balancer๊ฐ ํ์ํฉ๋๋ค.
- Blue Green
- Blue Green ๋ฐฐํฌ๋ ๊ธฐ์กด ํ๊ฒฝ(Blue)์์ ์์ ํ ์๋ก์ด ํ๊ฒฝ(Green)์ ์์ฑํ ๋ค์ ์ ํํ๋ ๊ฒ์ผ๋ก ๋ค์ดํ์์ด ์์ต๋๋ค.
- Green ํ๊ฒฝ์ ๋ํ ๊ฒ์ฆ์ด ๋๋๋ฉด URL์ ์ ํํด Green ํ๊ฒฝ์ ๋ฉ์ธ ํ๊ฒฝ์ผ๋ก ๋ง๋ญ๋๋ค.(Swap URL)
Elastic Beanstalk application version lifecycle
- Elastic Beanstalk์ ์ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ก๋ํ ๋๋ง๋ค application version์ด ์์ฑ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก application version quota๋ 1000๊ฐ๋ก qutoa ์ฆ์ค์ ์์ฒญํ์ง ์์ผ๋ฉด 1000๊ฐ๊น์ง๋ง ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
- Application version lifecycle policy๋ฅผ ์ ์ฉํ๋ฉด application version์ ๊ฐ์๊ฐ quota์ ๋๋ฌํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- lifecycle policy๋ ์ค๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ญ์ , ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ญ์ ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
.ebextensions
- Elastic Beanstalk์ ๊ตฌ์ฑ ํ์ผ์ .ebextensions์ ์ถ๊ฐํ์ฌ environment์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐ ๋ฆฌ์์ค(RDS, ElasticCache ๋ฑ)์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- Elastic Beanstalk์์ environment๋ฅผ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ๊ตฌ์ฑ ํ์ผ์ YAML ๋๋ JSON ํ์์ผ๋ก ํ์ฅ๋ช ์ .config์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- .ebextensions ํด๋์ .ebextensions/network-load-balancer.config์ ๊ฐ์ด ๊ตฌ์ฑํ์ผ์ ์์น์ํค๋ฉด ๋ฉ๋๋ค.
๋ฐ์ํ
'๐ AWS > AWS Developer - Associate' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] Developer Associate #6 S3 (0) | 2024.07.26 |
---|---|
[AWS] Developer Associate #5 ElastiCache (0) | 2024.05.24 |
[AWS] Developer Associate #4 ์ปจํ ์ด๋(ECR, ECS, EKS) (0) | 2024.05.12 |
[AWS] Developer Associate #3 Elastic Load Balancing(ELB) (0) | 2024.04.14 |
[AWS] Developer Associate #2 Relational DB(RDS, Aurora) (0) | 2024.04.01 |