๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ˜์‘ํ˜•

Infra

(8)
AWS ) ์ •์  ์›น ์‚ฌ์ดํŠธ ๋ฐฐํฌ ๋ฐฉ์‹ ๋น„๊ต ( nginx / cloudFront / amplify ) ์•ž์„œ AWS ๋ฐฐํฌ ๊ณผ์ •์„ ํฌ์ŠคํŒ…ํ•˜๋ฉด์„œ EC2 + WebServer๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์Šต์„ ํ•ด๋ณด์•˜๋Š”๋ฐ์š”. ๊ทธ ์™ธ์—๋„ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์–ด์„œ ํ•œ๋ฒˆ ๋น„๊ตํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1. AWS - EC2 + WebServer(Nginx) ๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ 2. AWS - CloudFront + S3๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ 3. AWS - Amplify๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ 1. EC2 + WebServer ( Nginx ) ๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ - AWS EC2 ์ธ์Šคํ„ด์Šค ์œ„์— Nginx ์›น์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•. EC2๋Š” ํ•˜๋‚˜์˜ ์ž‘์€ ๊ฐ€์ƒ์˜ ์„œ๋ฒ„์ด๊ณ , Nginx๋Š” OS์œ„์— ์›น ์„œ๋น„์Šค๋ฅผ ๋„์šฐ๊ธฐ ์œ„ํ•œ ์›น ์„œ๋ฒ„. EC2์™€ Nginx๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •์ ์ธ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฅ์  1) Ngi..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 6. React ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ์ด์ „์— index.html ํŒŒ์ผํ•˜๋‚˜๋กœ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์—ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๋ฐฐํฌํ•ด์•ผํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” React ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— React ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ž˜ ๋œจ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. 1. React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ - ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. - ์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ํด๋”์—์„œ ๊ทธ๋Œ€๋กœ React ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค. Node.js ์„ค์น˜ ์ž‘์—…์šฉ ํด๋” ๋งŒ๋“ค๊ธฐ ํ„ฐ๋ฏธ๋„์—์„œ npx create-react-app ํ”„๋กœ์ ํŠธ๋ช… ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž๋™์ ์œผ๋กœ ํ•„์š”ํ•œ ํด๋”๋“ค์ด ์„ธํŒ…๋œ๋‹ค. 2. Docker ํŒŒ์ผ ์ˆ˜์ • ์•„๋ž˜์— ๊ฐ ์ฝ”๋“œ ์„ค๋ช…์„ ์ ์–ด๋‘์—ˆ๋‹ค. # base image ์„ค์ •(as build ๋กœ ์™„๋ฃŒ๋œ ํŒŒ์ผ์„ ๋ฐ‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.) FROM node:14-alpine as build # ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์ž‘..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 5. Route53 / ELB ์—ฐ๊ฒฐ / HTTPS ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ˜„์žฌ ์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ์„ LB๊ฐ€ ๋ฐ›์•„ EC2์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋„๋ฉ”์ธ์„ ๋ฐœ๊ธ‰ ๋ฐ›๊ณ  AWS์˜ Route53์— ๋“ฑ๋กํ•œ๋’ค, ELB์™€ ์—ฐ๊ฒฐํ•ด์„œ ๋„๋ฉ”์ธ์œผ๋กœ ์ ‘์†ํ•  ๊ฒƒ์ด๋‹ค. 1. ๋„๋ฉ”์ธ ๋ฐœ๊ธ‰ ์‚ฌ์ดํŠธ https://www.freenom.com/en/index.html?lang=en Freenom - A Name for Everyone Sorry, is not available. IMPORTANT NOTICE: Because of technical issues the Freenom application for new registrations is temporarily out-of-order. Please accept our apologies for the inconvenience. W..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 4. ECS ์ƒ์„ฑ ๋ฐ ELB ์—ฐ๊ฒฐ / ECR image ๋ฐฐํฌ ์ด๋ฒˆ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. - ECS ์ƒ์„ฑ : Cluster, Service, Task Definition - ELB ์ƒ์„ฑ , ์—ฐ๊ฒฐ - EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ : Auto Scaling Group ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฐ„๋‹จํžˆ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž. 1. EC2 : ๊ฐ€์ƒ ์„œ๋ฒ„์ธ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ€์ƒ ์ปดํ“จํ„ฐ๋กœ, ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์™€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ€์ƒ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ(VPC) ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. Auto Scaling Group : ์˜คํ† ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์€ EC2 ์ธ์Šคํ„ด์Šค์˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์ด ๊ทธ๋ฃน์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ์กฐ์ •ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 3. Github Actions์œผ๋กœ docker image ์—…๋กœ๋“œ ์ž๋™ํ™” AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 2. Docker ํ™˜๊ฒฝ ๊ตฌ์ถ• / ECR์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ด๋ฒˆ์—๋Š” ECRํ…Œ์ŠคํŠธ ์šฉ EC2๋ฅผ ๋งŒ๋“ค๊ธฐ, ๋„์ปค ํ™˜๊ฒฝ ๊ตฌ์ถ•, ๋นŒ๋“œํ•œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ECR์— ์—…๋กœ๋“œ ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. - ์ตœ์ข… flow๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— Push ํ–ˆ์„ ๋•Œ github act suvera.tistory.com ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ์ˆ˜๋™์œผ๋กœ ํ–ˆ๋˜ ์ž‘์—…( ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ECR์— ์—…๋กœ๋“œํ•˜๋Š” ๊ณผ์ • )์„ Github Actions์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊นƒํ—™์— push๋ฅผ ํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค ! ์›น ์„œ๋ฒ„ : nginx ํ”„๋กœ์„ธ์Šค : ๊นƒํ—™ main ๋ธŒ๋žœ์น˜์— push ๋ช…๋ น์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, test, formatting & code analysis๋ฅผ..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 2. Docker ํ™˜๊ฒฝ ๊ตฌ์ถ• / ECR์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ด๋ฒˆ์—๋Š” ECRํ…Œ์ŠคํŠธ ์šฉ EC2๋ฅผ ๋งŒ๋“ค๊ธฐ, ๋„์ปค ํ™˜๊ฒฝ ๊ตฌ์ถ•, ๋นŒ๋“œํ•œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ECR์— ์—…๋กœ๋“œ ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. - ์ตœ์ข… flow๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— Push ํ–ˆ์„ ๋•Œ github actions๋ฅผ ํ†ตํ•ด workflow๊ฐ€ ์ž๋™์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ , ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋Š” ECR์— ์—…๋กœ๋“œ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข…์ ์œผ๋กœ ECS Task Definition์— ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ID๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ECS์— ์ž‘์—… ์ƒ์„ฑ ๋ช…๋ น์„ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ ๋œ๋‹ค ! 1. ECR์„ ํ…Œ์ŠคํŠธ ํ•  EC2๋ฅผ ์ƒ์„ฑ - ์•„์ง AutoScalingGroup ์ƒ์„ฑ ์ „์ด๋ผ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†๋‹ค. ํ…Œ์ŠคํŠธ ํ›„ ์‚ญ์ œ ํ•ด์ฃผ์ž. ์ด๋ฆ„ : ECR-test AMI : Amazon Linux 2023 ..
AWS ๋ฐฐํฌ์ž๋™ํ™” ๊ตฌ์ถ• _ 1. ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ AWS๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ์ง€์‹์„ ์ฑ„์›Œ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์˜€๋‹ค. ๊ตฌ์ถ•ํ–ˆ๋˜ ๊ณผ์ •์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ณด์ถฉํ•ด๋‚˜๊ฐ€๊ณ ์ž ํ•œ๋‹ค. ์šฐ์„  ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌ์„ฑํ• ์ง€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์งœ์•ผํ•˜๋Š”๋ฐ, ์•„์ง AWS์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š์•„์„œ ๋‹ค๋ฅธ๋ถ„์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณด๊ณ  ๋”ฐ๋ผํ•˜๋Š” ์‹์œผ๋กœ ํ•ด๋ณด์•˜๋‹ค. ( ๋ฒ„๋””๋‹˜๊ป˜ ๊ฐ์‚ฌ ์ธ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค _ _ ) AWS ๋ฐฐํฌ์ž๋™ํ™” ์‹ค์ œ๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ - ์•„ํ‚คํ…์ฒ˜ ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ๊ทธ๋™์•ˆ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ํ† ๋Œ€๋กœ github / gitlab ๊ฐ™์€ ํ˜•์ƒ๊ด€๋ฆฌ ํˆด์„ ์ด์šฉํ•ด์„œ, AWS... blog.naver.com ๊ณ„์ •์„ ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ํ•˜๋‚˜์˜ ๋ฆฌ์ „์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฆฌ์†Œ์Šค๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. - 1 VPC - n Subnet : n์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” AZ์˜ ๊ฐœ์ˆ˜ - ..
CI/CD) Github Actions - Slack ์—ฐ๋™ ๋ฐฐํฌ ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ Github Actions์„ ์‚ฌ์šฉํ•˜์—ฌ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ECR์— Pushํ•˜๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ทธ ๊ณผ์ •์—์„œ ๋นŒ๋“œ์— ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์„ ๊ฒฝ์šฐ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—…๋ฌด ํ˜‘์—… ํˆด๋กœ ์‚ฌ์šฉ๋˜๋Š” Slack๊ณผ ์—ฐ๋™ํ•˜๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. Slack์— ์ƒˆ๋กœ์šด ์•ฑ ์ƒ์„ฑ https://api.slack.com/apps Slack API: Applications | Slack Your Apps Don't see an app you're looking for? Sign in to another workspace. api.slack.com 1) Create New App -> From Scratch ์„ ํƒ 2) App Name์—๋Š” ์‚ฌ์šฉํ•  ์ด๋ฆ„์„ ์ž…..

๋ฐ˜์‘ํ˜•