2024. 3. 3. 23:44ㆍDev/AWS DEVOPS
AWS 클라우드에서 비용 절감하는 방법을 몇 가지 소개해드리려고 합니다.
클라우드를 도입하고 사용하는 분들이라면 요즘 경제 상황과 더불어 비용 절감에 대한 필요성을 크게 느끼실겁니다.
회사든 개인이든, 우리 모두 비용을 줄이려는 노력을 하고 있어요. 특히 클라우드 비용은 방심하면 날벼락 같은 청구서를 받기도 하죠.
저는 3년 차 DevOps 엔지니어이자 클라우드 솔루션 아키텍트(SA)로, 최근에 새로 배운 AWS 서비스들과 제 경험과 사례를 바탕으로 클라우드 비용을 절약하는 방법을 몇 가지 소개해드리려고 합니다.
1. S3 Bucket Key
S3는 AWS의 대표 서비스입니다.
콘솔에서 S3 버킷을 생성하려고 하면 아래와 같은 선택 화면을 만납니다.
회색 글씨로 비용 절감에 대한 언급을 확인할 수 있습니다.
Using an S3 Bucket Key for SSE-KMS reduces encryption costs by lowering calls to AWS KMS.
SSE-KMS에 S3 버킷 키를 사용하면 AWS KMS에 대한 호출 횟수를 줄여 암호화 비용을 절감할 수 있습니다.
S3 버킷키를 활성화 하면 최대 99퍼센트의 KMS 호출 비용을 아낄 수 있습니다.
2. S3 Intelligent-Tiering
S3 버킷을 생성 후에 해당 버킷의 Properties(속성) 탭에 들어가면 Intelligent-Tiering을 설정할 수 있습니다.
S3 Intelligent-Tiering은 액세스 패턴을 모니터링하여 액세스하지 않은 객체를 저렴한 액세스 티어로 자동으로 옮겨 비용을 아껴줍니다.
약 1분짜리 소개 영상
https://www.youtube.com/watch?v=6brzBokCYV0
객체의 크기가 128KB 미만이면 자동 계층화를 모니터링 및 사용할 수 없습니다. 작은 객체는 항상 Frequent Access 계층에 저장됩니다.
2018년 S3 Intelligent-Tiering가 출시된 이후 고객은 S3 Intelligent-Tiering를 도입함으로써 S3 Standard에 비해 10억 달러를 절감했습니다.
출처: https://aws.amazon.com/ko/s3/storage-classes/intelligent-tiering/
3. AWS Budgets, AWS Cost Anomaly Detection
Cloud Financial Management with AWS 라는 페이지에서 다양한 솔루션과 서비스를 볼 수 있습니다.
(이 페이지를 천천히 꼼꼼하게 읽어보는것을 추천드립니다.)
https://aws.amazon.com/aws-cost-management/
비용을 줄이는 것만큼 중요한것이 비용에 대한 모니터링과 알림을 받는것입니다.
이를 위해 AWS Budgets, AWS Cost Anomaly Detection에 대해 소개해드리겠습니다.
공식 설명은 아래와 같습니다.
AWS Budgets를 사용하면 사용자 지정 예산을 설정하여 비용 및 사용량을 추적하고, 임계값 초과 시 이메일 또는 SNS 알림에서 수신된 알림에 빠르게 대응할 수 있습니다.
AWS Cost Anomaly Detection을 사용해 혁신을 늦추지 않으면서 예상치 못한 비용을 줄이고 제어를 강화하세요. AWS Cost Anomaly Detection은 고급 기계 학습 기술을 활용하여 비정상적인 지출과 근본 원인을 식별하므로 신속하게 조치를 취할 수 있습니다. 3단계만 거치면 직접 상황에 맞는 모니터를 생성하고 비정상적인 지출이 감지될 때 알림을 받을 수 있습니다. 빌더가 AWS Cost Anomaly Detection을 구축하도록 하여 지출을 모니터링하고 예상치 못한 결제 위험을 줄이세요.
그래프로 나타내 보면 이렇습니다.
Budgets은 설정한 예산에 대한 알림, Cost Anomaly Detection은 머신러닝을 통한 비정상적인 지출에 대한 알림을 제공합니다.
4. AWS Compute Optimizer
AWS Compute Optimizer는 인스턴스 제품군 내에서 인스턴스 유형 권장 사항을 알려줍니다. 인스턴스 제품군 내 또는 전체에 걸쳐 다운 사이징 권장 사항, 성능 병목을 제거하기 위한 업 사이징 권장 사항 및 Auto Scaling 그룹의 EC2 인스턴스에 대한 권장 사항을 제공합니다.
AWS Compute Optimizer에 대한 추가 비용은 없습니다. 애플리케이션을 실행하는 데 필요한 AWS 리소스와 Amazon CloudWatch 모니터링 요금만 지불하면 됩니다.
https://aws.amazon.com/ko/compute-optimizer/
Compute Optimizer와 더불어, 사용중인 인스턴스를 Graviton 프로세서로 옮겨서 비용을 절감할 수 있습니다.
https://aws.amazon.com/ko/ec2/graviton/
5. EC2 Auto Scaling Groups
EC2 Auto Scaling Groups를 사용하신다면 메뉴에서 Automatic scaling 탭을 확인할 수 있습니다.
CloudWatch 메트릭을 기반으로 하는 Dynamic scaling과
과거 데이터를 기반으로 하는 Predictive scaling을 사용할 수 있습니다.
Scheduled actions에서는 cron expression을 활용하여 주기적인 시작, 종료를 직접 구현할 수 있습니다.
저는 스케쥴 액션을 사용하여, 개발환경의 EKS 클러스터 노드그룹을 평일 아침에 늘리고, 퇴근 후 저녁시간에 줄이는 방식으로 사용중입니다.
6. RI/SP (Reserved Instances / Saving Plan) , SPOT
ChatGPT에 물어봐도 알려주는 예약 인스턴스와 세이빙 플랜, 그리고 spot 인스턴스입니다.
AWS Reserved Instances와 Savings Plans는 AWS 비용 절감 전략의 주요 구성 요소입니다. 두 옵션 모두 장기적인 약정을 통해 비용을 절약할 수 있는 방법을 제공하지만, 적용 방식과 유연성 측면에서 차이가 있습니다.
AWS Reserved Instances (RI)
Reserved Instances는 특정 인스턴스 유형에 대해 1년 또는 3년의 약정을 하고, 이를 통해 상당한 할인을 받을 수 있는 방법입니다. RI는 특정 인스턴스 유형, 영역, 운영 체제에 대한 약정을 의미하며, 사용할 인스턴스의 크기와 종류를 사전에 결정해야 합니다. 이는 예측 가능한 워크로드에 매우 적합하며, 약정 기간 동안 변경할 수 없는 경우가 많습니다.
- 장점: 높은 할인율을 제공하며, 특정 인스턴스에 대한 확실한 수요가 있는 경우 비용 절감 효과가 매우 큽니다.
- 단점: 유연성이 낮고, 약정한 인스턴스 유형이나 영역 외의 사용에는 할인이 적용되지 않습니다.
AWS Savings Plans
Savings Plans는 사용량에 대해 1년 또는 3년 동안 일정한 금액을 지불하는 약정을 하고, 이를 통해 할인을 받는 방식입니다. Savings Plans는 컴퓨팅 파워 사용량(예: EC2, Fargate, Lambda 등)에 대한 유연성을 제공하며, 리전이나 인스턴스 패밀리를 변경해도 할인율이 적용됩니다. 이는 다양한 서비스를 사용하거나 사용 패턴이 자주 변하는 워크로드에 적합합니다.
- 장점: 높은 유연성을 제공하며, 다양한 AWS 서비스 사용에 대한 할인이 적용됩니다. 사용량이 변동되어도 계약한 비용에 따라 할인이 적용됩니다.
- 단점: Reserved Instances에 비해 할인율이 다소 낮을 수 있으며, 최적의 비용 절감을 위해서는 사용량을 잘 예측해야 합니다.
AWS Spot Instances
AWS Spot Instances는 AWS의 미사용 EC2 컴퓨팅 용량을 온디맨드 요금의 최대 90%까지 할인하여 제공합니다. 사용자는 Spot 인스턴스를 통해 고성능 컴퓨팅 작업을 비용 효율적으로 수행할 수 있으며, 가격이 사용자의 입찰 가격보다 낮을 때 인스턴스를 사용할 수 있습니다. Spot 인스턴스는 가용성과 가격이 변동될 수 있으며, AWS가 리소스가 필요한 경우 사전 통지 후 인스턴스를 회수할 수 있습니다.
- 장점: Spot 인스턴스는 온디맨드 인스턴스 가격의 일부에 불과한 비용으로 상당한 컴퓨팅 용량을 제공합니다. 이는 대규모 컴퓨팅 작업을 비용 효율적으로 처리할 수 있게 해줍니다.
- 단점: Spot 인스턴스의 가용성은 수요와 공급에 따라 변동되며, AWS는 필요한 경우 사전 통지를 통해 인스턴스를 회수할 수 있습니다. 따라서, 중요한 운영 부하나 중단되어서는 안 되는 작업에는 적합하지 않을 수 있습니다.
7. Amazon RDS 스케쥴링
RI를 사용하여 RDS 비용을 줄일 수도 있지만
Amazon RDS는 기존 관계형 데이터베이스와 다르게 DB 유지 관리, 백업 및 복구 등이 자동화 되어 있습니다.
이 점을 활용하여 Amazon Eventbridge + AWS Lambda로 구성한 스케쥴링 또는 AWS Systems Manager를 사용한 스케쥴링을 구현할 수 있습니다.
저희 팀에서는 AWS Step Functions에 Lambda를 더해서 스케쥴링을 구현하기도 했습니다.
https://aws.amazon.com/blogs/database/schedule-amazon-rds-stop-and-start-using-aws-lambda/
8. EBS, EFS, CloudWatch Logs
2021년 말 추가된 EBS snapshots archive이나 Amazon EFS Intelligent-Tiering, Amazon EFS Infrequent Access.
https://aws.amazon.com/ko/blogs/korea/new-amazon-ebs-snapshots-archive/
2023년 말 추가된 CloudWatch Logs Infrequent Access.
S3에 적용된 다양한 비용절감 기술들이 데이터 저장을 베이스로 하는 다른 AWS 서비스들에도 적용되고 있습니다.
9. EKS
eks에서의 비용 절감은 다른 AWS 서비스들과는 조금 다를 수 있습니다.
AWS에 대한 이해에 더해 Kubernetes 환경도 잘 알아야하기 때문이죠.
Amazon Guardduty의 EKS Runtime Monitoring을 활용해서 의도하지 않은 스케일-아웃을 막을 수도 있구요.
https://aws.amazon.com/ko/blogs/korea/amazon-guardduty-now-supports-amazon-eks-runtime-monitoring/
Nodegroup을 EC2 AutoScaling Groups를 이용해 클라우드에서 스케쥴링 할 수도 있고,
쿠버네티스 안에서 특정 메트릭에 따라 스케일 할 수도 있죠.
EKS 특성상 멀티 AZ간의 데이터 통신비용이 발생하기 때문에, 이를 최적화하는 방법도 많이 소개되고 있습니다.
AWS EKS에서 비용을 줄인 사례들로 아래 블로그들을 추천드립니다.
https://jenakim47.tistory.com/98
https://www.slideshare.net/awskorea/aws-summit-seoul-2023-amazon-eks-257793212
구글에 kubecost를 검색해 보는것도 추천드립니다.
kubecost는 쿠버네티스에서 비용 모니터링과 관리를 도와주는 서비스입니다.
10. 애플리케이션 현대화와 적정 기술 사용
AWS의 Fargate를 사용하여 적은 인원으로 안정적인 운영을 하는것도 비용을 아끼는 방법입니다.
충분한 기술력과 인력이 있다면 Fargate 대신 ECS나 EKS를 사용하는 것이 더 효율적일수도 있습니다.
Kubernetes 전문가가 없다면 EKS보다 ECS가 저렴할 수 있습니다.
반대로 다른 AWS Managed 서비스를 EKS에서 오픈소스로 구현하는 식으로 비용을 아낄수도 있습니다.
호출 빈도가 적은 서비스를 EC2에서 Lambda로 옮기는 것도 비용 절약의 방법이 될 수 있습니다.
Lambda에서 무한루프가 돌아서 예상치 못한 비용이 나오는것을 방지하는 방법도 과다한 비용 청구를 막는 좋은 예방책입니다.
https://aws.amazon.com/ko/blogs/compute/detecting-and-stopping-recursive-loops-in-aws-lambda-functions/
AWS Cost Optimization Hub를 이용해 비용에 대한 가시성을 높이면 비용 절감의 포인트를 찾을 수 있는 방법이 될 수 있습니다.
https://aws.amazon.com/ko/aws-cost-management/cost-optimization-hub/
마치며
AWS Well-Architected Framework를 사용하는 것과 Tag를 활용하여 비용을 아끼는 등 많은 방법이 있습니다.
글에 담지 못한 더 많은 비용절감 방법도 고려해주세요.
Cloud Financial Management의 blog 탭을 누르면 아래 처럼 비용, 재무 등 파이낸셜한 블로그들을 모아 볼 수 있습니다.
https://aws.amazon.com/blogs/aws-cloud-financial-management/
'Dev > AWS DEVOPS' 카테고리의 다른 글
Amazon VPC IPAM이란? (0) | 2023.09.18 |
---|---|
ec2, eks could not resolve dns host name (0) | 2023.09.14 |
AWS DevOps Professional 취득 후기 (0) | 2023.02.19 |
AWS DevOps Pro - ChatGPT로 공부하기 (0) | 2023.02.16 |
AWS DevOps Pro - AWS Config (0) | 2023.02.10 |