23A. Elastic Beanstalk์ผ๋ก Node.js ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ ์์ฑํ๊ธฐ
23A. Elastic Beanstalk์ผ๋ก Node.js ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ ์์ฑํ๊ธฐ ๊ด๋ จ
Elastic Beanstalk์ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ก๋ํ๋ ๊ณต๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ Application์ด๋ผ๊ณ ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ํ๋ซํผ์ ํ๊ฒฝEnvironment์ด๋ผ๊ณ ํฉ๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ์ ์์ฑํ๊ณ , ๊ฐ๋จํ ๋ฌธ์์ด์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
AWS ์ฝ์๋ก ์ ์ํ ๋ค ๋ฉ์ธ ํ๋ฉด์์ Deployment & Management์ Elastic Beanstalk์ ํด๋ฆญํฉ๋๋ค.
์ค๋ฅธ์ชฝ ์์์ Elastic Beanstalk์ ๋ฆฌ์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ฉด ์ฌ๊ธฐ์ ์ ํํ ๋ฆฌ์ ์ AWS ๋ฆฌ์์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด ์ฑ ์์๋ ์ฐ๋ฆฌ๋๋ผ์์ Tokyo ๋ฆฌ์ ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
์์ฑํ Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋๋ ์์ ๋ ๊ทธ๋ฆผ 23-5๊ณผ ๊ฐ์ ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค. ์์ชฝ Create New Application์ ํด๋ฆญํฉ๋๋ค(Select a Platform์์ ํ๋ซํผ์ ์ ํํ๊ณ Launch Now ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ต์ ์ค์ ์์ด ๋ฐ๋ก ์์ฑ๋ฉ๋๋ค).
์ Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํฉ๋๋ค.
- Application name: ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. exampleapp๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- Description: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ช ์ ๋๋ค. ์ ๋ ฅํ์ง ์์๋ ์๊ด ์์ต๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ํ๊ฒฝ(Environment)์ ์์ฑํฉ๋๋ค. ํ๊ฒฝ์ EC2 ์ธ์คํด์ค, Auto Scaling, ELB ๋ฑ์ ์กฐํฉํ ํ๋ซํผ์ ๋ปํฉ๋๋ค.
- Launch a new environment running this application: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ํ๊ฒฝ์ ์์ฑํ๋ ์ต์ ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ์ด ์์ผ๋ฉด ์คํํ ์ ์์ผ๋, ๋์ค์๋ผ๋ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ฏธ ์์ฑ๋ ํ๊ฒฝ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
- Environment tier: ํ๊ฒฝ ์ข
๋ฅ์
๋๋ค. Web Server์ ์ ํํฉ๋๋ค.
- Web Server: ์ธํฐ๋ท์์ ์ ์ํ ์ ์๋ ์น ์๋ฒ์ ๋๋ค.
- Worker: ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ํ ํ๊ฒฝ์ ๋๋ค. ์ด ํ๊ฒฝ์ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ด ์์ง ์์ต๋๋ค. ์์ปค์ ์น ์๋ฒ๋ SQS(Simple Queue Service)๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํฉ๋๋ค.
- Predefined configuration: ๊ฐ๋ฐ ์ธ์ด์
๋๋ค. Node.js๋ฅผ ์ ํํฉ๋๋ค.
- Docker๋ก ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ๋ ค๋ฉด Docker๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค.
- Environment Type: ํ๊ฒฝ์ ๊ตฌ์ฑ ๋ฐฉ์์
๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Load Balancing, autoscaling: ๋ถํ ๋ถ์ฐ๊ณผ ์๋ ํ์ฅ์ ์ฌ์ฉํฉ๋๋ค.
- Single Instance: EC2 ์ธ์คํด์ค ํ๋๋ง ์ฌ์ฉํฉ๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์คํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ค๋ฅผ ์ ๋ก๋ํ๊ฑฐ๋ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํํฉ๋๋ค.
- Sample application: Elastic Beanstalk์์ ์ ๊ณตํ๋ ์์ ์์ค์ ๋๋ค.
- Upload your own: ์ฌ์ฉ์๊ฐ ๊ฐ๊ณ ์๋ ์์ค๋ฅผ ์ ๋ก๋ํฉ๋๋ค.
- S3 URL: S3 ๋ฒํท์ ์ ์ฅ๋ ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
Elastic Beanstalk ํ๊ฒฝ์ URL์ ์ค์ ํฉ๋๋ค. ์น ๋ธ๋ผ์ฐ์ ์์ ์ด URL์ ์ ์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
- Environment name: ํ๊ฒฝ์ ์ด๋ฆ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Environment URL: ํ๊ฒฝ์ URL์ ๋๋ค. URL์ ์ ์ผํด์ผ ํ๋ฏ๋ก Check availability ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ค๋ณต๋์ง ์๋์ง ํ์ธํฉ๋๋ค. ์ค๋ณต๋๋ฉด ๋ค๋ฅธ URL์ ์ ๋ ฅํฉ๋๋ค.
- Description: ํ๊ฒฝ์ ์ค๋ช ์ ๋๋ค. ์ ๋ ฅํ์ง ์์๋ ์๊ด์์ต๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์ถ๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ์ค์ ํฉ๋๋ค.
- Create an RDS DB Instance with this environment: RDS DB ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ์ต์ ์ ๋๋ค. ์ด๋ฒ์๋ DB ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฒดํฌํ์ง ์์ต๋๋ค.
- Create this environment inside a VPC: ํ๊ฒฝ์ ๋ค๋ฅธ ๊ฒฉ๋ฆฌ๋ VPC์ ์์ฑํ๋ ์ต์ ์ ๋๋ค. ์ธ๋ถ์์ ์ ์ํ ์ ์๊ณ ๋ด๋ถ์์๋ง ์ ์ํด์ผ ํ ๋ ์ฌ์ฉํฉ๋๋ค. VPC์ VPN์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ๋ด๋ง์ ๊ตฌ์ถํ ๋ ํ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฒ์๋ ์ธํฐ๋ท์์ ์ ์ํ ์ ์๊ฒ ํ ๊ฒ์ด๋ฏ๋ก ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฒดํฌํ์ง ์์ต๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
Elastic Beanstalk ํ๊ฒฝ์ ์ธ๋ถ ์ค์ ์ ๋๋ค.
- Instance Type: EC2 ์ธ์คํด์ค์ ์ ํ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- EC2 key pair: EC2 ์ธ์คํด์ค์ ์ ์ํ ๋ ์ฌ์ฉํ ํค ์์ ๋๋ค. ์์์ ์์ฑํ awskeypair๋ฅผ ์ ํํฉ๋๋ค.
- Email address: ํ๊ฒฝ์์ ์ฃผ์ ๋ด์ฉ์ด ๋ฐ๋๋ฉด ์ด๋ฉ์ผ๋ก ๋ด์ฉ์ ๋ฐ์๋ด ๋๋ค. ์ด๋ฉ์ผ์ ์ ๋ ฅํ์ง ์์๋ ์๊ด ์์ต๋๋ค.
- Application health check URL: ELB์์ ์น ์๋ฒ(Node.js, ์ํ์น ์น ์๋ฒ, Nginx)๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ ์๋์ง ํ์ธํ URL์ ๋๋ค. ์ ๋ ฅํ์ง ์์ผ๋ฉด / ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋น์๋ก๋๋ค.
- Enable rolling updates: ๋จ๊ณ์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ์ต์ ์ ๋๋ค. EC2 ์ธ์คํด์ค์ ์ ํ์ ๋ณ๊ฒฝํ๊ฑฐ๋ EC2 ์ธ์คํด์ค๋ฅผ ๊ต์ฒดํ ๋ EC2 ์ธ์คํด์ค๊ฐ ์ ์ง๋๋ฏ๋ก ์ผ์์ ์ผ๋ก ์๋น์ค๊ฐ ์ค๋จ๋ฉ๋๋ค. ์๋น์ค๊ฐ ์ค๋จ๋์ง ์๋๋ก ์ผ๋ถ EC2 ์ธ์คํด์ค๊ฐ ์ด์ ์ค์ธ ์ํ์์ ๋ถ๋ถ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ์ ๋ฐ์ดํธ๊ฐ ์๋ฃ๋ EC2 ์ธ์คํด์ค์์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ณ ๋จ์ EC2 ์ธ์คํด์ค๋ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์๋ ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ฒ์๋ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ๋น์๋ก๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค.
- Cross zone load balancing: ์ฌ๋ฌ ๊ฐ์ฉ ์์ญ์ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๋ ์ต์ ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Connection draining: Auto Scaling์ด ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌ ์ค์ธ EC2 ์ธ์คํด์ค๋ฅผ ๋ฐ๋ก ์ญ์ ํ์ง ๋ชปํ๋๋ก ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ '18์ฅ ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ELB'์ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Connection draining timeout: Connection draining ๋๊ธฐ ์๊ฐ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- Instance profile: EC2 ์ธ์คํด์ค์์ ์ฌ์ฉํ IAM ์ญํ ์ ๋๋ค. ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ IAM ์ญํ ์ ์ ํํ ์๋ ์๊ณ ์๋ก ์์ฑํ ์๋ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก Create Default Profile์ ์ ํํฉ๋๋ค.
์ค์ ์ด ์๋ฃ๋์์ผ๋ฉด Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
Elastic Beanstalk์ ํ๊ฒฝ์ ํ๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค. 7๊ฐ๊น์ง ์์ฑํ ์ ์์ต๋๋ค. Next ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์ง๊ธ๊น์ง ์ค์ ํ ๋ด์ฉ์ ์ด์์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด์์ด ์์ผ๋ฉด Launch ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ ์์ฑ์ด ์์๋์์ต๋๋ค. Health๋ฅผ ๋ณด๋ฉด Launching์ด๋ผ๊ณ ํ์๋ฉ๋๋ค. ์์ ํ ์์ฑ๋๊ธฐ๊น์ง ์ฝ 5๋ถ ์ ๋ ์์๋ฉ๋๋ค.
Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํ๊ฒฝ ์์ฑ์ด ์๋ฃ๋์์ผ๋ฉด ์์ชฝ <ํ๊ฒฝ ์ด๋ฆ>.elasticbeanstalk.com
๋งํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์์ Elastic Beanstalk URL์ ์ ์ํ๋ฉด ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฉ์ด ํ์๋ฉ๋๋ค.
Elastic Beanstalk๊ณผ EC2 ์ธ์คํด์ค
Elastic Beanstalk์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒฝ์ ์์ฑํ๋ฉด EC2 ์ธ์คํด์ค ๋ชฉ๋ก์ Elastic Beanstalk์ด ์์ฑํ EC2 ์ธ์คํด์ค๊ฐ ์ถ๊ฐ๋์ด ์์ต๋๋ค. ์ด EC2 ์ธ์คํด์ค๋ ์ญ์ ํ๊ฑฐ๋ ์ค์ ์ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ญ์ ํ๋๋ผ๋ Elastic Beanstalk์ด ๋ค์ ์์ฑํฉ๋๋ค.
Elastic Beanstalk ํ๊ฒฝ, ์ ํ๋ฆฌ์ผ์ด์ , S3 ๋ฒํท์ ์ ์ฅ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ญ์
Elastic Beanstalk ํ๊ฒฝ, ์ ํ๋ฆฌ์ผ์ด์ , ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ๋ฐ๋ก ์ญ์ ํด์ผ ํฉ๋๋ค. ํ๊ฒฝ์ ๋ชจ๋ ์ญ์ ํ๋๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ S3 ๋ฒํท์ ์ ์ฅ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ๋จ์ ์์ต๋๋ค.
- ํ๊ฒฝ ์ญ์
- ์ญ์ ํ ํ๊ฒฝ์์ Actions ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ ๋ฉ๋ด๊ฐ ๋์ต๋๋ค.
- Terminate Environment๋ฅผ ํด๋ฆญํฉ๋๋ค.
- Terminate ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
๋ฒ์ ์ญ์ : ์ ํ๋ฆฌ์ผ์ด์
์ ์ญ์ ํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์
๋ฒ์ ์ ๋จผ์ ์ญ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ด ์ ์ฅ๋ S3 ๋ฒํท์ด ๊ณ์ ๋จ์์๊ฒ ๋ฉ๋๋ค.
- Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ๋ชฉ๋ก์์ Actions ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ ๋ฉ๋ด๊ฐ ๋์ต๋๋ค.
- View Application Versions๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ๋ชฉ๋ก์ ํ์๋ ๋ฒ์ ๋ค์ ๋ชจ๋ ์ ํํฉ๋๋ค.
- Delete ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- Delete versions from Amazon S3๋ฅผ ์ฒดํฌํฉ๋๋ค.
- Delete ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- Done ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์ญ์
- Elastic Beanstalk ์ ํ๋ฆฌ์ผ์ด์ ๋ชฉ๋ก์์ Actions ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ ๋ฉ๋ด๊ฐ ๋์ต๋๋ค.
- Delete Application์ ํด๋ฆญํฉ๋๋ค.
- Delete ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋จผ์ ์ญ์ ํ์ฌ ๋จ๊ฒจ์ง S3 ๋ฒํท(์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ด ์ ์ฅ๋)์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ
- S3 ๋ฒํท ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค.
- S3 ๋ฒํท ๋ชฉ๋ก์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ด ์ ์ฅ๋ S3 ๋ฒํท์ ํด๋ฆญํฉ๋๋ค.
- S3 ๋ฒํท์ ์ ์ฅ๋ ๋ชจ๋ ํ์ผ์ ์ญ์ ํฉ๋๋ค.
- ์์ชฝ Properties ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- Permissions ํญ์ ํด๋ฆญํฉ๋๋ค.
- Bucket Policy Editor ์ฐฝ์์ Delete ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ํ์ธ ์ฐฝ์์ ํ์ธ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- All Buckets ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ฒํท ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค.
- ์ญ์ ํ S3 ๋ฒํท์ ์ ํํ๊ณ , ์์ชฝ Actions ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ ๋ฉ๋ด๊ฐ ๋์ต๋๋ค.
- Delete๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํ์ธ ์ฐฝ์์ ํ์ธ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.