๐ AWS Cloud
Cloud ๊ธฐ๋ณธ ์ง์
Cloud ๋?
ํด๋ผ์ฐ๋ ์ปดํจํ ์ด๋ ์ธํฐ๋ท ๊ธฐ๋ฐ์ ์ปดํจํ ์ ๋งํฉ๋๋ค. ์ธํฐ๋ท ์์ ๊ฐ์ํ๋ ์๋ฒ์ ํ๋ก๊ทธ๋จ์ ๋๊ณ ํ์ํ ๋๋ง๋ค ์ปดํจํฐ๋ ์ค๋งํธํฐ ๋ฑ์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ์๋น์ค์ ๋๋ค.
ํด๋ผ์ฐ๋(Cloud)๋ผ๋ ๋จ์ด๊ฐ ๋งํด์ฃผ๋ฏ, ์ธํฐ๋ท ํต์ ๋ง ์ด๋๊ฐ์์ ๊ตฌ๋ฆ์ ์ธ์ฌ ๋ณด์ด์ง ์๋ ์ปดํจํ ์์(CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ๋ฑ)์ ์ํ๋ ๋๋ก ๊ฐ์ ธ๋ค ์ธ ์ ์์ต๋๋ค. ๊ตฌ๋ฆ์ ์ธ์ฌ ์๋ค๋ ๊ฒ์ ๊ทธ ๋ด๋ถ๋ฅผ ๋ณด๋ ค๊ณ ํ๊ฑฐ๋ ์์ง ์์๋ ์ผ๋ง๋ ์ง ๋ด๊ฐ ์ํ๋ ๊ฒ์ ๊บผ๋ด์ด ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ฉฐ, ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋ ์ด๋ ๊ณณ์์๋ ์ด๊ฒ์ ๋ณด์ฅ ๋ฐ์ ์ ์๋ค๋ ๋ป์ ๋๋ค.
AWS(Amazon Web Service), Microsoft Azure, GCP(Google Cloud Platform) ๋ฑ์ด ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ํ๋ซํผ ๋ณ ์ฉ์ด
ํด๋ผ์ฐ๋ ์ปดํจํ ์๋น์ค ์ด์ฉ๋ฐฉ์
- ์จํ๋ ๋ฏธ์ค = ์ง์ ์๋ฒ๋ฅผ ์ค์นํ๋ ๊ฒ ์ฆ, ํ๋์จ์ด ๋ถ๋ถ๊ณผ ์ํํธ์จ์ด ๋ถ๋ถ์ ๋๋ค ์ง์ ๊ด๋ฆฌ
- ํด๋ผ์ฐ๋ (IaaS / Paas) = ๋์ ๋ด๋ฉด ์ต์ ์ ์๋ฒ๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ, ์ํํธ์จ์ด์ ์ธ ๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌ
- ์๋ฒ๋ฆฌ์ค (BaaS/FaaS) = ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ํ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ณ ์คํํ ์ ์๋๋ก ์ ๊ณต, ์๋ฒ๋ฆฌ์ค์ ์ ๋ก๋ ํ ํจ์๊ฐ 24์๊ฐ ๋์๊ฐ๋๊ฒ ์๋ ํ์ ์ ์์ฒญํ์ฌ ์์ ์ํ (AWS ๋๋ค)
AWS ์ฃผ์ ์๋น์ค
- Amazon S3(Simple Storage Service) = ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์๋น์ค๋ก Bucket๊ณผ Object ๋ผ๋ ๋จ์๊ฐ ์กด์ฌํ๋๋ฐ ๊ฐ์ฒด(Object)๋ ๋ฐ์ดํฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ์ ์ฅ ๋จ์์ด๋ฉฐ ๋ฒํท(Bucket)์ ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ
- Amazon RDS(Realational Database Service) = ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ AuroraDB, MSSQL, Oracle, MySQL ๋ฑ์ผ๋ก RDBMS ์๋น์ค๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ์ง ์๊ณ ์ด์ฉํ ์ ์๋๋ก ์ ๊ณต
- Amazon DynamoDB = NoSQL์ฉ ์๋น์ค๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์ถ๊ฐ ๋ถ์ ์๋น์ค์ ์ฐ๊ณ ๊ฐ๋ฅํ๋๋ก ์๋น์ค ์ ๊ณต
์๋ฒ๋ฆฌ์ค ์๋น์ค
- AWS Lambda = ์ฝ๋๋ฅผ ์์ ํ์ง ์์๋ ์คํํ ์ ์๋๋ก ๋ฐํ์ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์๋น์ค, ์ฝ๋๋ฅผ ์ ๋ก๋ํ๊ณ ํธ๋ฆฌ๊ฑฐํ๊ฑฐ๋ ์ง์ ํธ์ถํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- Amazon API Gateway = REST ๋ฐ API๋ฅผ ์์ฑ,๊ฒ์,์ ์ง ๋ชจ๋ํฐ๋ง. ํ๋ก ํธ ์น์์ ๋ฐฑ์๋๋ก ๋ฐ์ดํฐ ์ ์ก ์ ๋๋ค์ ํจ๊ป ์ฌ์ฉ
- Amazon Cognito = ์น ๋ฐ ์ฑ์ ๋ํ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ์ฌ์ฉ์ ๊ด๋ฆฌ, OAuth ๋ฐ ํ์ฌ ์ธ์ฆ์ ํตํด ๋ก๊ทธ์ธ ๊ฐ๋ฅ
Cloud ์ฌ์ฉ์ ๊ด๋ฆฌ
AWS์๋ Root๊ณ์ ๊ณผ IAM(๊ฐ์ธ) ๊ณ์ 2๊ฐ๊ฐ ์กด์ฌํฉ๋๋ค.
- root ์ฌ์ฉ์
= AWS ๊ณ์ ์ ์ฒ์ ์์ฑํ ๋ ๊ณ์ ์ ๋ชจ๋ AWS ๋ฆฌ์์ค์ ์ก์ธ์ค ๊ถํ์ด ์๋ ID
= ์ด๋ฉ์ผ ์ฃผ์์ ์ํธ๋ฅผ ์ด์ฉํ์ฌ ์ธ์ฆ
= ์ผ์์ ์ธ ์์
๋ฐ ๊ด๋ฆฌ ์์
์ ๋ฃจํธ ์ฌ์ฉ์์ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๊ณ ๊ณ์ ๋ฐ ๊ณผ๊ธ ๊ด๋ฆฌ ์์
์ํ์์๋ง root ์ฌ์ฉ์ ์ฌ์ฉ ๊ถ์ฅ
- IAM (Identity and Access Management) ์ฌ์ฉ์
= AWS ์๋น์ค์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ํต์
= AWS ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ฉฐ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ํ์ฉ ๋ฐ ๊ฑฐ๋ถ ๊ฐ๋ฅ
= AWS ๊ด๋ฆฌ๋ฅผ ์ํ ๊ทธ๋ฃน, ์ฌ์ฉ์ ๋ฐ ์ญํ(Role)์์ฑ ๊ฐ๋ฅ
IAM ์ ์ฑ
IAM ์ ์ฑ ์ ํ์คํฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์๊ด์์ด ์์ ์ ๋ํ ๊ถํ์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด,ย ์ ์ฑ ์ด GetUser ์์ ์ ํ์ฉํ๋ค๋ฉด ์ดย ์ ์ฑ ์ด ์๋ ์ฌ์ฉ์๋ AWS Management Console, AWS CLI, ๋๋ AWS API์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
- Version = ์ ์ฑ ์ธ์ด ๋ฒ์
- Statement = ์ ์ฑ ์์๋ฅผ ๋ด๋ ์ปจํ ์ด๋
๊ถํ๋ถ์(Statement)์ ํตํด ์์(Resource)์ด ํ๊ฐ/๊ฑฐ๋ถ ๋ ์์ (Action) ๊ถํ ๋ถ์ฌ
- Action = โ OOO AWS ์๋น์คโ๋ฅผ โ์ด๋ค ์์ โ์ ํ๊ฐ(๊ฑฐ๋ถ)ํ ์ง ์ค์
ex) โec2:Describe*โ = EC2์ ๊ด๋ จ๋ ๋ชจ๋ ๊ถํ์ ๋ํ๋
- Effect = ํ๊ฐ๋ฅผ ๋ถ์ฌํ ์ง(Allow), ๊ฑฐ๋ถ๋ฅผ ๋ถ์ฌํ ์ง(Deny) ์ ์ฑ ๊ฒฐ์
- Resource = โOO AWS ๋ฆฌ์์คโ์ ์์ ์ ํ๊ฐ(๊ฑฐ๋ถ)ํ ์ง ์ค์
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "elasticloadbalancing:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "autoscaling:Describe*",
"Resource": "*"
}
]
}
IAM ์ธ์ฆ ์ ๋ณด(Credential)
= API Key, SSH Pubkey, AWS CLI & SDK ๋ฑ ์๋น์ค ํค๋ฅผ ํฌํจ
= ๊ฐ๋ฐ ์ค์, ํ๊ฒฝ ์ค์ ๋ฏธํก ๋ฑ์ผ๋ก ๊ณต๊ฐ๋ ์ ์ฅ์์ ์ ์ฅ๋์ง ์๋๋ก ์ ์ (์คํฌ๋ฆฐ์ท, ์ฝ๋ ํ์๊ด๋ฆฌ ํ์ผ(.git, .env) ๊ด๋ฆฌ ๋ฏธํก, ์๋ฒ์ธก ์ฝ๋, HTML ์ฝ๋ ์ฃผ์ ๋
ธ์ถ ๋ฑ ๋ค์ํ๊ฒ ์ ์ถ ๊ฐ๋ฅ)
= IAM ์ฌ์ฉ์๋ ๊ณ ์ ํ ์ก์ธ์ค ํค๋ฅผ ์์ ์ ๊ถํ์ ํํ์ฌ ๊ต์ฒด ๊ฐ๋ฅ (๋จ, root ์ฌ์ฉ์๋ ๋ชจ๋ IAM ์ฌ์ฉ์์ ํค ๊ด๋ฆฌ์ ๊ด์ฌ ๊ฐ๋ฅ)
= ํ๊ฒฝ๋ณ์ ~/.aws/credentials ์ ์ ์ฅํ์ฌ ํ๋กํ์ผ ๋ฑ๋ก ํ ์ฌ์ฉ
[default]
aws_access_key=id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXutnFEMI/K7MDENG/bPxRfiCYEXAPMP
- ์ธ์ฆ์ ๋ณด ์ ์ถ ์ ์ํ
์ธ์คํด์ค ์กฐ์(์์,์ข ๋ฃ,์๊ฒฉ์ ์), ํ ์ฌ์ฉ์ ์์ฑ, ๊ถํ๋ถ์ฌ, ๋ก๊ทธ ์ญ์ ๋ฑ์ ๊ณต๊ฒฉ์ด ๊ฐ๋ฅ