Amazon S3 애플리케이션 구축을 위한 일반적인 버킷 패턴
Amazon S3 애플리케이션 구축을 위한 일반적인 버킷 패턴
Amazon S3에 애플리케이션을 구축할 때, 고유한 일반 목적 버킷(general purpose bucket)을 사용해 서로 다른 데이터셋이나 워크로드를 분리할 수 있어요. 최종 사용자나 서로 다른 사용자 그룹을 대상으로 하는 애플리케이션을 만들 때는 설계 패턴의 모범 사례를 따라 Amazon S3 기능과 확장성을 최대한 활용하는 게 좋아요.
중요: 예측 불가능한 일반 목적 버킷 이름을 만들 것을 권장해요. 버킷을 이미 만들지 않았다면 선택한 이름이 사용 가능하다고 가정하는 코드를 작성하지 마세요. 오직 내 계정만 버킷 이름을 소유할 수 있다는 보장을 받으려면 계정 리전별 네임스페이스에 버킷을 만들 것을 권장해요.
출처: 문서
본문
다중 테넌트 일반 목적 버킷 패턴 (Multi-tenant general purpose bucket pattern)
다중 테넌트 버킷에서는 팀이나 워크로드를 위해 하나의 일반 목적 버킷을 만들어요. 고유한 S3 접두사(prefix)를 사용해 버킷에 저장하는 객체를 정리해요. 접두사는 객체 키 이름의 시작 부분에 오는 문자열이며, 객체 키 이름의 최대 길이(1,024바이트) 안에서 어떤 길이든 가능해요. 접두사를 디렉터리처럼 데이터를 정리하는 방법으로 생각할 수 있지만, 접두사는 디렉터리가 아니에요.
예를 들어 도시 정보를 저장할 때 대륙별로, 그다음 국가별로, 그다음 주/도별로 정리할 수 있어요. 이름에 보통 문장 부호가 없으므로 구분자로 슬래시(/)를 사용할 수 있어요. 다음은 슬래시(/) 구분자로 도시 이름을 대륙, 국가, 주/도 순으로 정리한 예시예요:
Europe/France/NouvelleA-Aquitaine/BordeauxNorth America/Canada/Quebec/MontrealNorth America/USA/Washington/BellevueNorth America/USA/Washington/Seattle
이 패턴은 일반 목적 버킷 안에 수백 개의 고유 데이터셋이 있을 때 잘 확장돼요. 접두사를 사용해 이 데이터셋들을 쉽게 정리하고 그룹화할 수 있어요.
하지만 다중 테넌트 패턴의 잠재적 단점은 기본 버킷 암호화, S3 버전 관리, S3 Requester Pays 같은 많은 S3 버킷 수준 기능이 접두사 수준이 아니라 버킷 수준에서 설정된다는 점이에요. 다중 테넌트 버킷의 서로 다른 데이터셋이 고유한 요구 사항을 가진다면, 접두사 수준에서 버킷 수준 기능을 구성할 수 없으므로 각 데이터셋에 맞는 올바른 설정을 지정하기 어려울 수 있어요. 또한 다중 테넌트 버킷에서는 특정 접두사와 관련된 스토리지, 요청, 데이터 전송을 파악하며 비용 할당이 복잡해질 수 있어요.
용도별 버킷 패턴 (Bucket-per-use pattern)
용도별 버킷 패턴에서는 각각의 고유한 데이터셋, 최종 사용자, 또는 팀마다 일반 목적 버킷을 만들어요. 각 버킷에 대해 S3 버킷 수준 기능을 구성할 수 있으므로, 이 패턴을 사용해 버킷별 고유한 설정을 구성할 수 있어요. 예를 들어 기본 버킷 암호화, S3 버전 관리, S3 Requester Pays 같은 기능을 각 버킷의 데이터셋에 맞게 사용자 정의할 수 있어요. 데이터셋/사용자/팀마다 버킷 하나를 쓰면 접근 관리와 비용 할당 전략도 단순해져요.
이 전략의 잠재적 단점은 잠재적으로 수천 개의 버킷을 관리해야 한다는 점이에요. 모든 AWS 계정에는 기본적으로 10,000개의 일반 목적 버킷 할당량이 있어요. Service Quotas 콘솔에서 할당량 증가를 요청할 수 있어요.
버킷별 사용 패턴을 관리하고 인프라 관리를 단순화하려면 AWS CloudFormation을 사용할 수 있어요. 원하는 S3 일반 목적 버킷 설정을 모두 정의한 맞춤 CloudFormation 템플릿을 만들어 인프라 변경을 쉽게 배포·추적할 수 있어요.
용도별 패턴으로 워크로드를 구축할 때는 계정 리전별 네임스페이스에 버킷을 만들 것을 권장해요. 이렇게 하면 다른 계정과 버킷 이름을 두고 경쟁하지 않아도 되고, 선택한 명명 규칙으로 버킷을 만들 수 있는 계정이 오직 내 계정뿐이라는 보장을 받을 수 있어요.