brunch

S3 비용 구조 이해하기

by 멘토사피엔스

많은 팀이 S3를 “그냥 데이터 저장소”로 생각합니다. 그러나 S3의 요금 체계는 단순히 GB 단위 저장 요금을 넘어 저장 방식, 요청 빈도, 데이터 전송 패턴, 그리고 다양한 추가 기능들까지 복합적으로 작용합니다.


저장만 하면 끝이 아닙니다. 데이터를 저장하는 방법과 사용하는 방법을 모르면, 나도 모르게 청구서에 놀라게 됩니다.


이 글은 S3를 처음 쓰는 분도, 이미 쓰고 있는 분도 “우리 팀의 S3 요금, 왜 이렇게 나왔을까?”를 깨닫고, “그래서 어떻게 줄일 수 있을까?”에 대한 힌트를 얻을 수 있도록 작성했습니다.


S3의 구조와 요금 체계를 알면, 보관이 아닌 비용 관리 중심의 전략적 스토리지 운영이 가능해집니다.


스토리지 비용과 요청, 데이터 전송 관점에서 S3의 요금을 분석해 보겠습니다. s3의 요금에 대한 자세한 설명은 아래 사이트에서 확인할 수 있습니다.


https://aws.amazon.com/ko/s3/pricing/


스토리지 비용 (GB 단위)


S3의 스토리지 비용은 말 그대로 “얼마나 많은 데이터를 저장했는지”를 기준으로 요금이 매겨집니다. 즉, 매일 S3에 저장된 데이터의 양(GB 단위)을 측정하고, 그 평균 값을 기준으로 월 단위 청구가 이뤄집니다.


스토리지 비용 = 저장한 데이터 용량(GB) x 스토리지 클래스별 단가(GB당 요금)


예를 들어, 서울 리전에서


S3 Standard 클래스는 GB당 약 $0.025

S3 Standard-IA(Infrequent Access)는 GB당 약 $0.0134

S3 One Zone-IA는 GB당 약 $0.011

S3 Glacier는 GB당 약 $0.0045


이렇게 같은 용량을 저장해도, 선택한 스토리지 클래스에 따라 요금이 2~5배 이상 차이 날 수 있습니다.


S3는 단순히 “몇 GB를 저장했느냐”에 따라 청구되는 구조이지만, 이 스토리지 비용이 전체 S3 청구서의 상당 부분을 차지하므로, 주기적인 용량 관리와 클래스 최적화가 필수적입니다.


스토리지 클래스 선택이 왜 중요한가요?


S3는 단순히 “데이터가 얼마만큼 저장되었는지”만 보지 않고, 그 데이터가 어떤 특성(자주 접근하는지, 잘 안 쓰는지, 오래 보관해야 하는지)에 맞는 클래스를 선택할 수 있습니다. 그리고 각 클래스에 따른 비용 역시 다르게 산정됩니다.


예를 들어


Standard는 자주 접근하는 데이터를 위한 일반 클래스 → 가격은 가장 비싸지만 빠른 접근 보장

IA(저빈도 액세스)는 가끔만 접근하는 데이터 → 저장 요금은 저렴, 대신 요청(GET) 시 추가 요금 발생

Glacier는 거의 사용하지 않는 데이터 → 저장 요금은 매우 저렴, 대신 꺼내올 때 시간이 오래 걸리고 비용도 추가


따라서, “우리 데이터는 정말 자주 쓰는 걸까?”를 먼저 점검해야 합니다.


만약 한 달 내내 1TB의 데이터를 Standard에 저장하면 약 $25가 나옵니다. 같은 데이터를 IA로 옮기면 $13 수준으로 떨어지고, Glacier로 가면 단 $4.5만 나옵니다.


요청 요금


많은 분들이 S3는 “저장만 하면 되는 것”으로 알고 있지만, 실제로는 데이터를 저장하거나 꺼내거나 검색하는 요청 자체에도 요금이 발생합니다.


즉, 데이터를 올리고(저장), 읽고(다운로드), 찾고(리스트 조회) 하는 모든 작업이 청구 대상입니다. 이 작업들은 각기 PUT 계열(쓰기/업로드), GET 계열(읽기/다운로드), LIST 계열(목록 조회) 요청으로 나뉘며, 각 요청 유형마다 단가가 다르게 책정됩니다.


요청별 요금 구조

스크린샷 2025-05-31 오후 6.58.27.png


요청 요금이 실제로는 어떻게 적용될까요?


예를 들어, 하루 동안 다음과 같은 작업을 했다고 가정해볼게요


파일 10,000개 업로드 (PUT 요청)

저장된 50,000개 파일 중 5,000개 다운로드 (GET 요청)

S3 폴더 내 파일 목록 1,000번 조회 (LIST 요청)


비용 계산은 아래와 같습니다.


PUT 10,000건 → 10 x $0.005 = $0.05

GET 5,000건 → 5 x $0.0004 = $0.002

LIST 1,000건 → 1 x $0.005 = $0.005


→ 총 요청 요금 = 약 $0.057 (즉, 저장 비용 외에도 요청 자체로 청구됩니다!)


요청 요금이 특히 중요한 이유


파일 수가 많을수록 요금이 증가

예를 들어, 10TB의 데이터를 한 개 파일로 저장하면 요청 요금은 한 번뿐입니다.

반면, 10TB를 1MB 파일 1,000만 개로 쪼개 저장하면, 매번 다운로드/업로드마다 요청 요금이 계속 발생합니다.


자동화된 시스템의 요청

백엔드 작업이나 앱에서 자동으로 발생하는 요청이 많다면, 예상보다 큰 요청 요금이 청구될 수 있습니다.


즉, 같은 데이터를 저장하고 있어도, 반복적인 요청이 많으면 예상치 못한 요청 요금이 빠르게 누적될 수 있습니다.


특히 LIST 요청은 파일 목록을 가져올 때마다 발생하며, 대규모 S3 버킷에서 빈번히 발생할 경우 상당한 요금 부담이 생길 수 있으므로 주의가 필요합니다.


데이터 전송 요금


S3는 데이터를 저장하는 데 요금이 드는 것뿐만 아니라, S3에서 데이터를 “꺼내올 때”도 요금이 발생합니다. 요청과 별도로 데이터 전송 요금 (Data Transfer OUT)이라고 부릅니다. 반대로 S3로 데이터를 올릴 때(IN)의 데이터 전송 요금은 무료입니다.


S3 데이터 전송 요금 구조 (서울 리전 기준)

스크린샷 2025-05-31 오후 7.00.20.png


S3 데이터 전송 요금, 이렇게 계산된다


데이터 전송 요금의 과금 구조와 예시를 쉽게 설명해보겠습니다.


S3 → 인터넷 전송 (Out)

매월 처음 1GB는 무료 (모든 AWS 계정 공통)

그 이후 구간별 요금

10TB 이하: GB당 $0.114

40TB 이하: GB당 $0.090

100TB 이하: GB당 $0.085

100TB 초과: GB당 $0.070


예를 들어, 500GB를 서울 리전의 S3에서 인터넷으로 내보냈다면?


→ (500GB - 1GB 무료) × $0.114 = 약 $56.3


Cross-Region 전송 요금


S3 버킷 간 또는 S3와 다른 리전의 서비스 간 데이터 전송에도 비용이 발생하며, 일반적으로 인터넷 전송 요금과 비슷하거나 약간 더 저렴한 수준의 요금이 청구됩니다. 예로 서울 리전의 S3에서 도쿄 리전의 S3로 데이터를 복제(Cross-Region Replication)하면 GB당 $0.02의 요금이 발생합니다.


S3에 데이터를 저장하는 것 자체는 무료지만, 읽어서 외부로 보내는 순간부터 데이터 전송 요금이 발생하는 것에 주의가 필요합니다. 특히 대규모 파일 다운로드, 분석 데이터 공유, Cross-Region Replication 등을 사용할 때 이 데이터 전송 비용이 S3 전체 청구서의 상당 부분을 차지할 수 있으므로, 반드시 사전에 전송 패턴을 분석하고 비용 구조를 이해해야 합니다.


전송 요금이 무료인 경우


S3 → CloudFront


CloudFront와 연결하면 S3에서 데이터를 가져올 때 전송 요금이 부과되지 않으므로, 정적 파일(이미지, JS, CSS 등)을 배포할 때 매우 유용합니다. AWS 공식 문서 기준으로, CloudFront에서 S3 Origin으로부터 데이터를 가져오는 비용(S3 to CloudFront 데이터 전송)은 무료입니다. (다만 CloudFront에서 사용자에게 전송되는 요금은 유료입니다)


같은 리전 내 AWS 서비스


같은 리전 내의 다른 AWS 서비스(EC2, Lambda, RDS 등)로 S3 데이터를 보내는 것도 무료입니다. 예로 S3에 저장된 파일을 EC2에서 다운로드한다면 전송이 요금이 발생하지 않습니다.


추가 기능 요금


S3는 저장과 요청 외에도 다양한 부가 기능을 제공하며, 이러한 기능을 사용할 때 별도의 요금이 발생합니다. 주요 항목은 다음과 같습니다:


Replication 비용

Cross-Region 또는 Same-Region Replication 설정 시, 원본 버킷에서 대상 버킷으로 복사하는 과정에서 전송 요금과 요청 요금이 부과됩니다. 예를 들어, Cross-Region Replication은 GB당 전송 요금과 PUT 요청 요금이 각각 발생합니다.

Lifecycle Transition 비용

S3 객체를 특정 클래스(예: Standard → Glacier)로 자동 이동시키는 Lifecycle Rule을 설정하면, 객체 이동(Transition) 작업당 비용이 발생합니다. GB당 약 $0.01~$0.02 수준의 비용이 추가됩니다.

S3 Inventory

S3 객체 목록을 주기적으로 제공해주는 Inventory 기능을 사용하면, GB 단위 요금(일반적으로 $0.0025/GB)과 요청 요금이 부과됩니다.

Object Lock, Replication Time Control, Event Notification 등

특정 고급 기능 사용 시에도 추가 요금이 발생할 수 있으므로, 기능 활성화 시 반드시 요금 정책을 검토해야 합니다.


결론적으로, S3는 단순한 스토리지 서비스이지만, 다양한 관리 기능을 함께 제공하며, 이들 기능이 활성화될 경우 숨겨진 비용이 발생할 수 있으므로, 필요에 따라 선택적으로 사용하는 것이 중요합니다.


S3 스토리지 클래스


S3는 데이터의 사용 패턴과 보관 목적에 따라 다양한 요금제를 제공하며, 이를 잘 선택해야 비용 최적화를 달성할 수 있습니다.


주요 스토리지 클래스는 다음과 같습니다:


S3 Standard

가장 일반적인 클래스. 자주 접근하는 데이터를 위한 기본 선택이며, 높은 내구성(99.999999999%)과 낮은 지연시간 제공합니다. GB당 요금이 가장 높습니다.

S3 Standard-IA (Infrequent Access)

가끔 읽고 쓰는 데이터에 적합.합니다 GB당 저장 비용은 Standard보다 저렴하지만, 데이터 조회(액세스) 시 추가 요금이 부과됩니다.

S3 One Zone-IA

Standard-IA보다 더 저렴하지만, 단일 AZ에만 저장합니다. 고가용성이 필요 없는 경우(백업, 로그) 선택하면 좋습니다..

S3 Glacier

장기 보관용 데이터를 저장합니다.. 매우 저렴한 저장 요금($0.0045/GB 수준)으로 제공됩니다. 단, 데이터 검색 시 복구 시간이 필요(몇 분 ~ 수 시간)하며, 검색 요금이 발생합니다.

S3 Glacier Deep Archive

장기 아카이빙 목적의 최저가 스토리지입니다. 12시간 이상의 복구 시간이 필요하며, 단가가 가장 낮습니다.($0.00099/GB 수준).


적합한 스토리지 클래스를 선택하는 것이 S3 비용 최적화의 첫걸음입니다. 데이터를 얼마나 자주 읽는지, 복구 시간 요구는 어떤지에 따라 클래스 선택이 달라져야 합니다.


스토리지 클래스 주의사항 및 비용 최적화 팁


최소 저장 기간: 일부 스토리지 클래스는 최소 저장 기간이 있으며, 이 기간 내에 데이터를 삭제하면 잔여 기간에 대한 비용이 청구됩니다.

최소 청구 객체 크기: 일부 클래스는 최소 청구 객체 크기가 있으므로, 작은 파일을 저장할 경우 예상보다 높은 비용이 발생할 수 있습니다.

자동 계층화 활용: S3 Intelligent-Tiering을 사용하면 데이터 접근 패턴에 따라 자동으로 적절한 계층으로 이동하여 비용을 절감할 수 있습니다.

수명 주기 정책 설정: S3 수명 주기 정책을 설정하여 일정 기간 후에 데이터를 자동으로 저비용 스토리지 클래스로 이동시킬 수 있습니다.


결론


S3는 AWS의 기본이자, 클라우드 데이터 저장의 표준입니다. 하지만 단순히 데이터를 담아두는 공간이 아니라, 어떻게 저장하고, 어떻게 꺼내고, 어떻게 관리하는지에 따라 요금이 천차만별로 달라지는 정밀한 비용 관리 대상이라는 사실을 꼭 기억해야 합니다.


스토리지 클래스 선택은 단순한 옵션이 아니라, 매달 비용을 좌우하는 전략의 핵심입니다.

요청 요금과 데이터 전송 요금은 의외의 비용 폭탄이 될 수 있으며, 이를 이해하고 모니터링하는 습관이 필요합니다.

S3 추가 기능은 유용하지만, 필요하지 않다면 꺼야 합니다. 필요 없는 기능이 켜져 있는 것은 불필요한 지출로 이어집니다.


비용 최적화의 첫걸음은 “내 데이터의 사용 패턴을 정확히 파악”하는 것입니다. 그리고 그 이해를 바탕으로, S3의 다양한 옵션과 기능을 선택적으로 활용하면, 저장 용량이 늘어나도 비용은 합리적으로 유지할 수 있습니다.







FinOps 커뮤니티에 함께 하실래요?


저는 최근 48%, $36000의 AWS 비용절감을 달성했습니다.

클라우드 비용을 효율화하고 싶은 분들, 비슷한 고민을 나누고 싶다면 제가 운영 중인 AWS-FINOPS-KR Slack 커뮤니티에 참여하세요. 실제 절감 사례, 질문, 전략 공유를 나누실 수 있습니다.


⇒ [FinOps Slack 참여하기]

keyword
매거진의 이전글퀵사이트 Cost Explorer 분석하기