AWS ๋ง์ด๊ทธ๋ ์ด์
์ค์ ๊ฐ์ด๋: ์ค์ ์์ด ์๋ฒฝํ๊ฒ ์ฑ๊ณตํ๋ 5๊ฐ์ง ํต์ฌ ์ ๋ต
AWS๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ค๋ ๊ฑด, ๋ฒ์กํ ๋์๋ฅผ ์๋ก์ด ํ์ฑ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ๋งํผ ํฅ๋ฏธ์ง์งํ์ง๋ง ์ํ๋ ๋ง์ต๋๋ค! ํ ๋ฒ์ ์ค์๊ฐ ๋ค์ดํ์, ์์ฐ ์ด๊ณผ, ๋ณด์ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ฃ . Fortune 500 ๊ธฐ์
์ ํด๋ผ์ฐ๋ ์๋ฃจ์
์ 16๋
๋๊ฒ ์ค๊ณํ๋ฉด์ ์ง์ ๊ฒช์ ๋ผ์ํ ๊ฒฝํ๊ณผ ์ค์ ๋
ธํ์ฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ์๋ 5๊ฐ์ง ์น๋ช
์ ์ค์๋ฅผ ํผํ ์ ์๋๋ก, ๋ณต๋ถ์ด ๊ฐ๋ฅํ ์ฝ๋ ์ค๋ํซ, ์ถ์ฒ ํด, ์ ๋ต๊น์ง ๋ชจ๋ ๋ด์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ํ์ ์์
์ด ๋๋ ์ฌ์ , ์ง๊ธ ์์ํฉ๋๋ค! ![]()
![]()
์ค์ 1: AWS ๋น์ฉ์ ๊ณผ์ํ๊ฐ (์์ฐ ํญํ ๋ง๊ธฐ)
- ํจ์ : "AWS๋ ๋ ์ ๋ ดํ๋ค"๋ ์ฐฉ๊ฐ! ํธ๋ํฝ, ์คํ ๋ฆฌ์ง, EC2 ์ธ์คํด์ค ๋ฑ ์จ์ ๋น์ฉ์ด ์์ฒญ๋ ์ ์์ต๋๋ค.
- ํด๊ฒฐ๋ฒ: ์ฌ์ ๋น์ฉ ์ฐ์ + ์ค์๊ฐ ๋น์ฉ ๋ชจ๋ํฐ๋ง
- ์ค์ ์์:
bash
aws pricing get-products --service-code AmazonEC2 --filters "Type=TERM_MATCH,Field=instanceType,Value=t3.micro" --region us-east-1
EC2 t3.micro ์ธ์คํด์ค ๋น์ฉ์ ์ฐ์ถํ๋ ๋ช ๋ น์ด์ ๋๋ค.์์ฐ ์๋ฆผ ์ค์ ์์:
bash
aws budgets create-budget \
--account-id 123456789012 \
--budget '{"BudgetName": "MigrationBudget", "BudgetLimit": {"Amount": 1000, "Unit": "USD"}, "TimeUnit": "MONTHLY"}' \
--notifications-with-subscribers '[{"Notification": {"NotificationType": "ACTUAL", "ComparisonOperator": "GREATER_THAN", "Threshold": 80}, "Subscribers": [{"SubscriptionType": "EMAIL", "Address": "your-email@example.com"}]}]'
- ์ถ์ฒ ํด: AWS Pricing Calculator, AWS Cost Explorer, AWS Budgets
์ค์ 2: IAM ๋ณด์ ๊ตฌ์ฑ ๋ฌด์ (๊ณ์ ๋
ธ์ถ ๋ฐฉ์ง)
- ํจ์ : ๊ธํ๊ฒ IAM ์ธํ ํ๋ฉด ๋๋ฌด ๋์ ๊ถํ, MFA ๋ฏธ์ ์ฉ ๋ฑ ๋ณด์ ํ์ ์ด ๋ฐ์.
- ํด๊ฒฐ๋ฒ: ๊ถํ ์ต์ํ ์์น(Least Privilege) ์ ์ฉ + MFA ๊ฐ์ + IAM Access Analyzer ํ์ฉ + ์๋ํ
- ์ค์ ์์: EC2์ฉ ์ต์ ๊ถํ IAM Role Terraform ์์
text
resource "aws_iam_role" "ec2_role" {
name = "secure-ec2-role"
assume_role_policy = jsonencode({
Version = "2012-10-17",
Statement = [{
Action = "sts:AssumeRole",
Effect = "Allow",
Principal = { Service = "ec2.amazonaws.com" }
}]
})
}
resource "aws_iam_role_policy" "ec2_policy" {
name = "ec2-s3-access"
role = aws_iam_role.ec2_role.id
policy = jsonencode({
Version = "2012-10-17",
Statement = [{
Action = ["s3:GetObject", "s3:ListBucket"],
Effect = "Allow",
Resource = ["arn:aws:s3:::my-bucket/*", "arn:aws:s3:::my-bucket"]
}]
})
}
Access Analyzer ํ์ฉ ์์:
bash
aws accessanalyzer list-analyzed-resources --analyzer-arn arn:aws:accessanalyzer:us-east-1:123456789012:analyzer/MyAnalyzer
- ์ถ์ฒ ํด: AWS IAM Access Analyzer, Terraform, AWS CLI
์ค์ 3: ์คํ ์ค์ผ์ผ๋ง๊ณผ ๋ก๋๋ฐธ๋ฐ์ฑ ๋ฏธ์ ์ฉ (์ฑ๋ฅ/๋น์ฉ ์ต์ ํ ์คํจ)
- ํจ์ : EC2๋ง ๊ณ ์ ์ผ๋ก ๋ฐฐํฌ ์, ํธ๋ํฝ ํญ์ฆ/์์ ๊ณผ๋ค ํ ๋น ๋ฌธ์ ๋ฐ์.
- ํด๊ฒฐ๋ฒ: Auto Scaling Group + Elastic Load Balancer(ELB)๋ก ๋์ ํธ๋ํฝ ์ ์ด
- ์ค์ ์์:
bash
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-template LaunchTemplateName=my-template,Version=1 \
--min-size 2 \
--max-size 5 \
--desired-capacity 3 \
--vpc-zone-identifier "subnet-12345678,subnet-87654321" \
--load-balancer-names "my-load-balancer"
CloudWatch ์๋ ์์:
bash
aws cloudwatch put-metric-alarm \
--alarm-name HighCPUAlarm \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--threshold 70 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--period 300 \
--statistic Average \
--alarm-actions arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroupName/my-asg:policyName/scale-out
- ์ถ์ฒ ํด: AWS Auto Scaling, Elastic Load Balancer, Amazon CloudWatch
์ค์ 4: ์ฌ์ ํ
์คํธยท๊ฒ์ฆ ๋๋ฝ (๋ง์ด๊ทธ๋ ์ด์
ํ ์ฅ์ ๋ฐฉ์ง)
- ํจ์ : ๊ณผ๊ฑฐ ์ฑ DB๋ฒ์ , ๋คํธ์ํฌ ํธํ์ฑ ๋ฑ ์ถฉ๋ถํ ํ ์คํธํ์ง ์์ผ๋ฉด ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์.
- ํด๊ฒฐ๋ฒ: ์๋๋ฐ์ค ํ๊ฒฝ์์ PoC ๋ง์ด๊ทธ๋ ์ด์ + AWS Migration EvaluatorยทSCT ๋ฑ์ผ๋ก ํธํ์ฑ/์ฑ๋ฅ ์ ๊ฒ
- ์ค์ ์์: AWS SCT๋ก DB ํธํ์ฑ ๋ถ์
bash
aws-sct --source "mysql://onprem-db:3306" --target "rds-mysql://aws-rds:3306" --report
Application Discovery Service ํ์ฉ:
bash
aws discovery start-data-collection-by-agent-ids --agent-ids agent-12345678
- ์ถ์ฒ ํด: AWS Schema Conversion Tool, AWS Migration Evaluator, AWS Application Discovery Service
์ค์ 5: ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
ยท๋ฐฑ์
์ ๋ต ๋ฏธํก (๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํ๋ณด)
- ํจ์ : ๋ฐฑ์ ๊ฒ์ฆ ์คํจ/๋ณต๊ตฌ ํ ์คํธ ๋ฏธ๋น๋ก ๋ฐ์ดํฐ ์์ค์ด๋ ์ฅ์๊ฐ ๋ค์ดํ์ ๋ฐ์
- ํด๊ฒฐ๋ฒ: AWS DMS๋ก ๋ฐ์ดํฐ ์ด์ + AWS Backup์ผ๋ก ์๋ํ ๋ฐฑ์ /๋ณต์ ํ ์คํธ ํ์
- ์ค์ ์์: DMS๋ก MySQL DB ๋ง์ด๊ทธ๋ ์ด์
bash
aws dms create-replication-task \
--replication-task-identifier my-migration-task \
--source-endpoint-arn arn:aws:dms:us-east-1:123456789012:endpoint:SOURCE \
--target-endpoint-arn arn:aws:dms:us-east-1:123456789012:endpoint:TARGET \
--replication-instance-arn arn:aws:dms:us-east-1:123456789012:rep:INSTANCE \
--migration-type full-load \
--table-mappings file://table-mappings.json
text
{
"rules": [{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "migrate-all",
"object-locator": { "schema-name": "%", "table-name": "%" },
"rule-action": "include"
}]
}
AWS Backup ์๋ํ ์์:
bash
aws backup start-backup-job \
--backup-vault-name MyVault \
--resource-arn arn:aws:rds:us-east-1:123456789012:db:my-rds \
--iam-role-arn arn:aws:iam::123456789012:role/backup-role
- ์ถ์ฒ ํด: AWS Database Migration Service, AWS Backup, Amazon S3
์ค์ ์ฑ๊ณต๋ด & ์ก์
ํ๋
์ง๋ํด 50TB ๋ฐ์ดํฐ๋ฅผ AWS๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด์, ๋น์ฉ ํญํ์ ์ฌ์ ์ ์ฐจ๋จํ๊ณ , ๊ถํ ๋ฌธ์ ยทDB ํธํ์ฑ ์ด์๋ฅผ ์ฌ์ PoC์์ ๋ฐ๊ฒฌยทํด๊ฒฐํ๋ฉฐ ๋ฌด์ค๋จ, 30% ๋น์ฉ ์ ๊ฐ์ด๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ ์๋์ ๊ฐ์ด ์ค์ฒํ๋ฉด ๋ฐ๋์ ์ฑ๊ณตํ ์ ์์ต๋๋ค!
AWS ๋ง์ด๊ทธ๋ ์ด์
์์
์ด ๋๋ ์ก์
ํ๋
- ๋น์ฉ ์ฐ์ : Pricing Calculator + CLI ์ค๋ํซ
- IAM ๋ณด์ ๊ฐํ: Terraform IAM Role + Access Analyzer
- Auto Scaling ์ ์ฉ: Auto Scaling Group CLI
- ํ ์คํธ/๊ฒ์ฆ: PoC + SCT/Migration Evaluator
- ๋ฐ์ดํฐ ์์ ํ๊ฒ ์ด์ : DMS + AWS Backup
