들어가며

자비스앤빌런즈는 더 많은 환급을 제공하기 위한 기능 개발과 다양한 혜택을 제공하기 위한 노력, 그리고 안정적인 운영에 집중해 왔습니다. 그 결과로 서비스 확장과 함께 운영 리소스 역시 크게 증가하게 되었고 최근 1년간 (2023년 6월 - 2024년 5월) AWS 사용 비용은 월 평균 약 3억 5천만 원에 달하고 있습니다.

서비스가 확장되면서 운영에 필요한 리소스가 늘어났고, 그와 함께 사용 비용 역시 꾸준히 증가하고 있습니다. 안정적인 운영은 당연히 확보해야 할 기본 조건이지만, 비용 증가가 눈에 띄게 체감되면서 단순히 안정성만으로는 충분하지 않다는 사실을 깨닫게 되었습니다. 이제는 비용 효율성까지 고려한 운영 전략, 즉 FinOps 관점에서의 접근이 필요한 시점임을 인식하게 된 것입니다.

트래픽이 상대적으로 적은 기간에는 불필요한 리소스를 줄여 비용을 최적화하는 작업이 필요했습니다. 이를 위해서는 먼저 비용이 어디에서 발생하고, 어떤 부분에서 낭비가 일어나는지 파악하는 것이 필요하다고 판단하였고, 그 첫걸음으로 비용 구조를 시각화하는 작업을 시작했습니다.



🎯 목표

현재 비용 구조를 효과적으로 시각화하기 위해 아래 2가지에 중점을 두었습니다.

  1. 리소스 사용량: 삼쩜삼 서비스에서 비용이 크게 발생하고 있는 주요 리소스 영역(컨테이너, 데이터베이스, 네트워크) 확인
  2. 서비스(팀)별 비용: 서비스(또는 팀) 단위 비용 분포와 점유율 파악

1번의 리소스 사용량은 AWS Cost Explorer 를 통해 AWS 서비스별 사용량과 비용을 쉽게 확인할 수 있습니다.

하지만 2번의 서비스(팀)별 비용을 확인하기 위해서는 추가적으로 리소스 태깅 작업이 필요합니다. 팀 단위 비용을 관리하는 이유는 FinOps 관점에서 각 서비스 개발팀이 사용하는 리소스 비용을 명확히 산출하고, 이에 기반한 비용 체계를 수립하기 위함입니다.

특히, 각 서비스 팀이 자신들이 사용한 리소스와 그에 따른 비용을 직접 인식하는 것이 중요합니다. 비용 인식은 단순한 숫자 확인을 넘어 서비스 운영 방식과 아키텍처 의사결정에 직접적인 영향을 주기 때문입니다.

이를 위해 Team, Application, Service 등의 태그를 활용해 AWS 리소스에 체계적으로 태깅을 적용했고, 서비스 제품별 비용을 한 눈에 파악할 수 있도록 했습니다.



왜 QuickSight 였을까?

처음 비용 시각화를 위한 도구를 고민할 때, Cost Explorer 만으로는 한계가 있었습니다. 필터링이나 시각화 기능은 좋았으나 저희가 원하는 다양한 조건을 조합해 데이터를 보고 싶은 니즈를 만족시키기 어려웠기 때문입니다.

필요 조건

  1. 조직 내 다양한 구성원이 인증을 통해 손쉽게 접근할 수 있어야 한다.
  2. 비용 원시 데이터를 기반으로 커스텀 대시보드를 구성할 수 있어야 한다.

여러 오픈소스 대시보드 툴이나 BI 도구도 함께 검토했지만, 비용, 운영/유지보수의 복잡도, IAM 과의 통합 등을 고려했을 때 AWS 생태계 안에서 바로 활용 가능한 QuickSight 가 가장 적합한 선택지였습니다.

아래 링크를 통해 소개된 Amazon QuickSight 기반의 CUDOS, CID, KPI 대시보드를 접하게 되었고, 저희가 필요로 하는. 조건을 모두 만족할 수 있을 것으로 기대하게 되었습니다.

🌐 [AWS Cloud Operations Blog] Visualize and gain insights into your AWS cost and usage with Cloud Intelligence Dashboards and CUDOS using Amazon QuickSight

QuickSight vs Cost Explorer

QuickSight의 가장 큰 장점은 바로 CUR의 raw 데이터를 직접 다룰 수 있다는 점입니다. 단순한 표 형태의 시각화를 넘어서, 다양한 필드 간 관계를 분석하고, 계산된 필드를 활용해 원하는 방식으로 데이터를 가공할 수 있었습니다. 이를 통해 단순한 서비스 별 요금 확인을 넘어서, 팀/프로젝트/환경 단위의 세부 분석까지 가능합니다.

물론 AWS에서 제공하는 Cost Explorer도 매우 유용한 도구입니다. 직관적인 UI로 간단한 비용 분석과 추이 파악에는 적합하지만, 시각화와 분석의 유연성 측면에서는 QuickSight에 비해 제한적인 편입니다.

📌 요약하자면, Cost Explorer 는 대략적인 비용 확인에 용이한 도구라면,
QuickSight는 조직 내 다양한 기준에 맞춰 맞춤형 분석과 시각화가 가능한 데이터 분석 플랫폼입니다.



빌링 대시보드 아키텍처

아래는 CUDOS, CID, KPI 대시보드의 아키텍처이며, 이를 참고하여 동일하게 구성하였습니다.

이미지 출저: https://aws.amazon.com/ko/blogs/mt/visualize-and-gain-insights-into-your-aws-cost-and-usage-with-cloud-intelligence-dashboards-using-amazon-quicksight/


  1. Cost Explorer 의 Data Exports 기능을 통해 CUR(Cost and Usage Report) 을 s3 버킷으로 내보냅니다.
  2. 비용 대시보드 배포를 위한 Amazon QuickSight에 가입합니다.
  3. 사전에 정의 되어 있는 CloudFormation template 을 배포해서 Athena workgroup, Glue Crawler, Glue Data catalog, Lambda 를 배포합니다. (혹은 terraform 으로도 배포 가능합니다.)




그렇다면 s3 버킷에 쌓인 CUR 데이터를 어떻게 처리해서 비용 대시보드로 보여지는 것일까요?
과정에 번호를 매겨 설명해보자면 아래 그림과 같습니다.


  1. CUR 데이터가 하루에 한 번 이상 Amazon s3 버킷으로 export 됩니다.
  2. Glue crawler가 실행되면서 신규로 들어오거나 업데이트 된 CUR 데이터를 캡처합니다.
  3. crawler가 Data catalog 에서 테이블을 신규로 생성하거나 업데이트합니다.
  4. Amazon Athena 는 위 catalog 의 스키마를 사용해 s3 버킷에서 직접 CUR 데이터를 쿼리합니다.
  5. 데이터 소스로 Amazon Athena를 사용하여 QuickSight에 사용할 dataset를 생성합니다.
    데이터 캐싱을 위해 dataset 유형을 SPICE로 지정하고, 매일 새로고침 되도록 일정을 등록해서 사용합니다.
  6. QuickSight에 대시보드를 생성하고 위 dataset로 대시보드에 필요한 시각적 객체를 생성합니다.
  7. 이제 사용자들은 빌링 대시보드에 접근할 수 있습니다.



JOBIS 빌링 대시보드

아래는 저희가 현재 사용하고 있는 QuickSight 기반의 비용 대시보드입니다.

대시보드는 사용 목적에 따라 탭을 분리해서 구성했습니다. 특히 비용이 많이 나오는 주요 AWS 서비스들을 중심으로 시각화를 구성했고, 각 서비스 별로 Team, Service, Application, Project 등의 태그를 적극 활용해 필요한 시각적 객체를 구성하고 있습니다.

  • Overview 대시보드
    • 지난 1년 동안의 비용 동향 확인
  • 통합 Billing Dashboard
    • 지난 달 요금과 이번 달 요금 한 눈에 비교
    • 최근 3개월 비용 트렌드
    • 비용 상위 20개 서비스
  • Team 별 비용 대시보드
    • 전체 Team 별 비용 대시보드
    • 별도의 data 팀 비용 대시보드
  • Resource 별 비용 대시보드
    • ECS, RDS, OpenSearch, S3, DynamoDB, ...
  • 기타 비용 대시보드
    • QA 테스트 계정 비용




AWS 서비스 별 비용 분석 예시

예를 들어,

  • ECS 는 Application 태그와 연계해 데이터 전송 요금이 주로 발생하는 지점을 파악할 수 있도록 구성했고,
  • RDS 는 일부 서비스에서 사용하는 Aurora Serverless의 요금을 따로 분리하여 확인할 수 있도록 했습니다.
  • s3 는 Name 태그 기준으로 각 버킷에서 어떠 비용 항목이 가장 많은 요금을 발생시키고 있는지를 쉽게 확인할 수 있도록 만들었습니다.


이 외에도 특정 인사이트가 필요한 경우, 요청이 들어올 때마다 대시보드를 추가하는 방식으로 확장해나가고 있습니다.

최근에는 “DynamoDB 특정 테이블에 대한 일별 사용량 및 비용을 보고 싶다”는 요청이 있어 해당 요구사항을 반영한 아래와 같은 뷰를 만들었습니다. 일별로 사용량과 비용 항목을 나누어 확인할 수 있어, 과금 구조를 명확히 파악할 수 있습니다.

또한 필요 시 일정 금액 이상의 비용이 발생하면 이메일로 알람 받도록 설정할 수도 있습니다.



우리가 얻은 인사이트들

저희는 이미 Reserved Instance 및 Savings Plans 를 적극적으로 활용하고 있었고, 이 외에도 Spot 인스턴스, Auto Scaling, right sizing 등 일반적인 비용 최적화 전략도 어느 정도 적용된 상태였습니다. 그럼에도 불구하고 그동안 놓치고 있던 사각지대를 확인할 수 있었습니다.

  • ECS 와 RDS 가 전체 비용의 절반을 차지하고 있어서 비용 절감 시 큰 효과를 볼 수 있을 것으로 기대
  • CloudWatch 로그 적재 및 처리에서 생각보다 많은 비용이 나오고 있었다.
  • data 계정에서 생각지 못한 s3 스토리지 비용이 많이 나오고 있었다.
  • 성능 테스트 환경에서 NAT 와 CloudWatch 커스텀 로그 처리 비용이 많이 나오고 있었다.


인사이트를 얻은 후에는 ...

  • 비용 효율화 방안 마련을 위한 Team 별 비용 회고 진행
    • right sizing, 적정 ECS task 개수 고려를 위한 지속적인 모니터링
    • 미사용 서비스 워크로드 정리
    • 분산되어 있는 일부 RDS DB 인스턴스 통합
    • 전환 가능 워크로드 식별하여 Aurora Serverless로 전환

  • CloudWatch 로그 비용 절감
    • 로그 그룹 보관 주기 조정
    • 애플리케이션 로그 레벨 조정을 통한 불필요한 로그 출력 최소화
    • 사용되지 않는 API Gateway / Lambda 로그 수집 설정 해제

  • s3 스토리지 비용 최적화
    • 수명 주기(Lifecycle) 정책과 Intelligent-Tiering을 활용하여 오래되거나 사용 빈도가 낮은 데이터를 자동으로 관리하도록 설정

  • 추가 인사이트를 위한 태그 정책 강화


비용 절감, 성공했나요?

결론부터 말씀 드리자면 아직 비용 절감이 이루어지진 않았습니다.

지난 5월부터 본격적으로 비용 효율화 전략을 적용하기 시작했고, 직접적인 비용 절감이 이루어지진 않았지만, 서비스가 지속적으로 증가하는 상황에서도 7월 비용은 전년 동월 대비 단 2.5%만 증가했습니다.

이는 같은 성장세를 유지하면서도 기존보다 훨씬 적은 비용 증가율을 달성한 것으로, 효율적인 리소스 운영과 불필요한 비용 요소 제거가 효과를 발휘하고 있음을 보여줍니다.



이것을 단순히 "아직 절감을 하지 못했다" 보다는, "더 늘어날 비용을 막아낸 것" 이라 생각하고 앞으로도 이 흐름을 유지하면서 실제 절감까지 이어지는 것이 목표입니다. 🚀




마치며

AWS 에서의 비용 관리는 단순한 확인이 아니라, 데이터 기반의 이해와 통제가 필요합니다. QuickSight를 기반으로 한 비용 대시보드는 이런 부분에서 강력한 도구가 되어주고 있고, 저희 팀의 FinOps 문화 정착에도 큰 역할을 하고 있습니다.

향후에는 AWS 외에도 멀티 클라우드 환경의 비용 데이터까지 통합 분석하고, SaaS 솔루션 구독 요금 등 기타 비용 항목까지 확장하여 보다 전사적인 관점의 비용 가시성을 확보할 계획입니다.

QuickSight 기반 비용 분석 환경을 고민하고 계시다면, 저희 사례가 작은 참고가 되기를 바랍니다. 🙌🏻





| 홍소현
디자인 | 윤하선

본 콘텐츠의 저작권은 (주)자비스앤빌런즈에게 있으며, 본 콘텐츠에 대한 무단 전재 및 재배포를 금지합니다