AWS
AWS๋? ๐ฏ
EC2
- Elastic Compute Cloud
- AWS ์์์ ์ฌ์ฉํ๋ Server๋ก, EC2 ์๋ฒ์ API๋ฅผ ๋ฐฐํฌํ๊ฒ ๋จ.
- EC2๋ ๋ค์ํ ์ฌ์ ์ต์
์ ์ ๊ณตํจ.
t2.nano
ย (CPU 1, 0.5 GB memory) ๋ถํฐยx1.32xlarge
ย (CPU 128, RAM 1952 GB) ๊น์ง ๋ค์ํ๊ฒ ์ ๊ณตํจ์ผ๋ก ํ์ํ ์ฌ์์ EC2 ์ธ์คํด์ค(instnace)๋ฅผ ์ ํํด์ ์ฌ์ฉํ ์ ์์.
Security Group
- EC2 ์ธ์คํด์ค์ ๋ํ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ์ดํ๋ ๊ฐ์ ๋ฐฉํ๋ฒฝ ์ญํ .
- ์ฆ security group ์ค์ ์ ํด์ค์ผ EC2 ์ธ์คํด์ค์ HTTP์ SSH ์ ์์ด ๊ฐ๋ฅ.
RDS
- Relational Database Service
- AWS์ database ์๋น์ค.
- RDS๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ง์ ์๋ฒ๋ฅผ ์์ฑํด์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ณ ์ค์ ํ๊ณ ๊ด๋ฆฌ ํ์ง ์์.
- ์ฌ์ฉ์๊ฐ ์ง์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ณ ์ด์ํ๋ ๊ฒ๋ณด๋ค RDS๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ๋ ์ ๋ ดํจ.
Load Balancer
- ๋ก๋๋ฐ๋์๋ HTTP ์์ฒญ๋ค์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- HTTP ์์ฒญ์ด ๋ง์๋๋ ์๋ฒ ํ๋๋ง์ผ๋ก ๋ชจ๋ ์ฒ๋ฆฌ ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ์๋ฒ ์๋ฅผ ๋๋ฆฌ๋๊ฒ์ด ์ผ๋ฐ์ . ์ฌ๋ฌ ์๋ฒ๋ฅผ ์คํํ๊ณ ๋ก๋๋ฐ๋ฐ์๊ฐ HTTP ์์ฒญ๋ค์ ์๋ฒ๋ค์ ๋ถ์ฐ ํด์ฃผ๋ ํํ๋ก ์์คํ ์ด ๊ตฌ์ฑ๋จ.
Route 53
- AWS์ DNS ์๋น์ค.
- API ์์คํ ์ ์ค์ ๋๋ฉ์ธ๊ณผ ์ฐ๊ฒฐ.
AWS S3
- AWS S3(Simple Storage Service)๋ ์ด๋ฆ ๊ทธ๋๋ก ํ์ผ์ ์ฝ๊ฒ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
- ํ์ผ์ ์ ์ฅ ํ ์ ์์ ๋ฟ๋ง์ด ์๋๋ผ, ์ ๋ก๋๋ ํ์ผ๋ง๋ค ๊ณ ์ ์ฃผ์๋ฅผ ๋ถ์ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ S3์ ์ ์ฅํ ํ์ผ์ ์น์์์ ์ฝ๊ฒ ์ฝ์ด๋ค์ผ์ ์์ต๋๋ค.
- ์ฃผ๋ก ์ฌ์ดํธ์์ ์ด๋ฏธ์ง๋ค์ ์ ์ฅํ๊ณ ์ฌ์ดํธ์์ ์ฝ์ด๋ค์ฌ ๋ ๋๋ง ํด์ฃผ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.
ํด๋ผ์ฐ๋ ์ปดํจํ - ์ธํฐ๋ท์ํตํด IT ๋ฆฌ์์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์จ๋๋งจ๋๋ก ์ ๊ณตํ๋์๋น์ค
-
๊ธฐ์กด์ ๋ฌผ๋ฆฌ์ ์ธ ํํ์ ์ค๋ฌผ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์๋น์ค ํํ๋ก ์ ๊ณตํ๋ ๊ฒ.
-
์ฌ์ฉ์๋ก ํ์ฌ๊ธ ๋คํธ์ํฌ ์์์ ํด๋ผ์ฐ๋ ์๋น์ค์ ์์์ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
-
๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง ๋ถ๋ฅ๋ก ๋๋๊ธฐ๋ ํ๋ค.
โถ IaaS(Infrastructure as a Service)
-
AWS, ๋ค์ด๋ฒํ๋ซํผ ๊ณผ ๊ฐ์ ์ธํ๋ผ์คํธ๋ญ์ณ๋ฅผ ์ ๊ณตํ๋ ์๋น์ค.
-
๊ฐ์ ์๋ฒ ๋๋ ์คํ ๋ฆฌ์ง, ๊ฐ์ ๋คํธ์ํฌ ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ์๋น์ค ํํ๋ก ์ ๊ณตํ๋ค.
-
์ฌ์ฉ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ๋์จ์ด๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์์ผ๋ฉฐ, ์ง์ ์ ์ผ๋ก ์๋น์ค ์ด์ฉ์ ํตํด ์ปดํจํฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค. (AWS, ๋ง์ดํฌ๋ก์ํํธ(MS) ์ ์ , IBM ์ํํธ๋ ์ด์ด ๋ฑ์ ์ ์ฒด๋ค์ด ์๋ค.)
-
ํด๋ผ์ฐ๋ IT์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์ (๋คํธ์ํน, ์ปดํจํฐ, ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๊ณต๊ฐ)
โถ PaaS(Platform as a Service)
-
DB ๋๋ Application ์๋ฒ ๋ฑ์ ์ด๋ฏธ ๋ฏธ๋ค์จ์ด๋ฅผ ์ ๊ณตํ๋ค.
-
ํ๋์จ์ด/OS/๋ฏธ๋ค์จ์ด ์ ๋ํ ๊ด๋ฆฌ๋ ์๋น์ค ์ ๊ณต์๊ฐ ํ๋ฉฐ, ์ฌ์ฉ์๋ ์ ๊ณต๋ ๋ฏธ๋ค์จ์ด๋ง ์ฌ์ฉ ํ ์ ์๋ค.
-
์ฃผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๊ด๋ จํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.(OS, DB, WAS, JDK)
-
๊ธฐ๋ณธ ์ธํ๋ผ (ex. ํ๋์จ์ด์ ์ด์ ์ฒด์ )๋ฅผ ๊ด๋ฆฌํ ํ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๊ฒ ํด์ค๋ค.
โถ SaaS(Software as a Service)
- ์ํํธ์จ์ด ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ๋ง ์ ๊ณตํฉ๋๋ค. ๋ค์ด๋ฒํด๋ผ์ฐ๋, ์น ๋ฉ์ผ, ERP ๋ฑ๊ณผ ๊ฐ์ ํํ์ ์๋น์ค๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ค.
AWS ํด๋ผ์ฐ๋ ์ปดํจํ ์ ์ฅ์
- ์ ๋ ดํ ๋น์ฉ
AWS๋ ์ฌ์ ํ์ฝ๊ธ์ด๋ ์ฅ๊ธฐ ์ฝ์ ์์ด ์ ๋ ดํ ์ข ๋ ๊ณผ๊ธ์ ๋ฐฉ์์ผ๋ก ์ด์๋๋ค.
ํ์ฅํ ๊ธ๋ก๋ฒ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌํ๊ณ , ๋ ์ ๋ ดํ ์๊ธ์ ํํ๋ก ์ฌ์ฉ์์๊ฒ ๋น์ฉ ์ ๊ฐ ํํ์ ๊ณ ์ค๋ํ ๋๋ ค์ค๋ค.
์๋ณธ๋น์ฉ์ ๊ฐ๋ณ๋น์ฉ์ผ๋ก ๋์ฒดํ์ฌ ์๊ฐ๋๋ณ๋ก๋ ์์์ ๋์์์.
- ์๋ ๋ฐ ๋ฏผ์ฒฉ์ฑ ๊ฐ์
๋ฐ์ดํฐ์ผํฐ์ด์ ๋ฐ ์ ์ง๊ด๋ฆฌ์ ๋น์ฉํฌ์ ๋ถํ์
๋ช๋ถ๋ง์ ์ ์ธ๊ฒ์ ๋ฐฐํฌ
AWS๋ ์ธ์ด ๋ฐ ์ด์ ์ฒด์ ์ ๊ตฌ์ ๋ฐ์ง ์๋ ํ๋ซํผ์ด๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์์ ๋น์ฆ๋์ค์ ๊ฐ์ฅ ์ ํฉํ ๊ฐ๋ฐ ํ๋ซํผ ๋๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ํํ ์ ์๋ค. ์ฌ์ฉํ ์๋น์ค๋ฅผ ํ ๊ฐ ๋๋ ์ฌ๋ฌ ๊ฐ ์ ํํ๊ณ , ๊ทธ ์ฌ์ฉ ๋ฐฉ์๋ ์ ํํ ์ ์๋ค.
- ๋ฏผ์ฒฉ์ฑ, ์ฆ๊ฐ์ ์ตํต์ฑ
๋ช ์ฃผ ๋๋ ๋ช ๊ฐ์ ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ฆ์ ์๋ก์ด ์ฑ์ ๋ฐฐํฌํ๊ณ , ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ถ์ํ ์๋ ์๋ค. ํ์ํ ๊ฐ์ ์๋ฒ๊ฐ ํ ๋๋ ์๋๋ฉด ์์ฒ ๋๋ , ๊ฐ์ ์๋ฒ๊ฐ ํ์ํ ์๊ฐ์ด ๋ช ์๊ฐ์ด๋ ์ฌ์ฉํ ์๋งํผ ๋น์ฉ์ด ์ฒญ๊ตฌ๋๋ค. ์ฆ ํ ์ค๋ก ์์ฝํ๋ฉด ์ค์น๊ฐ ๋น ๋ฅด๊ณ ๊ด๋ฆฌ๊ฐ ํธํ๋ค๋ ๊ฒ์ด๋ค.
์ง์ ๋ฐฐํฌํด๋ณด๊ธฐ
front package.json
"distribute": "npm i && npm run build && pm2 serve build 3000 --name <project-front> --spa"
-
npm i โก๏ธ gitignore์ nodemodule์ด ๋ค์ด๊ฐ์์ผ๋ ํด๋ก ๋ฐ์์์ nodemodule์ด ์๋ค. ์ฆ install ๋ฐ์์ค์ผํจ
-
npm run build โก๏ธ ํ๋ก๊ทธ๋จ์ build ์ํด
-
pm2 serve build 3000 โname
--spa โก๏ธ pm2 ํ๋ก๊ทธ๋จ์ serve ๋ช ๋ น์ด๋ฅผ ํตํด์ build ํด๋๋ฅผ serving์ํด
back package.json
"distribute": "npm i && npx prisma generate && pm2 start server.js --name <project-back> -i max" // ๊ธฐ๋ณธ
--๋ฐ๋ฒจ์ฌ์ฉ์--
"start": "babel-node server.js",
"distribute": "npm i && prisma generate && pm2 start --name <project-back> -i max npm -- run start"
- pm2 start โก๏ธ jsํ์ผ์คํ - ๊ธฐ์กด node ๋ช ๋ น์ด๋ ์ ์ญ ์๋ฌ๊ฐ ๋ ์ ์ฌ ์์์ด ๋์ง ์์ง๋ง pm2 start๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์์๋จ
AWS์์ EC2, RDS๋ฅผ ์ ํ ํ
์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ key.pem์ ๋ค์ด๋ฐ์.
key.pem์ด ์๋ ํด๋์์น์์ ssh -i key.pem ec2-user@<ํ์ธํ public ip>
์คํ
sudo yum install git
git clone <repo_front>
git clone <repo_back>
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm install --lts
nvm use --lts
์ด์ ๋ถํฐ npm์ ์ฌ์ฉํ ์ ์๋ค.
front .env
REACT_APP_BASE_URL='http://13.125.235.62:8000'
GENERATE_SOURCEMAP=false
- GENERATE_SOURCEMAP โก๏ธ create-react-app์ผ๋ก React ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์ฌ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก webpack์ ์ํด ๋ฒ๋ค๋ง ๋ ํ์ผ๊ณผ ํด๋น ํ์ผ์ ๋์๋๋ sourcemap์ด ์์ฑ๋จ sourcemap์ ๊ฐ๋จํ ๋งํ๋ฉด, ๋๋ฒ๊น ์ ์ํ ํ์ผ์ด๋ค. ํด๋น ํ์ผ์ด ์๋ค๋ฉด ์์ถ๋๊ณ ๋๋ ํ๋ ํ์ผ์ ๋ธ๋ผ์ฐ์ ๋ด์์ ๋ค์ ์๋ณธ ์์ค์ฒ๋ผ ํ์ธํ ์ ์์. ํ์ง๋ง, ์ค์ ๋ฐฐํฌ ์ sourcemap์ ์ ๊ฑฐ๋์ด์ผ ํจ. ๋ด๋ถ ์ฝ๋๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ฏ๋ก, ๋๋ ํ์ ์ด์ ์ ๋ชจ๋ ์์ค. ๋ ธ์ถ๋์ง ์์์ผ ํ๋ ํ๋ก์ ํธ์ผ์๋ก ๋์ฑ ์น๋ช ์ ์ผ ์ ์์. ๋น๋ ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ(OOM) ์ด์๊ฐ ๋ฐ์ํ ์ ์์
back .env
DATABASE_URL="mysql://junHyeok:dlwnsgur1@project-wetown.ccrudlxgt09s.ap-northeast-2.rds.amazonaws.com:3306/wetown"
JWT_SECRET="1234"
back, front ๋ชจ๋ ํ๊ฒฝ๋ณ์ํ์ผ ์์ฑ(gitignore ๋์ด์๊ธฐ๋๋ฌธ)
๊ทธ๋ฆฌ๊ณ ๊ฐ์์ ํด๋ก ํด๋์์ npm run distribute ๋ช ๋ น์ด๋ฅผ ์คํ์์ผ ๋ฐฐํฌํจ
๋