0Pricing
AWS Solutions Architect · 강의

고성능 및 비용 최적화 시나리오

캐싱 전략, 데이터 레이크 쿼리 최적화, 예약 인스턴스와 스팟의 절충점 및 읽기 전용 복제본 아키텍처에 관한 시나리오 문제에 답합니다.

고성능 및 비용 최적화 시나리오은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

시나리오 1: 데이터베이스 부하를 줄이기 위한 캐싱

시나리오: 한 뉴스 웹사이트의 RDS MySQL 데이터베이스가 최대 1시간에 한 번 변경되는 기사 콘텐츠에 대해 읽기 트래픽의 90%를 처리합니다. 데이터베이스 CPU 평균 사용률은 80%이고 비용은 증가하며 쿼리당 지연 시간은 200ms입니다. 해결책: lazy loading (cache-aside) 패턴을 사용하여 RDS 앞에 ElastiCache Redis cluster를 추가합니다. 애플리케이션은 먼저 Cache를 확인하고, Cache 적중 시 캐시된 기사를 <1ms 만에 반환합니다. Cache 미적중 시 RDS를 조회하고 결과를 반환한 다음 1시간 TTL로 Cache에 기록합니다. 예상 결과는 Cache 적중률 90%, RDS CPU 사용률 20% 미만, 캐시된 응답의 지연 시간 5ms 미만입니다.

import boto3, json

elasticache = boto3.client('elasticache')
redis_client = None  # assume redis-py client connected to ElastiCache endpoint

def get_article(article_id):
    cache_key = 'article:' + str(article_id)
    # Check cache first
    cached = redis_client.get(cache_key)
    if cached:
        return json.loads(cached)  # cache hit: <1ms
    # Cache miss: query RDS
    article = rds_query('SELECT * FROM articles WHERE id = %s', article_id)
    # Write to cache with 1-hour TTL
    redis_client.setex(cache_key, 3600, json.dumps(article))
    return article

시나리오 2: 정적 자산 전송을 위한 CloudFront

시나리오: 아시아 태평양 사용자가 us-east-1의 EC2에서 호스팅되는 웹 애플리케이션을 불러오는 데 2~4초가 걸립니다. 애플리케이션은 대용량 정적 자산(이미지, JS, CSS)을 제공합니다. 해결책: ALB 앞에 CloudFront 배포를 배치합니다. /static/* 경로에 긴 TTL(예: 1주)을 사용하는 캐시 동작을 구성하여 아시아 사용자와 가까운 CloudFront 엣지 위치에 정적 파일을 캐시합니다. 동적 API 요청은 TTL=0으로 캐싱을 우회합니다. 아시아 사용자는 us-east-1까지 왕복할 필요 없이 싱가포르 또는 도쿄 엣지 위치에서 100ms 이내에 정적 자산을 불러옵니다.

# CloudFront origin for ALB + separate behaviour for static assets
aws cloudfront create-distribution --distribution-config '{
  'Origins': {
    'Quantity': 1,
    'Items': [{
      'Id': 'alb-origin',
      'DomainName': 'my-alb.us-east-1.elb.amazonaws.com',
      'CustomOriginConfig': {"HTTPSPort": 443, "OriginProtocolPolicy": "https-only"}
    }]
  },
  'CacheBehaviors': {
    'Quantity': 1,
    'Items': [{
      'PathPattern': '/static/*',
      'DefaultTTL': 604800,
      'MaxTTL': 604800
    }]
  },
  'DefaultCacheBehavior': {"DefaultTTL": 0}
}'

시나리오 3: Compute Optimizer를 사용한 적정 크기 조정

시나리오: 한 회사에 EC2 인스턴스 500개가 있으며, 그중 많은 인스턴스가 3년 전에 큰 인스턴스 유형으로 프로비저닝되었습니다. AWS 청구액은 높지만 어떤 인스턴스가 과도하게 프로비저닝되었는지 알지 못합니다. 해결책: AWS Compute Optimizer를 활성화합니다(무료이며 CloudWatch 지표 14일치를 사용합니다). Compute Optimizer는 각 인스턴스의 실제 CPU, 메모리, 네트워크 및 디스크 사용률을 분석하고 적정 크기 조정 권장 사항을 제공합니다. 평균 CPU 사용률이 8%인 t3.xlarge에는 t3.small로 축소하라는 권장 사항이 제공됩니다. 500개 인스턴스 전체에 권장 사항을 적용하면 일반적으로 EC2 비용이 20~40% 감소합니다.

# Enable Compute Optimizer at account level
aws compute-optimizer update-enrollment-status \
  --status Active

# Get EC2 instance recommendations
aws compute-optimizer get-ec2-instance-recommendations \
  --filters Name=Finding,Values=OVER_PROVISIONED \
  --query 'instanceRecommendations[*].{Instance: instanceArn, Current: currentInstanceType, Recommended: recommendationOptions[0].instanceType}' \
  --output table

시나리오 4: 일괄 처리를 위한 Spot Instances

시나리오: 한 유전체학 회사가 매일 밤 8시간이 걸리는 일괄 작업을 실행하며, 중단되면 다시 시도할 수 있습니다. 이러한 작업에 EC2 On-Demand를 사용하면 월 10,000달러가 듭니다. 해결책: 일괄 처리 인스턴스 집합에 EC2 Spot Instances를 사용합니다. Spot Instances는 사용되지 않는 EC2 용량으로, 최대 90% 할인된 가격에 이용할 수 있습니다. 중단을 허용할 수 있는 일괄 작업에는 AWS Batch를 사용합니다. AWS Batch가 실패한 Spot 작업을 자동으로 다시 queue에 넣고 혼합 인스턴스 집합(Spot + 최소한의 On-Demand 대체)을 사용합니다. 예상 절감액은 컴퓨팅 비용의 70~90%로, 월 10,000달러에서 1,000~3,000달러로 감소합니다.

# AWS Batch compute environment with Spot instances
aws batch create-compute-environment \
  --compute-environment-name spot-genomics \
  --type MANAGED \
  --state ENABLED \
  --compute-resources '{
    "type": "SPOT",
    "bidPercentage": 60,
    "minvCpus": 0,
    "maxvCpus": 256,
    "instanceTypes": ["optimal"],
    "subnets": ["subnet-1a", "subnet-1b"],
    "securityGroupIds": ["sg-batch"],
    "instanceRole": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole",
    "spotIamFleetRole": "arn:aws:iam::123456789012:role/AmazonEC2SpotFleetRole"
  }' \
  --service-role arn:aws:iam::123456789012:role/AWSBatchServiceRole

시나리오 5: 가변 트래픽을 위한 DynamoDB On-Demand

시나리오: 한 게임 순위표가 프로비저닝된 처리량으로 DynamoDB를 사용합니다. 게임 출시 중에는 트래픽이 50배 급증하여 Table이 요청을 제한합니다. 출시 기간 외에는 처리량이 거의 0이므로 프로비저닝된 용량이 낭비됩니다. 해결책: DynamoDB를 On-Demand 용량 모드로 전환합니다. On-Demand는 수동으로 용량을 계획하지 않아도 모든 처리량에 즉시 맞춰 확장하며, 프로비저닝된 단위가 아니라 요청별로 요금이 부과됩니다. 유휴 용량 비용 없이 실제로 수행한 요청에 대해서만 비용을 지불합니다. On-Demand는 용량 관리가 필요 없고 요청 제한이 발생하지 않는다는 보장 대신 요청당 비용이 약간 더 높습니다.

# Switch existing DynamoDB table to On-Demand mode
aws dynamodb update-table \
  --table-name Leaderboard \
  --billing-mode PAY_PER_REQUEST

# Verify the change
aws dynamodb describe-table \
  --table-name Leaderboard \
  --query 'Table.BillingModeSummary.BillingMode'

시나리오 6: 예측할 수 없는 액세스를 위한 S3 Intelligent-Tiering

시나리오: 한 회사가 S3 Standard에 사용자가 생성한 이미지 수백만 개를 저장하고 있습니다. 액세스 패턴이 예측하기 어렵습니다. 일부 이미지는 매일 액세스되지만, 다른 이미지는 몇 달 동안 액세스되지 않습니다. 수명 주기 정책을 직접 관리하지 않고 스토리지 비용을 줄이려고 합니다. 해결책: S3 Intelligent-Tiering을 사용합니다. 액세스 패턴에 따라 객체를 계층 간에 자동으로 이동합니다. Frequent Access(Standard), Infrequent Access(30일 이상 액세스되지 않음), Archive Instant Access(90일 이상), Archive Access(90일 이상, 선택 사항)가 있습니다. Intelligent-Tiering 내에서는 검색 요금이 없습니다. 모니터링 요금은 객체 1,000개당 월 $0.0025로, 대규모 데이터 세트에서는 무시할 수 있을 정도로 적습니다.

# Move objects to Intelligent-Tiering via lifecycle policy
aws s3api put-bucket-lifecycle-configuration \
  --bucket user-images-bucket \
  --lifecycle-configuration '{
    "Rules": [{
      "ID": "AutoTier",
      "Status": "Enabled",
      "Filter": {},
      "Transitions": [{
        "Days": 0,
        "StorageClass": "INTELLIGENT_TIERING"
      }]
    }]
  }'

시나리오 7: Athena와 Redshift의 절충안

시나리오: 한 스타트업이 S3 데이터 레이크 테이블을 조회하려고 합니다. 일주일에 약 10회의 임시 조회를 실행합니다. 한 공급업체가 dc2.large 클러스터를 사용하는 Amazon Redshift를 제안했습니다. 스타트업을 위한 해결책: Amazon Athena로 시작합니다. 인프라 비용이 없고 스캔한 데이터에 대해서만 비용을 지불합니다(약 $5/TB). 파티션이 잘 구성된 Parquet 데이터를 일주일에 10회 조회하면 월 비용이 $5 미만일 수 있습니다. Redshift dc2.large는 계속 실행할 경우 월 약 $180입니다. 조회 동시성이 높거나(하루 50회 이상) 1초 미만의 응답 시간이 필요한 경우에만 Redshift가 비용 효율적입니다. 'ad hoc, infrequent'라는 키워드는 Athena를 명확히 가리킵니다.

# Athena cost estimate for 10 queries/week:
# Assume each query scans 5 GB of Parquet data
# 10 queries x 5 GB = 50 GB / week = 200 GB / month
# Athena cost: 200 GB x $0.005/GB = $1.00 / month
#
# Redshift dc2.large cost: $0.25/hr x 24hr x 30days = $180/month
#
# For 10 queries/week -> Athena saves $179/month
# Breakeven: when queries scan >36 TB/month or concurrency >50/day -> use Redshift

시나리오 8: EBS 볼륨 유형 선택

시나리오: 한 관계형 데이터베이스 서버에 일관되게 낮은 지연 시간으로 64,000 IOPS가 필요합니다. 현재 사용 중인 gp3 EBS 볼륨이 IOPS 한도에 도달하고 있습니다. 해결책: io2 Block Express로 업그레이드합니다(EBS 볼륨 유형 중 I/O 집약적 데이터베이스용으로 설계된 유형). io2 Block Express는 볼륨당 최대 256,000 IOPS와 1밀리초 미만의 지연 시간을 지원합니다. gp3보다 비용이 높지만($0.125/GB + 프로비저닝된 IOPS당 월 $0.065), 64,000 IOPS 이상의 요구 사항을 충족하는 유일한 EBS 옵션입니다. 지연 시간이 중요한 데이터베이스 워크로드에서 gp3의 16,000 IOPS 한도로는 부족한 경우, io2가 유일하게 실행 가능한 EBS 선택지입니다.

# Create io2 Block Express volume with 64,000 IOPS
aws ec2 create-volume \
  --volume-type io2 \
  --size 500 \
  --iops 64000 \
  --availability-zone us-east-1a \
  --encrypted

# EBS volume type IOPS limits summary:
# gp3: up to 16,000 IOPS (default 3,000, configurable)
# io1: up to 64,000 IOPS (on Nitro instances)
# io2 Block Express: up to 256,000 IOPS
# st1 (throughput HDD): no IOPS focus, max 500 MB/s throughput
# sc1 (cold HDD): lowest cost, 250 MB/s max, rarely accessed data

시나리오 9: 지속적인 워크로드를 위한 Reserved Instances

시나리오: 한 회사가 프로덕션 애플리케이션을 위해 r6i.4xlarge EC2 인스턴스 20개를 계속 실행하고 있으며, 3년 동안 요구 사항이 변경되지 않을 것으로 예상합니다. 현재 이 인스턴스의 On-Demand 비용은 연 $80,000입니다. 해결책: 최대 할인을 받기 위해 3-year Standard Reserved Instances(또는 Compute Savings Plans)를 All Upfront 결제로 구매합니다. Standard Reserved Instances는 On-Demand 대비 최대 72% 할인을 제공합니다. 인스턴스가 예측 가능한 워크로드로 24시간 연중무휴 실행되므로 Reserved Instances를 사용하기에 전형적인 조건입니다. 예상 비용 절감액은 다음과 같습니다. On-Demand 기준 연 $80,000에서 $80,000 × 0.72 = 연 $22,400이므로 연 $57,600을 절약할 수 있습니다.

# Reserved Instance purchase decision matrix:
# On-Demand:          No commitment, highest price, any workload
# 1-yr RI (All Up):   40% discount, 1-yr commitment, specific instance type
# 3-yr RI (All Up):   60-72% discount, 3-yr commitment, best for stable workloads
# Compute Savings Plan: 66% max discount, flexible instance family/size/Region
# EC2 Spot:           90% discount, interruptible, batch/stateless only
#
# Rule: if usage > 70% of the time for >1 year -> buy RI or Savings Plan
# Rule: if usage < 50% -> stick with On-Demand
# Rule: if usage pattern is steady 3yr -> 3yr RI All Upfront maximises savings

시나리오 10: 가변 트래픽에서 Lambda와 EC2 비용 비교

시나리오: 한 회사가 월 $8의 비용이 드는 t3.micro EC2 인스턴스에서 REST API를 실행합니다. 이 API는 매월 100만 건의 요청을 받고, 각 요청의 처리 시간은 100ms입니다. 팀에서 Lambda가 더 저렴한지 묻습니다. 분석: Lambda 요금은 다음과 같습니다. 1,000,000개 요청 × $0.0000002 = $0.20(요청 비용) + 1,000,000 × 0.1초 × 128MB 메모리 × 요금 = 약 $1.67(컴퓨팅 비용)로, 총 월 약 $1.87입니다. 이처럼 트래픽이 적은 API에서는 Lambda가 EC2보다 저렴합니다. 트래픽이 월 약 4,000만 건을 초과하면 EC2가 더 저렴해집니다. 각 워크로드의 손익분기점을 확인하려면 Lambda Cost Calculator를 사용합니다.

# Lambda vs EC2 cost rough break-even calculation:
# Lambda costs: $0.20 per 1M requests + $0.0000166667 per GB-second
# At 128 MB memory, 100ms duration:
#   GB-seconds per request = 0.128 GB x 0.1s = 0.0128 GB-s
#   Cost per request = $0.0000166667 x 0.0128 = $0.000000213 compute
#   + $0.0000002 request fee = $0.000000413 total per request
#
# EC2 t3.micro: $0.0104/hr x 720 hrs = $7.49/month
# Break-even: $7.49 / $0.000000413 = ~18 million requests/month
# Below 18M requests/month -> Lambda cheaper
# Above 18M requests/month -> EC2 cheaper (if utilisation is high)

시나리오 11: 동적 API를 위한 Global Accelerator

시나리오: 유럽, US, 아시아의 사용자에게 서비스를 제공하는 글로벌 API에서 트래픽이 예측하기 어려운 인터넷 경로를 통과하기 때문에 지연 시간이 일정하지 않습니다. CloudFront도 고려했지만 API 응답이 동적이어서 캐시할 수 없습니다. 해결책: AWS Global Accelerator를 사용합니다. 전 세계에서 사용할 수 있는 두 개의 고정 anycast IP addresses를 제공합니다. 사용자 트래픽은 가장 가까운 AWS 엣지 로케이션에서 AWS 글로벌 백본으로 진입한 후 AWS 프라이빗 네트워크를 통해 대상 Region의 오리진으로 이동하므로, 혼잡한 공용 인터넷 중간 구간을 우회합니다. Global Accelerator는 동적 API의 응답 시간을 20~60% 개선하고, Region Endpoint가 비정상 상태가 되면 즉시 장애 조치를 제공합니다.

# Create a Global Accelerator for an ALB
aws globalaccelerator create-accelerator \
  --name my-api-accelerator \
  --ip-address-type IPV4 \
  --enabled

# Add a listener and endpoint group pointing to ALB
aws globalaccelerator create-listener \
  --accelerator-arn arn:aws:globalaccelerator::123:accelerator/abc \
  --protocol TCP \
  --port-ranges '[{"FromPort": 443, "ToPort": 443}]'

# Endpoint group in us-east-1 with ALB
aws globalaccelerator create-endpoint-group \
  --listener-arn arn:aws:globalaccelerator::123:listener/xyz \
  --endpoint-group-region us-east-1 \
  --endpoint-configurations '[{"EndpointId": "arn:aws:elasticloadbalancing:...", "Weight": 100}]'

빠른 확인

이 레슨에서 배운 AWS Solutions Architect(SAA-C03) 개념을 제대로 이해했는지 확인합니다.

레슨 요약

이 레슨에서는 다음 시나리오를 다뤘습니다. ElastiCache 지연 로딩으로 RDS CPU 사용률을 80%에서 20%로 감소, Spot Instances와 AWS Batch를 통한 배치 작업 비용 70~90% 절감, 드문 임시 조회에는 Athena를 사용하고 동시성이 높은 분석에는 Redshift를 사용하는 방법, 검색 요금 없이 예측할 수 없는 액세스 패턴에 대응하는 S3 Intelligent-Tiering입니다. 다음은 마지막 종합 과제로, 준비 상태를 측정하는 시간 제한 혼합 영역 미니 시험입니다.

자주 묻는 질문

“고성능 및 비용 최적화 시나리오” 강의는 무료인가요?

네 — “고성능 및 비용 최적화 시나리오” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“고성능 및 비용 최적화 시나리오”에서 뭘 배우나요?

캐싱 전략, 데이터 레이크 쿼리 최적화, 예약 인스턴스와 스팟의 절충점 및 읽기 전용 복제본 아키텍처에 관한 시나리오 문제에 답합니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“고성능 및 비용 최적화 시나리오” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 보안 아키텍처 시나리오
  2. 복원력 있고 고가용성인 아키텍처 시나리오
  3. 고성능 및 비용 최적화 시나리오
  4. 혼합 영역 종합 미니 시험
← AWS Solutions Architect(으)로 돌아가기