[AWS] S3 객체 생애주기
S3 워크로드 중 상당수는 백업 아카이브 작업이 수반됩니다. 잘 설계된 백업 아카이브 작업의 결과, 점점 더 많은 백업 아카이브가 정기적으로 누적됩니다.
백업 아카이브 작업에는 기존 아카이브 버전을 유지하는 일도 중요하지만, 스토리지 비용 및 공간 관리를 위해 구 버전을 삭제하거나 폐쇄하는 작업도 필요하며, S3는 이를 위해 자동화된 백업 관리 기법인 버전 관리 및 생애주기 관리 기법을 제공합니다.
버전 관리(Versioning)
다수의 파일 시스템은 하나의 저장 공간에서 동일한 이름이 붙은 파일을 여러 번 업데이트하면서 새로운 파일로 기존의 파일을 덮어쓰는 경우가 많습니다. 이후 사용자는 최신 버전의 파일을 쓰게 되지만, 때에 따라서 기존 버전의 파일을 가져와야 할 때가 있으며, 실수에 의해 덮어쓰기 된 파일을 복구해야 하는 경우도 있습니다.
기본적으로 S3에 저장된 객체 또한 비슷한 방식으로 관리되지만, 버킷 레벨에서 버전 관리(Versioning) 기능을 활성화해서 객체의 구 버전을 저장해 두고 필요할 때는 언제든 접속하도록 할 수 있습니다. 이는 실수에 의한 덮어쓰기 문제를 해소할 수 있긴 하지만 저장 공간이 지나치게 커지는 문제를 낳기도 합니다. 이에 대한 해법이 바로 생애주기 관리입니다.
생애주기 관리(Lifecycle)
앞서 살펴본 S3 Intelligent-Tiering 클래스가 데이터 접속 빈도에 따라 자동으로 클래스를 변경한다면, 버킷 레벨의 생애주기 규칙(lifecycle rules)을 작성해서 지정 일수에 따라 자동으로 클래스가 변경되도록 설정할 수 있습니다.
예를 들어, 처음 30일간 S3 Standard 클래스에 객체를 저장한 후, 다음 30일간은 좀 더 저렴한 One Zone IA 클래스에 객체를 저장하는 생애주기 규칙을 작성할 수 있습니다. 이후 법규 등에 의해 오래된 데이터를 1년간 추가로 보관해야 하는 경우, 365일간 Glacier 클래스에 저장한 뒤 영구적으로 삭제하는 규칙 또한 추가할 수 있습니다.
접두사를 이용해서 버킷 내 일부 객체에 대해서만 생애주기 규칙을 적용하는 것도 가능합니다. 단 객체 이동 전, 특정 클래스에 유지돼야 하는 최소 기간(ex. 30일)이 정해져 있으며, S3 Standard에서 Reduced Redundancy로 직접 이동시킬 수는 없습니다.
참고 사항
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/lifecycle-configuration-examples.html
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791161756103