오늘은 AWS S3 (=Amazon Simple Storage Service) 에 대해서 공부해봤다.
업무에서 직접적으로 사용해본적은 없지만 이름도 정말 많이 들어봤던 S3.
Cloud Object Storage로 S3는 AWS 서비스 중 가장 기본적인 서비스가 아닐까 생각이 든다.
데이터 엔지니어링 분야에서 데이터를 저장 하는 저장소는 굉장히 중요하다고 생각한다.
raw data가 될 수도 있고, Transform을 데이터, BI/Report 용 데이터 등 다양한 데이터들을 저장 할 수 있는 저장소는 필수적이다.
개념적인 부분 심화적인 부분(Version, Replication, Life Cycle..) 을 공부해보면서 하나하나 정리해보려고 한다.
AWS에서 제공하는 Cloud Object Storage Service 이다.
Cloud 환경이기 때문에 무한한 확장성과 가용성 등을 제공한다. (99.99999999999% 의 내구성. 9가 11개...)
S3를 사용한 사례들로는 기본적으로 데이터 백업 등이 있을 것이다.
이 밖에 Disaster Recovery(DR), hosting (static website, media, image, video), Archive .. 등 다양하게 활용 가능하다.
데이터엔지니어링의 데이터 레이크를 구축하거나 데이터 분석을 위한 용도로도 사용이 가능하다.
S3를 이해하기 위해서는 Bucket, Object 개념에 대해서 공부가 필요하다.
AWS S3에서 데이터를 업로드하기 위해서는 AWS region에 Bucket이 생성되어야한다.
Bucket은 S3에 저장 된 Object에 대한 컨테이너이다. 흔히 파일 구조에서 directory로 이해하면 쉽지만 실제로는 디렉토리는 아니다.
모든 region에서 unique한 이름으 가져야하며 리전 단위로 생성이 가능하다.
버킷을 생성할때 이름에 제약이 있는데 공식 문서를 참고하면 좋을 것 같다. (https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/bucketnamingrules.html)
다음은 Object이다.
Object는 고유한 key-value를 가진 객체 스토어이다.
value의 경우 5TB까지 저장 가능하며 5GB가 넘는다면 multi-upload를 사용해야 한다.
key의 경우 객체에 할당 된 이름으로 객체를 path로 접근하기 위해서 사용할 수 있다.
이때 UI를 통해 디렉토리 구조로 화면에 보여준다.
아래와 같이 버킷을 생성하고 object를 업로드해봤다.
[bucket] aws-de-study
[object key] test.jpeg, images/test.jpeg
가장 기본적인 개념인 S3와 Buckets, Objects 를 공부해봤다.
앞으로 S3를 운영하고 관리하기 위한 다양한 소요들을 공부하면 좋을 것 같다.
추가로 S3, HDFS(Hadoop Distributed File System)를 비교도 필요할 것 같다.
사실 기존에 데이터 엔지니어링 업무에서는 HDFS를 사용하였지만, 스타트업 등 조금 더 작은 규모의 회사들에서는 On-premise의 하둡이 아닌 클라우드 환경을 압도적으로 많이 사용하지 않을까 싶다.
AWS S3 Object Lambda 공부하기 (1) | 2024.08.18 |
---|---|
AWS EBS, AWS EFS 공부하기 (feat. S3) (2) | 2024.08.18 |
AWS S3 Storage Class (0) | 2024.08.18 |
AWS S3 Versions, Lifecycle (1) | 2024.08.18 |
AWS S3 vs HDFS (4) | 2024.08.17 |