1์ฐจ ํ๋ก์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฝ๋๋ฅผ ์ธ๋ถ์์๋ ์ฌ์ฉํ ์ ์๋๋ก aws์ ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ๋ฐ ๊นํ๋ธ cloneํ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณด์๋ค.
ํ๋ก์ ํธ ํ ์คํธํ ๋๋ ๊ฐ์ ๊ณต๊ฐ์์ ๊ฐ์ ์์ดํ์ด๋ก๋ง ๊ฐ๋ฅํ๋ค๊ฐ, ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ณณ์์ ๋ด ์๋ฒ์ ๋ค์ด์ ์์ฒญ์ ํ๋ ๋๋ฌด ์ ๊ธฐํ๋ค ๐ (ํ ํธ์ผ๋ก๋ ํดํน๊ณผ ๊ณผ๊ธ์ด ์ข ๋ฌด์ญ๊ธฐ๋...)
RDS: ๋ก์ปฌ์ ์๋ mysql ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํด๋ผ์ฐ๋ ์์์ ์ง์ํด์ฃผ๋ ๊ฒ์ด๋ค. ์๋ง์กด์ ์ค๋ก๋ผ๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ๋ก ์๊ณ , mysql๋ ๋ฒ์ ๋ณ๋ก ์ง์๋๋ค.
S3: ์ฌ์ฉ์๊ฐ ๋ฒํท์ ์์ฑ(์ด๋ฆํ๋ฅผ ์ค ๋ด ๊ณต๊ฐ)ํด์ ํ์ผ์ ์ฌ๋ฆฌ๋ฉด, ๊ทธ ํ์ผ์ ๊ณ ์ ์ฃผ์๊ฐ ์๊ธฐ๊ณ ์ฃผ์๋ฅผ ์ ๋ ฅํ์ ๋ ํ์ผ์ ๋ฐ๋ก ์กฐํํ ์ ์๋ค. ์น ์ฌ์ดํธ ์ด๋ฏธ์ง์ ๊ฐ์ด ์ ์ ์ธ ํ์ผ๋ค์ ์ฌ๋ฆฌ๋ ๊ณณ์ด๋ค.
aws ๊ธ๋ก๋ฒ ์ธํ๋ผ์ฑ์์ ๋ฆฌ์ ๋ณ๋ก ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ๊ณผ ์๋ต ์๋๋ฅผ ๋น๊ตํด๋ดค์ ๋, ์์ธ๋ณด๋ค ๋ฏธ๊ตญ ์คํ์ด์ค๊ฐ ๋ ํจ์จ์ ์ด๋ฏ๋ก ์ง์ญ์ ์คํ์ด์ค๋ฅผ ์ ํํด์ ํ ์์ ์ด๋ค. (๋ก๊ทธ์ธ ํ ์ฐ์ธก ์๋จ์ ๋ณด๋ฉด ๋ฆฌ์ ์ ์ ํํ ์ ์๋ค)
์๋น์ค ํญ์์ EC2 ์๋น์ค๋ฅผ ํด๋ฆญํด, ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ค. ์ธ์คํด์ค ์์์ ๋๋ฅด์.
Amazon Machine Image, ์ฆ ์๋ฒ์ OS ๋จธ์ ์ ์ ํํ๋ ๋จ๊ณ๋ค. ํ๋ฆฌ ํฐ์ด์์ ์ ํ ๊ฐ๋ฅํ ์ฐ๋ถํฌ 64๋นํธ๋ฅผ 18.04๋ฅผ ์ ํํ๋ค. ๋ด ๊ณ์ ๋ฆฌ์ ์ ๋ฐ๋ผ ๊ฐ์ ์ํ์ด๋๋ผ๋ ์ฝ๋๊ฐ ๋ค๋ฅด๋, ๋ฆฌ์ ์ ๋ง๊ฒ ๊ณ ๋ฅผ ์ ์๋๋ก ํด์ผ ํ๋ค.
์ฒ์์ ๋๋ ๋ฆฌ์ ์ ์์ธ๋ก ๋ฐ๊ฟ์ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ๊ฐ๋ค๊ฐ, ์ํ ์ฝ๋๊ฐ ๋ฌ๋ผ์ ์ต์ข ์ ์ผ๋ก๋ ๋ด ๋ฆฌ์ ์์ ์ง์๋์ง ์๋ ์ํ์ด๋ผ๊ณ ์๋ฒ ์์ฑ์ ๊ฑฐ์ ๋นํ๋ค.
CPU ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์๋ฒ์ ๊ท๋ชจ๋ฅผ ์ ํํ๋ ๊ณผ์ . ํ๋ฆฌํฐ์ด๋๊น t2.micro๋ฅผ ์ ํํ๋ค. EC2์์๋ ์ปดํจํฐ์ ๋ฐ์ดํฐ ์ ์ก์ ๋ฐ๋ผ ๊ณผ๊ธ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ์ดํธ๋ฅผ ์ ํํ๋ฉด ๊ณผ๊ธ์ด ๋ง์ด ๋ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ์.
๋ด๊ฐ ๋ง๋๋ EC2 ์ธ์คํด์ค๋ ์๋ธ๋ท์ ๋ฐฐ์น๊ฐ ๋๋ค. ์๋ธ๋ท์ ip ์ฃผ์ ์ฌ์ฉํ ๊ฒ(์ฒซ ๋ฒ์งธ)๋ก ์ ํํ๋ค. ์ข ๋ฃ ๋ฐฉ์ง ๊ธฐ๋ฅ ํ์ฑํ ์ฒดํฌํ๊ณ ๋๋จธ์ง ๋ถ๋ถ์ ๊ทธ๋๋ก ๋ ์ํ๋ก ์ต์ํ๋ง ์ค์ ํด ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผ ํ๋ค. ๊ณผ๊ธ๋์ง ์๋๋ก!
virtual private cloud: aws ์ ์ฉ ๊ฐ์ ๋คํธ์ํฌ๋ก ip ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฐฉํ๋ฒฝ์ ์ค์ ํ ์ ์๋ค.
๋ ๊ฐ์ง๋ก ๋๋ ์ ธ ์๋ ์คํ ์ธ๋ฐ ๋ด์ฉ์ด ์์ด ํ๋๋ก ํฉ์ณค๋ค. ์คํ ๋ฆฌ์ง์์ ์ฉ๋์ ์ฌ๋ฆฌ๊ฒ ๋๋ฉด ์๊ธ์ด ๋ถ๊ณผ๋๋ฏ๋ก ๊ธฐ๋ณธ์ผ๋ก ํด์ ๋ง๋ ๋ค. ํ๊ทธ๋ key์ ๊ณ์ ์ด๋ฆ, ๊ฐ์ ํ๋ก์ ํธ ๋ช ์ผ๋ก ์ ๋ ฅํ๊ณ ๋์ด๊ฐ์.
ebs: elastic block store, EC2 ๋ง์ดํธ์์ ์ฌ์ฉํ๋ ์คํ ๋ฆฌ์ง ํ์ .
EC2์์๋ http, https ์ ์์ ํ์ฉํด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ํด์๋ ๊ท์น ์ถ๊ฐ๋ฅผ ํด์ผ ํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ip์์ ssh ์ ์์ ํ์ฉํ๊ฒ ๋์ด์๋ค. (=port 8000์ผ๋ก ์ด๋ค ip๋๋ผ๋ ์ ์ํ ์ ์๋๋ก ํ๋ ๊ฒ)
๊ท์น ์ถ๊ฐ ํ ํฌํธ ๋ฒ์ 8000์ผ๋ก ๋ฐ๊พธ๊ณ , ์์ค๋ ์์น ๋ฌด๊ด์ผ๋ก ์ค์ ํ๋ค.
EC2 ์๋ฒ๋ฅผ ์ฒ์ ๋ง๋ค๊ฒ ๋๋ฉด instance ์์ฑ ์์ ๋ง์ง๋ง ๋จ๊ณ์์ keypair๋ฅผ ๋ฐ๊ธํ๊ฒ ๋๋๋ฐ, ํ ๋ฒ ๋ค์ด๋ฐ์ผ๋ฉด ์ข ๋ฃํ ์ดํ์ ๋ค์ ๋ฐ์ ์ ์์ผ๋ฏ๋ก ๊ผญ ๋ด๊ฐ ์๋ ๊ฒฝ๋ก์ ์ ์ฅํด์ผ ํ๋ค.
ํฐ๋ฏธ๋์์ ํด๋น keypair๋ฅผ ํตํด EC2 ์๋ฒ์ ์ ์ํ๋ ํ๋ก์ธ์ค๋ผ ๋งค์ฐ ์ค์ํ๋ค!
๋ค์ด ๋ฐ์ keypair๋ pem ํ์ผ๋ก ์ ์ฅ๋๊ณ , ํฐ๋ฏธ๋์์ ํด๋น ๊ฒฝ๋ก์ ๋ค์ด๊ฐ ํ์ผ ๋ชจ๋๋ฅผ ๋ฐ๊ฟ์ค์ผ ํ๋ค.
chmod 400 keypairํ์ผ์ด๋ฆ.pem
instance ์๋ฒ๊ฐ ๋์๊ฐ๋ฉด ์๋์ IPv4 ํผ๋ธ๋ฆญ IP : ์ค๋ฅธ์ชฝ์ ip๊ฐ ๋ฌ๋ค. ์ฐพ์ ๊ณต์ธ ip๋ฅผ ์๋ ์ฝ๋ at ๋ถ๋ถ ๋ค์ ๋ฃ์ด์ฃผ๋ฉด EC2 ์๋ฒ์ ์ ์ํ ์ ์๊ฒ ๋๋ค!
ssh -i keypairํ์ผ์ด๋ฆ.pem ubuntu@EC2์๋ฒ์๊ณต์ธip
Q: Amazon EC2 ์์คํ ์ ์ธ์ ๋ถํฐ ์ธ์ ๊น์ง ์ฌ์ฉํ ์๊ธ์ด ์ฒญ๊ตฌ๋ฉ๋๊น?
๊ฒฐ์ ๋ Amazon EC2๊ฐ AMI ์ธ์คํด์ค์ ๋ถํ ์ํ์ค๋ฅผ ์์ํ ๋ ์์๋์ด "shutdown -h"๋ผ๋ ์น ์๋น์ค ๋ช ๋ น์ ์คํํ์ฌ ์ธ์คํด์ค๋ฅผ ์ข ๋ฃํ๊ฑฐ๋ ์ธ์คํด์ค ์คํจ๋ก ์ธํด ์ธ์คํด์ค๊ฐ ์ข ๋ฃ๋ ๋ ๋๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ธ์คํด์ค๋ฅผ ์ค์งํ๋ฉด, AWS์์ ํด๋น ์ธ์คํด์ค๋ฅผ ์ข ๋ฃํ๊ณ ์ค์ง๋ ์ธ์คํด์ค์ ๋ํด์๋ ์๊ฐ๋น ์ฌ์ฉ ์๊ธ์ด๋ ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ์ ์ฒญ๊ตฌํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Amazon EBS ๋ณผ๋ฅจ์ฉ ์คํ ๋ฆฌ์ง์ ๋ํ ๋น์ฉ์ ์ฒญ๊ตฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ AWS ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑํ๊ธฐ ์ ์ ์์ ํ ๊ฒ์ด ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน์ ์ค์ ํ๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ค์ ๊ฐ์ ๋ง๋๋ ๊ธฐ๋ฅ์ผ๋ก ๋ณด๋ฉด ๋๋ค.
mysql 5.7์ ์ ํํ๊ณ , ๊ทธ๋ฃน ์ด๋ฆ์ ๋ด ํ๋ก์ ํธ์ ๋ง๊ฒ rolex-config ์๋ฐ ์์ผ๋ก ๋ง๋ ๋ค. ์ค๋ช ์ ๊ทธ๋ฃน ์ด๋ฆ๊ณผ ๊ผญ ๊ฐ์ ํ์๋ ์๊ณ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ ๋ํด ์ค๋ช ํ๋ฉด ๋๋ค.
๊ทธ๋ฃน ์ด๋ฆ์ ๋ง๋ค ๋๋ ์ธ๋๋ฐ๊ฐ ์๋ ํ์ดํ์ผ๋ก ์์ฑํด์ผ ํ๋ ๊ฒ์ ์ฃผ์ํ์!
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๊ฐ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํ ํ๋, rds์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ฉด ์ฐธ์กฐํ๊ธฐ ์ํ ์ค์ ๊ฐ์ด๋ค.
ํ์ค ์์ฑ, ์์ง ์ต์ ์ mysql, ๋ฒ์ ์ ๊ทธ๋๋ก ๋๊ณ ํ ํ๋ฆฟ์ ํ๋ฆฌ ํฐ์ด๋ก ์ ํํ๋ค. db instance ์๋ณ์๋ ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ํ๋ก์ ํธ_๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฐ ์์ผ๋ก ์ ์ฅํ๋ค.
์๊ฒฉ ์ฆ๋ช ์ค์ ์ root๋ก ๋ณ๊ฒฝ, ๋ง์คํฐ ์ํธ๋ local์์ ์์ฑํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ํน์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ์ ์ข ์ด๋ ต๊ฒ ๋ฐ๊พผ ๋ค์์ local์์ mysql ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝํ๊ธฐ! ์คํ ๋ฆฌ์ง ์๋ ์กฐ์ ํ์ฑํ๋ ์ธ์ฒดํฌํ๋ค.
๋๋จธ์ง๋ ํ๋ฆฌํฐ์ด์ด๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค์ ๋๋ ๋ถ๋ถ์ด๋ ๊ฑด๋ค์ง ๋ง์.
๋ณด์ ๊ทธ๋ฃน ๊ท์น์์, ์ธ๋ฐ์ด๋(๋์๊ฒ ํต์ ์ด ๋ค์ด์ค๋) ๊ท์น ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ์์ฐฝ์ด ์ด๋ฆฐ๋ค. ์๋ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณด๋ฉด ์ธ๋ฐ์ด๋ ๊ท์น์์ ์์ค์ ip๊ฐ ๋ฌ๋ค.
๊ท์น์ ํธ์งํด์ ์์น ๋ฌด๊ด์ผ๋ก ๋ฐ๊พธ๋ฉด ๊ณ์ ์ ๋ณด, ๋น๋ฐ ๋ฒํธ๋ง ์๋ฉด ๋ชจ๋ ๊ณณ์์ ๋ค์ด์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ์ฅ๋๋ ์ค์ ์ ์๋๋
, ์ฐ์ ์์
ํ ๋๋ง ์ด์ด๋๋ ๊ฒ์ผ๋ก!
rds์์ ์๋ํฌ์ธํธ๋ฅผ ๋ณต์ฌํ๊ณ , ์๋์ ๊ฐ์ด ์ ๋ ฅํ๋ฉด aws์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋ค.
mysql -h rds์๋ํฌ์ธํธ -u root -p
๋ด๊ฐ ๋ก์ปฌ์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ฌํด, ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋ฐ์ด๋ฃ์ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ๋ฐ์ด๋ฃ๊ธฐ ์ํด์๋ aws์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ง๋ค์ด์ ธ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ create ํ๊ณ , ํ์ดํ๋ฅผ ๋ฐ๋๋ก ํด์ฃผ๋ฉด aws ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฃ์ด์ค ์ ์๋ค.
*ํ์ด์ฌ ์ฃผ์์ ์ฐ๊ธฐ ์ํด ์ฝ๋๋ ์์๋ก ํ์ด์ฌ ์ธ์ด๋ก ์์ฑํ์ผ๋ฉฐ, ๋ฐ์ set์ด ๊ฐ์กฐ๋ ๊ฒ์ ๋ด์ฉ๊ณผ ๋ฌด๊ดํ๋ค.
# local root์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ sqlํ์ผ๋ก ๋ณต์ฌํด ๊บผ๋ธ๋ค
mysqldump -u root -p ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ > ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ.sql
# aws rds์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค
mysql> create database ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ character set utfmb4 collate utfmb4_general_ci;
# ์๊น local์์ dumpํ sqlํ์ผ์ aws rds๋ก ๋ฃ์ด์ค๋ค.
mysql -h red์๋ํฌ์ธํธ -u root -p ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ < ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ.sql
๋๋ ERROR 1273 (HY000): Unknown collation: โutf8mb4_0900_ai_ciโ ์ด๋ฐ ์์ ์๋ฌ๊ฐ ์ค๊ฐ์ ๋ฌ๋๋ฐ, ๊ตฌ๊ธ๋งํด๋ณด๋ mysql ๋ฒ์ ์ฐจ์ด์์ ์ค๋ ์๋ฌ์๋ค. utf8mb4_0900_ai_ci๋ฅผ ๋ชจ๋ utf8mb4_general_ci๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ฌธ์ ์์ด ๋ค์ด๊ฐ๋ค!
pem ํ์ผ๋ก ์๋ฒ์ ์ ์ํ๋ค์์, ๊ฐ๋ฐํ๊ฒฝ ์ฒ์ ์ค์ ํ ๋์ ๋์ผํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋๋ค.
$wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
์ฝ๋ค ๊ฐ์ํ๊ฒฝ์ ๋ง๋ ๋ค์, ๊นํ repo์์ git cloneํด์ค๊ณ , requitrements.txt ํ์ผ์์ ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง ๋ชฉ๋ก์ ๋ค์ด๋ก๋ ํ๋ค.
host๋ฅผ rds host๋ก ๋ฐ๊ฟ์ค์ผ ํจ!
์ผ๋จ ๊ณผ์ ๋ชจ๋๋ฅผ ๊ธฐ๋กํ์ง๋ง, ์ค๊ฐ ์ค๊ฐ์ ๋์ค๋ ๊ฐ๋ ๋ค์ ๋ํด์ ๋ ์์ธํ ์ ๋ฆฌํ๋ ์๊ฐ์ด ํ์ํ ๊ฒ ๊ฐ๋ค.
multi request ํ๊ฒฝ์ผ๋ก ์ด์ํ๊ธฐ ์ํด์๋ gunicorn์ installํด์ผ ํ๋๋ฐ, ๋น์ฅ์ ์์ฒญ์ด ๋ง์ด ๋ค์ด์ค์ง ์์ผ๋ ์ฐ์ ์ด์ ๋ ์ ์์ ๋ง๋ฌด๋ฆฌ ๐