2022.08.05(Fri)
[TIL] Day71
[SEB FE] Day72
๐ธย ๊ธฐ์กด ๋ฐฉ์ ํ๊ณ
ย โย ๋ฐ์ดํฐ ์ผํฐ์์ ์๋ฒ ์์๊ณผ ๊ณต๊ฐ, ๋คํธ์ํฌ ํ๊ฒฝ ์ ๊ณต โ ์จํ๋ ๋ฏธ์ค
ย ๐ย ์๋ฒ ์์๊ณผ ๊ณต๊ฐ, ๋คํธ์ํฌ ํ๊ฒฝ์ ๋น๋ ค ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ์ปดํจํ ์์ from ๊ฐ์ํ(Virtualization) ๊ธฐ์ ๋ฐ์
ย โย ํ๋ ํด๋ผ์ฐ๋ ์ปดํจํ ์ ๋ฌผ๋ฆฌ์ ์ธ ์ปดํจํฐ๊ฐ ์๋, ๊ฐ์ ์ปดํจํฐ๋ฅผ ๋์ฌํ๋ค๋ ์ ์ด ๋ค๋ฆ
๐ย ํด๋ผ์ฐ๋ ์๋น์ค ์ฅ์
๐ย ํด๋ผ์ฐ๋ ์๋น์ค ๋จ์
๐ธย ํด๋ผ์ฐ๋ ์๋น์ค ํํ
SaaS
(Software as a Service): ํด๋ผ์ฐ๋ ์ ๊ณต์๊ฐ ๋น์ฅ ์ฌ์ฉ๊ฐ๋ฅํ SW๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐPaaS
(Platform as a Service): ํด๋ผ์ฐ๋ ์ ๊ณต์๊ฐ DB, ๊ฐ๋ฐ ํ๋ํผ๊น์ง ์ ๊ณตํ๋ ๊ฒฝ์ฐIaaS
(Infrastructure as a Service): ํด๋ผ์ฐ๋ ์ ๊ณต์๊ฐ ๊ฐ์ ์ปดํจํฐ๊น์ง ์ ๊ณตํ๋ ๊ฒฝ์ฐ - AWS: ๊ฐ๋ฐํ ์๋น์ค๋ฅผ ์ฌ์ฉ์๊ฐ ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ณผ์
Development
: Local ์ปดํจํฐ ํ๊ฒฝ์์ ๊ฐ๋ฐํ๊ณ ํ
์คํธํ๋ ๊ณผ์ Integration
: ๊ฐ์์ ์ปดํจํฐ ํ๊ฒฝ์์ ์์ฑํ ์ฝ๋๋ฅผ ํฉ์น๋ ๊ณผ์ Staging
: ์ค์ ์ถ์ ๋จ๊ณ์ธ Production ๋จ๊ณ์ ๊ฐ์ฅ ์ ์ฌํ ํ๊ฒฝ์์ ํ
์คํธ ์งํProduction
: ๊ฐ๋ฐ๋ ์๋น์ค๋ฅผ ์ถ์ํ๋ ๋จ๊ณโย ๋ฐฐํฌ์์ ํ๊ฒฝ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ํ๊ฒฝ ์ค์ ์ ์ฝ๋์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์!
๐งโโ๏ธย ์์ฑํ ์ฝ๋๊ฐ ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์ ์ ์๋ํ ์ ์๊ฒ ํ๋ ค๋ฉด??
Elastic Compute Cloud
(Elastic = ํ๋ ฅ(์ ์ถ์ฑ)์๋, ์ ์ฐํ)
: AWS์์ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ์ปดํจํ ์๋น์ค
๐ย AWS์์ ์๊ฒฉ์ผ๋ก ์ ์ดํ ์ ์๋ ๊ฐ์์ ์ปดํจํฐ๋ฅผ 1๋ ๋น๋ฆฌ๋ ๊ฒ
๐ย AWS์์ ๋น์ฉ, ์ฑ๋ฅ, ์ฉ๋ ๋ฉด์์ ํ๋ ฅ์ ์ธ ํด๋ผ์ฐ๋ ์ปดํจํฐ๋ฅผ ์ ๊ณตํ๋ ์๋น์ค
โยInstance
=ย AWS์์ ๋น๋ฆฌ๋ ์ปดํจํฐ
๐ย EC2 ์ฌ์ฉ ์ฅ์
๐ย Amazon EC2
์ ํตํด ์น์๋ฒ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์์ฒญํ๋ ์๋น์ค ์ ๊ณต ๊ฐ๋ฅ
๐ธย AMI
: Amazon Machine Image
. ์ธ์คํด์ค ์์ฑ์ ํ์ํ ์ํํธ์จ์ด ๊ตฌ์ฑ์ด ํฌํจ๋ ํ
ํ๋ฆฟ
๐ย AWS EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค = AMI ํ ๋๋ก OS, CPU, RAM, ๋ฐํ์ ๋ฑ์ด ๊ตฌ์ฑ๋ ์ปดํจํฐ๋ฅผ ๋น๋ฆฌ๋ ๊ฒ
: Relational Database Service
. AWS์์ ์ ๊ณตํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค
๐ย RDS ์ฌ์ฉ ์ฅ์
: Simple Storage Service
. AWS์์ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋น์ค
๐ธย Cloude Storage
: ์ธํฐ๋ท ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์ (์น ํ๊ฒฝ์ด๋ผ๋ฉด ์ธ์ ์ด๋์๋ ์ ์ฅ๋ ํ์ผ์ ์ ๊ทผ ๊ฐ๋ฅ)
๐ย S3 ์ฌ์ฉ ์ฅ์
Standard ํด๋์ค
: ๋ฐ์ดํฐ์ ๋น ๋ฅธ ์๋๋ก ์ ๊ทผ ๊ฐ๋ฅ, ๋ฐ์ดํฐ ์ก์ธ์ค ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฆ โ ๋ฐ์ดํฐ์ ์์ฃผ ์ก์ธ์คํด์ผ ํ ๊ฒฝ์ฐ๋ ๋ฒ์ฉ์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ข์Glacier ํด๋์ค
: ๋ฐ์ดํฐ์ ์ฅ๊ธฐ์ ์ธ ๋ณด๊ด ๋ชฉ์ ์ผ๋ก, ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ์๋๋ ๋๋ฆฌ์ง๋ง, ๋ฐ์ดํฐ ๋ณด๊ด ๋น์ฉ ์ ๋ ด๐ธย ๋ฒํท(Bucket)
: S3์ ์ ์ฅ๋๋ ํ์ผ๋ค์ด ๋ด๊ธฐ๋ ๋ฐ๊ตฌ๋๋ก, ํ์ผ์ ์ ์ฅํ๋ ์ต์์ ๋๋ ํ ๋ฆฌ
๐ธย ๊ฐ์ฒด
: S3์์ ๋ฒํท์ ๋ด๊ธฐ๋ ํ์ผ (key-value ํ์์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ ํ๋ฏ๋ก said ๊ฐ์ฒด!)
http://[๋ฒํท ์ด๋ฆ].S3.amazonaws.com/[๊ฐ์ฒด ํค]
โย Region(๋ฆฌ์ ): AWS์์ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ด์ํ๋ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ ์์น
โย ๊ฐ์ฉ ์์ญ(Availability Zone): ๊ฐ ๋ฆฌ์ ์์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ์ผํฐ(IDC)
๐ธย Client ๋ฐฐํฌ
S3
๋ฅผ ์ด์ฉํด ์ ์ ํ์ผ๋ก ๋น๋ํ์ฌ ๋ฐฐํฌCloudFront
๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ์ฝํ
์ธ ๋ฅผ ๋ ๋นจ๋ฆฌ ๋ฐฐํฌ ๊ฐ๋ฅโย Build
๐ธย Server ๋ฐฐํฌ
AWS EC2
๋ฅผ ํตํด ์์ฝ๊ฒ ์๋ฒ ๊ตฌ์ฑํ๊ณ ์๋น์ค ์ ๊ณต ๊ฐ๋ฅ๐ธย Database ๋ฐฐํฌ
RDS
๋ฅผ ํตํด EC2๋ก ๋ฐฐํฌ๋ Server Application ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์ ๊ณตํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐํฌ ๊ฐ๋ฅ๐ธย DNS
Route53
์๋น์ค ์ด์ฉEC2
์ ์ธ์คํด์ค ์ฐ๊ฒฐ (Sesiion Manager
๋ก ์ฐ๊ฒฐ) โ ์น ๋ธ๋ผ์ฐ์ ์์ ํฐ๋ฏธ๋ ์คํ```bash
# ํฐ๋ฏธ๋์ bash๋ก ๋ณ๊ฒฝ
$ bash
# ์ต์์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
$ cd ~
# ํจํค์ง ์ ๋ณด๋ฅผ ์ต์ ์ํ๋ก ์
๋ฐ์ดํธ
$ sudo apt update
# nvm ์ค์น
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
$ source ~/.nvm/nvm.sh
# nvm ์ ์ค์น๋์๋์ง ๋ฒ์ ํ์ธํด๋ณด๊ธฐ
$ nvm โversion
# node.js ์ค์น
$ nvm install node
# npm ์ค์น
$ sudo apt install npm
# git clone
$ git clone [git repository url]
$ cd [repository name]/server
$ npm i
$ sudo npm start
# EC2 ์ธ์คํด์ค์ ํผ๋ธ๋ฆญ IPv4 DNS ์ฃผ์๋ก ์ ์ ํ
์คํธํด๋ณด๊ธฐ
# (HTTPS๊ฐ ์๋ HTTP๋ก ์ ์ํ๊ธฐ)
# http://ec2-00-00-0000.ap-northeast-2.compute.amazonaws.com/
# ์ด๋ฏธ ์คํ์ค์ธ ์๋ฒ ํฌํธ๋ผ๋ ์๋ฌ ๋ฐ์์ ๊ฐ์ ๋ก ์คํ์ค์ธ ์๋ฒ ํฌํธ ์ฃฝ์ด๊ธฐ
$ sudo lsof -i:80
$ sudo kill -9 [PID]
```
โ ย ๋ณด์๊ทธ๋ฃน(Security Group), PM2 ์ถํ ์ถ๊ฐ ํ์ตํด๋ณด๊ธฐ
: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ๋ก์ธ์ค๋ฅผ ์๋์ํฌ ์ ์๋ ํ๋ก์ธ์ค ๋งค๋์
$ npm install pm2 -g
$ pm2 start app.js (error)
$ pm2 log
# ๊ด๋ฆฌ์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ authbind ํจํค์ง ์ถ๊ฐ ์ค์น
$ sudo apt-get update
$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/80
$ sudo chown ubuntu /etc/authbind/byport/80
$ sudo chmod 755 /etc/authbind/byport/80
$ authbind --deep pm2 update
S3
์ ์ โ ๋ด ๋๋ ํ ๋ฆฌ ํ์ธ
๋ก์ปฌ ํ๊ฒฝ์์ ํ๋ก์ ํธ์ client ๋๋ ํ ๋ฆฌ ๋ด์ .env
ํ์ผ์ ๋์ ์๋ฒ ์ฃผ์ ์ถ๊ฐํ๊ธฐ
REACT_APP_API_URL = http://ec2-00-00-0000.ap-northeast-2.compute.amazonaws.com/
$ npm install
$ npm run build
์์ฑ๋ build
๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ํ์ผ์ S3์ ๋ด ๋๋ ํฐ๋ฆฌ์ ๋ฃ๊ณ ์
๋ก๋ํ๊ธฐ
index.html
์ ๊ฐ์ฒด URL์ฃผ์ ์ค HTTPSโHTTP ๋ณ๊ฒฝ ํ ์ ์ํด๋ณด๊ธฐ