Elastic Block Storage 의 약자로 EC2 인스턴스와 함께 사용하는 블록 스토리지 이다. (network drive)
해당 스토리지에 저장 된 데이터는 인스턴스가 제거되거나 멈추더라도 데이터는 유지 된다.
한번에 하나의 인스턴스에 mount 될 수 있으며 특정 Availability zone에 생성된다.
쉽게 이해하면 EC2의 로컬 하드 디스크라고 생각하고 사용하면 된다.
로컬 디스크 처럼 SSD/HDD 등 불륨 유형을 제공하며 확장성 높게 사용이 가능하다.
재시작 없이 Volume 변경이 가능하다.
또한 Snapshot과 암호화 등 저장 스토리를 위한 다양한 기능을 제공한다.
Elastic File System의 약자이며 EBS와 다르게 여러개의 EC2 인스턴스에 mount가 가능하다.
또한 multi-AZ를 지원한다. (EBS보다 비용이 비싸다)
Cloud Native NFS file systeam 이다.
EBS보다 비싸지만 공용 파일 스토리지로 여러개의 intance에서 접근해야하는 니즈가 생긴다면 굉장히 유용할 것 같다.
물론 단일 instance에서만 접근이 필요한 요구사항과 환경이라면 굳이 EFS를 쓸 이유는 없을 것 같기는 하다.
AWS에서 제공하는 3개의 Storage Service 로는 S3(object), EBS(block), EFS(file) 가 있다.
어떤 스토리지가 제일 좋은 건 아니고 각 비즈니스 요구사항에 맞게 선택하고 사용하면 좋을 것 같다.
그렇다면, 어떤 부분을 고려해서 사용하는데 결정하면 좋을지 알아보자.
우선, 여러 곳에서 데이터 접근이 필요하다면 EBS는 제외된다. EBS의 경우 싱글 EC2 인스턴스에서 직접적으로 접근하기 위해서 사용된다. 물론 그 만큼 성능과 비용 효율적으로 사용이 가능할 것 이다.
그렇다면, S3와 EFS를 비교해보자.
EFS의 경우 전통적인 파일 시스템(디렉토리) 구조로 NFSv4 프로토콜을 사용한다. (NFS = Network File System)
애플리케이션에서는 데이터 접근을 위해서 OS에서 제공하는 파일 인터페이스를 그대로 사용 가능하다. 확장이나 안정성을 위한 별도의 코드나 작업은 필요없다.
S3의 경우 object storage platform 으로 데이터에 접근하고 사용하기 위해서는 별도의 interface가 필요하다 (AWS CLI, AWS SDK, REST API 를 사용해 요청이 필요하다)
하지만 대규모 데이터 저장과 관리, 운영을 비용 효율적으로 할 수 있는 Solution이다.
아래 표에 서로 비교해놓은 내용이 있다. (https://aws.amazon.com/ko/efs/when-to-choose-efs/)
공식 문서의 자료로 굉장히 자세히 설명되어 있다.
우선 EFS라는 저장소는 공부를 하면서 처음 알게 된 저장소이다.
여러개(수천대)의 인스턴스에서 접근할 수 있는 저장소로 굉장히 매력적인 저장소라고 생각한다. 비즈니스 요구사항이 있을때 고려해볼 저장소 중 하나라는 생각이 들었다.
데이터엔지니어링을 위한 Data lake 를 구축한다면 S3을 사용하겠지만 애플리케이션(인스턴스)에서의 비즈니스 요구사항들을 처리하기 위해서는 EBS, EFS에 대해서도 잘 인지하고 있어야 한다고 생각한다.
결국 모든 것에 정답이 되는 최고의 솔루션, 서비스는 없고 내가 내 입맛에 맞게 잘 사용하고 활용할 줄 아는 엔지니어가 되어야한다고 생각한다.
화려한 오버엔지니어링보다는 비즈니스 요구사항에 비용, 속도 효율적인 구현이 가능한 역량이 굉장히 중요한 것 같다.
SQL, RDBMS vs NoSQL 공부 (2) | 2024.08.19 |
---|---|
AWS S3 Object Lambda 공부하기 (1) | 2024.08.18 |
AWS S3 Storage Class (0) | 2024.08.18 |
AWS S3 Versions, Lifecycle (0) | 2024.08.18 |
AWS S3 vs HDFS (1) | 2024.08.17 |