Cloud 환경에서는 Application 규모가 커질수록 여러 서버가 동일한 데이터를 공유해야 하는 상황이 발생합니다.
기존 방식에서는 하나의 서버에 Disk를 연결하여 사용했지만, 여러 서버가 동시에 같은 데이터를 사용하려면 Shared Storage 구조가 필요합니다.
AWS에서는 이를 위해 Amazon EFS(Elastic File System)를 제공합니다.
예:
여러 EC2 Instance
↓
동일한 File Storage 연결
↓
공유 데이터 사용
EFS는 여러 서버에서 동시에 접근 가능한 Managed File Storage 서비스입니다.
| 구성 요소 | 역할 |
|---|---|
| EFS File System | 공유 파일 저장 공간 |
| Mount Target | Network 연결 지점 |
| NFS Protocol | 파일 접근 방식 |
| Availability Zone | 고가용성 구성 |
| Lifecycle Management | 비용 최적화 |
AWS EFS 구조를 이해하면 Web Server, Container 환경, Kubernetes 기반 Application의 Shared Storage Architecture를 설계할 수 있습니다.
AWS EFS란?
Amazon EFS(Elastic File System)는 AWS에서 제공하는 Managed File Storage 서비스입니다.
특징:
- 여러 EC2 동시 접근 가능
- 자동 Storage 확장
- Multi AZ 지원
- 별도 서버 관리 불필요
기존 File Server 역할을 Cloud 서비스 형태로 제공합니다.
AWS EFS와 EBS 차이
| 구분 | EFS | EBS |
|---|---|---|
| Storage 방식 | File Storage | Block Storage |
| 접근 방식 | 여러 서버 공유 | 단일 서버 연결 |
| Protocol | NFS | Block Device |
| 확장 | 자동 확장 | Volume 크기 관리 |
| 용도 | Shared File | OS·Database |
사용 목적에 따라 선택합니다.
AWS EFS Architecture
기본 구조:
AWS Region
↓
EFS File System
↓
Mount Target
↓
EC2 Instance
↓
Application
Network 기반으로 File Storage를 제공합니다.
AWS EFS Mount Target이란?
Mount Target은 EC2와 EFS를 연결하는 Network Endpoint입니다.
구조:
EC2
↓
Subnet
↓
Mount Target
↓
EFS
각 Availability Zone마다 생성할 수 있습니다.
AWS EFS Multi AZ 구조
Production 환경에서는 여러 AZ에 Mount Target을 구성합니다.
예:
Region
↓
EFS
├── AZ-A Mount Target
├── AZ-B Mount Target
└── AZ-C Mount Target
장애 발생 시에도 접근 가능합니다.
AWS EFS Storage Class
EFS는 데이터 사용 빈도에 따라 Storage Class를 제공합니다.
| Storage Class | 용도 |
|---|---|
| Standard | 자주 사용하는 데이터 |
| Infrequent Access | 접근 빈도 낮은 데이터 |
| Archive | 장기 보관 |
비용 최적화가 가능합니다.
AWS EFS Lifecycle Management
Lifecycle Management는 오래된 데이터를 자동 이동합니다.
예:
파일 생성
↓
30일 후
↓
IA Storage 이동
사용하지 않는 데이터 비용을 줄입니다.
AWS EFS와 EC2 연결
구조:
EC2 Instance
↓
NFS Mount
↓
EFS File System
여러 EC2에서 동일한 데이터를 사용할 수 있습니다.
AWS EFS와 Kubernetes 연결
앞에서 작성한 Kubernetes Storage와 연결하면:
AWS EFS
↓
EFS CSI Driver
↓
Persistent Volume
↓
Persistent Volume Claim
↓
Pod
AWS EKS 환경에서 Shared Storage로 활용할 수 있습니다.
AWS EFS CSI Driver란?
EFS CSI Driver는 Kubernetes가 AWS EFS를 사용할 수 있도록 연결하는 Component입니다.
동작:
Pod 요청
↓
PVC 생성
↓
EFS 연결
↓
Container Mount
Cloud Native Shared Storage를 구성합니다.
AWS EFS 활용 사례
대표 사용:
Web Server Cluster
여러 Web Server
↓
동일한 이미지 파일 공유
Container Application
여러 Container
↓
공유 Configuration 사용
Machine Learning
여러 Instance
↓
Dataset 공유
AWS EFS Security 구조
보안 요소:
- IAM Authorization
- Security Group
- POSIX Permission
- Encryption
여러 계층으로 보호합니다.
AWS EFS Encryption
EFS는 저장 데이터를 암호화할 수 있습니다.
구성:
Application
↓
EFS
↓
KMS Encryption
Enterprise 환경에서 많이 사용합니다.
AWS EFS Performance Mode
EFS는 Application 특성에 맞는 성능 모드를 제공합니다.
| Mode | 특징 |
|---|---|
| General Purpose | 일반 Application |
| Max I/O | 대규모 병렬 처리 |
Workload에 맞게 선택합니다.
AWS EFS 운영 Best Practice
권장:
- Multi AZ Mount Target 구성
- Encryption 활성화
- Lifecycle 적용
- Security Group 제한
- Backup 정책 구성
안정적인 Shared Storage 환경을 구축합니다.
AWS EFS 장애 분석
File System 확인:
aws efs describe-file-systems
Mount 확인:
df -h
Network 확인:
mount | grep efs
확인:
- Mount Target 상태
- Security Group
- NFS 연결
- IAM 권한
AWS EFS 비용 관리
비용 요소:
- 저장 데이터 용량
- Storage Class
- Throughput
최적화:
- Lifecycle 적용
- 불필요한 데이터 제거
- IA Storage 활용
AWS EFS 장점
| 장점 | 설명 |
|---|---|
| 공유 Storage | 여러 서버 접근 |
| 자동 확장 | 용량 관리 불필요 |
| 고가용성 | Multi AZ 지원 |
| Cloud Native | Container 연결 가능 |
EFS는 AWS 환경에서 Shared File Storage를 제공하는 핵심 서비스입니다.
자주 묻는 질문
EFS와 S3는 같은 Storage인가요?
아닙니다.
EFS는 File Storage이고 S3는 Object Storage입니다.
EFS는 여러 EC2에서 동시에 사용할 수 있나요?
가능합니다.
여러 Instance가 같은 File System에 접근할 수 있습니다.
Kubernetes에서도 EFS를 사용할 수 있나요?
가능합니다.
AWS EFS CSI Driver를 통해 EKS Persistent Storage로 활용할 수 있습니다.
마무리
AWS EFS는 여러 서버가 동시에 접근할 수 있는 Managed File Storage 서비스이며, Web Cluster, Container 환경, Kubernetes Shared Storage Architecture에서 활용됩니다.
| 구성 요소 | 역할 |
|---|---|
| EFS File System | 공유 데이터 저장 |
| Mount Target | Network 연결 |
| NFS | 파일 접근 |
| Lifecycle | 비용 관리 |
| CSI Driver | Kubernetes 연결 |
AWS EFS 구조를 이해하면 EC2, EKS, Container 기반 Enterprise Storage Architecture를 설계할 수 있습니다.