๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

๊ฐœ๋ฐœ ์„œ๋ฒ„ AWS ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ ์ด์ฃผ๊ธฐ

DevPoong 2023. 7. 31. 18:27

1. ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ ์ด์ „ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ

ํ˜„์žฌ ๊ต๋‚ด ์„œ๋ฒ„์‹ค์— KIOSEK ์„œ๋น„์Šค๊ฐ€ On-Premise ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌ๋˜์—ˆ์žˆ๊ณ ,
์ด์ „์—๋Š” ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์™€์˜ ์ง€์†์ ์ธ ํ˜‘์—…์„ ์œ„ํ•œ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด ๋…ธํŠธ๋ถ์—์„œ ํ‹€์–ด์„œ ํฌํŠธํฌ์›Œ๋”ฉ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋‹ค.

ํ•ด๋‹น ๋ฐฉ์‹์€ ๋„ˆ๋ฌด๋‚˜๋„ ๋น„ํšจ์œจ์ ์ด์—ˆ์ง€๋งŒ, ๊ฐ€์šฉํ•  ๋ฌผ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ์—†์—ˆ๊ณ  ์‚ฌ์‹ค ํ™˜๊ฒฝ์„ ํ•˜๋‚˜ ๋” ๊ตฌ์ถ•ํ•œ๋‹ค๋Š”๊ฒŒ ๊ท€์ฐฎ์€ ์ ๋„ ์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•œ๊ณ„๋ฅผ ๋Š๊ผˆ๊ณ , ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ AWS ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๊ตฌ์ถ•ํ•ด์„œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ IAM ๊ณ„์ •์„ ํ• ๋‹นํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ ๊ป๋‹ค ์ผค ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ƒ๊ฐ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

2. ์‚ฌ์šฉํ•  AWS ์ž์› ์ •ํ•˜๊ธฐ

1. ํ‚ค์˜ค์Šคํฌ ๋ฐฑ์—”๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ NGINX ์›น์„œ๋ฒ„๋ฅผ ์šด์˜ ํ•  EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ๋จผ์ € ํ•„์š”ํ–ˆ๋‹ค.

ํ•ด๋‹น ์‹œ๊ฐ„๋‹น ์š”๊ธˆํ‘œ๋ฅผ ๋ณด์•˜์„ ๋•Œ t2.medium์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ํ•œ๋‹ฌ์— 43.2๋‹ฌ๋Ÿฌ ์ •๋„๊ฐ€ ๋ถ€๊ฐ€๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์—ˆ๋‹ค.
์ถ”ํ›„์— ๋ฐฐํฌ์ž๋™ํ™”๋ฅผ Jenkins๋กœ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ธ๋ฐ ํ•ด๋‹น ์ž‘์—…์€ t2.micro์—์„œ๋Š” ๋งŽ์ด ํž˜๋“ค ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์–ด t2.medium์„ ์„ ํƒํ•˜์˜€๋‹ค.
ํ•˜์ง€๋งŒ, ๊ณ„์† ์„œ๋ฒ„๋ฅผ ์ผœ๋‘˜ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ํ•„์š”ํ•  ๋•Œ๋งŒ ์ผœ๋‘˜ ๊ฒƒ์ด๋ฏ€๋กœ ๋งŽ์ด ๋‚˜์™€๋„ ๋งŒ์›์ •๋„๋กœ ์ƒ๊ฐํ•œ๋‹ค.

2. RDS๋„ ๋น„์šฉ์ ์ธ๋ฉด์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ๋Š” EC2์— ์ง์ ‘ ๊ตฌ์ถ•ํ•˜๋Š”๊ฒŒ ๋” ์ €๋ ดํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ, ์šฐ์„  ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์ถ”ํ›„์— ํ•„์š”์—†๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด EC2๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. (RDS๋Š” ๊ตณ์ด ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ์žˆ์„๊นŒ ์‹ถ๊ธด ํ•˜๋‹ค..)

3. ECR์„ ํ†ตํ•ด KIOSEK์˜ Docker Image๋ฅผ Privateํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
Docker Hub๋ฅผ ์ด์šฉํ•˜์—ฌ๋„ ๋˜์—ˆ๊ฒ ์ง€๋งŒ, Docker Hub์˜ rate limit์— ๋„๋‹ฌํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ํ’€ ๋ฐ›๋Š” ๊ฒƒ์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ
๊ตณ์ด ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š๊ณ  ECR์„ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
ํ˜„์žฌ ๋‚ด ์ƒํ™ฉ์—์„œ๋Š” ECR ํ”„๋ฆฌํ‹ฐ์–ด๋งŒ ์‚ฌ์šฉํ•ด๋„ ์ถฉ๋ถ„ํ–ˆ๊ณ  ๋น„์šฉ๋„ ๊ฑฐ์˜ ๋‚˜์˜ค์ง€ ์•Š๋Š” ํŽธ์ด์–ด์„œ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

3. ์ „์ฒด์ ์ธ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ๊ตฌ์„ฑ๋„

EC2์—์„œ OS๋Š” Ubuntu 20.04LTS๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค.
์ธ์Šคํ„ด์Šค ๋‚ด๋ถ€์—์„œ๋Š” ๋„์ปค๋ฅผ ์ด์šฉํ•˜์—ฌ Nginx, Spring Boot, Prometheus, Grafana, Redis๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.
RDB๋Š” AWS RDS๋ฅผ ์ด์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ๋‹ค.

๋‚ด๋ถ€์—์„œ Docker compose๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•œ๋ฒˆ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

์ถ”ํ›„์— Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ž๋™ํ™”๊นŒ์ง€ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ด๊ธฐ์— ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑํ•ด๋ดค๋‹ค.

4. ํ›„๊ธฐ

EC2์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ   ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด์— ์šด์˜์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ์—ˆ๊ธฐ์— ์–ด๋ ค์›€ ์—†์ด ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

AWS ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์š”๊ธˆํ‘œ๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•œ๋‹ฌ์— ์–ผ๋งˆ ์ •๋„ ๋‚˜์˜ฌ์ง€๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด๋ณด๊ณ  ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

AWS์˜ ๊ธฐ๋Šฅ๋“ค์„ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๋‚˜๋‹ˆ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‚ฌ์šฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ VPC๋ฅผ ์ž˜ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ณด์•ˆ์„ ์ž˜ ์ ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.

์ถ”ํ›„์— ํ•ด๋‹น ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ ์ž ํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ECS๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐ๊ธˆ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

์ฐธ์กฐ

https://velog.io/@jgkang/b2ceb014-dbce-4220-bf63-57da02cf205f