목록으로

클라우드

OpenStack Swift 완전 가이드: OpenStack 객체 스토리지의 구조와 활용

BeanCon
OpenStack Swift 객체 스토리지와 분산 스토리지 노드를 표현한 기술 일러스트

OpenStack Swift의 객체 스토리지 구조, 핵심 서비스, 데이터 복제, 프록시 서버, 스토리지 정책, Erasure Coding, 활용 사례와 운영 모범 사례를 정리합니다.

현대 클라우드 애플리케이션은 이미지, 동영상, 백업, 로그, 가상 머신 스냅샷, 아카이브, 애플리케이션 파일처럼 막대한 양의 비정형 데이터를 생성합니다. 이러한 데이터를 효율적으로 저장하려면 높은 확장성, 장애 허용성, 비용 효율성을 갖춘 스토리지 시스템이 필요합니다.

OpenStack Swift는 OpenStack 생태계의 Object Storage 서비스로, 분산 스토리지 클러스터 전반에 걸쳐 대규모 비정형 데이터를 저장하고 검색하도록 설계되었습니다.

전통적인 파일 시스템이나 블록 스토리지와 달리 Swift는 RESTful 객체 스토리지 플랫폼을 제공합니다. Swift는 데이터를 자동으로 복제하고, 여러 스토리지 노드에 분산하며, 하드웨어 장애가 발생해도 계속 동작할 수 있도록 설계되어 있습니다.

이 글에서는 Swift의 아키텍처, 핵심 서비스, 데이터 흐름, 복제 메커니즘, 스토리지 정책, 배포 전략, 엔터프라이즈 운영 모범 사례를 종합적으로 살펴봅니다.

OpenStack Swift란?

OpenStack Swift는 대량의 변경 빈도가 낮은 데이터를 저장하도록 설계된 분산 Object Storage 시스템입니다. 파일과 디렉터리로 데이터를 구성하는 대신, Swift는 계정에 속한 컨테이너 안에 객체를 저장합니다.

Account
Container
Object
Object
Object
Container
Object

각 객체는 데이터, 메타데이터, 고유한 객체 이름을 포함합니다.

Swift가 최적화된 영역
대규모 확장성
높은 내구성
REST API 접근
범용 하드웨어
멀티 페타바이트 스토리지

왜 Object Storage가 필요한가?

전통적인 스토리지 시스템은 수십억 개의 파일을 관리할 때 한계가 있습니다.

스토리지 유형
적합한 용도
한계
로컬 디스크
임시 VM 스토리지
영속성이 낮음
Block Storage (Cinder)
데이터베이스, VM 디스크
파일 시스템 관리 필요
File Storage (Manila)
공유 파일 접근
디렉터리 계층 구조의 한계
Object Storage (Swift)
이미지, 백업, 아카이브, 미디어
블록 수준 접근에는 적합하지 않음
Swift가 적합한 데이터
크기가 큼
비정형 데이터
HTTP를 통해 자주 접근됨
장기간 저장됨
여러 애플리케이션에서 공유됨

Swift 아키텍처

01
클라이언트
CLI, SDK, REST 요청
02
HTTPS / REST API
표준 HTTP 기반 객체 접근
03
Swift Proxy
Proxy Server가 요청 진입점 역할
04
Object Node
객체 데이터 저장
05
Object Node
복제본 저장
06
Object Node
장애 허용 분산 저장
07
Local Storage
각 노드의 물리 디스크

핵심 구성요소

Swift는 역할이 분리된 여러 전문 서비스로 구성됩니다.

1. Proxy Server

Proxy Server는 외부에 공개되는 진입점입니다. 모든 클라이언트 요청은 프록시 서비스를 통과합니다.

Proxy Server의 책임
인증
요청 검증
객체 업로드
객체 다운로드
메타데이터 처리
요청 라우팅
로드 밸런싱

2. Object Server

Object Server는 실제 객체 데이터를 저장합니다. 각 객체는 메타데이터와 체크섬 정보와 함께 저장됩니다.

Object Server의 책임
객체 저장
객체 삭제
객체 복제
객체 무결성 검증

3. Container Server

컨테이너는 버킷과 유사한 개념입니다. Container Server는 객체 자체를 저장하지 않고, 컨테이너와 객체 목록 정보를 관리합니다.

Container Server가 관리하는 정보
객체 목록
객체 메타데이터
컨테이너 통계
객체 인덱싱

4. Account Server

Account Server는 계정 수준의 컨테이너와 통계, 메타데이터를 관리합니다.

Account
Container A
Container B
Container C

Swift Ring

Ring은 Swift에서 가장 중요한 개념 중 하나입니다. Swift는 중앙 집중식 메타데이터 데이터베이스를 사용하는 대신, 일관 해싱 링을 사용해 객체가 어디에 저장될지 결정합니다.

01
Object Hash
02
Partition
03
Storage Node
04
Physical Disk
Ring의 장점
중앙 조회 데이터베이스가 필요 없음
객체 위치를 빠르게 찾을 수 있음
클러스터 확장이 쉬움
자동 재분산 지원

데이터 복제

Swift는 객체를 여러 스토리지 장치에 자동으로 복제합니다.

01
객체 업로드
02
Replica 1
Node A
03
Replica 2
Node B
04
Replica 3
Node C
복제의 이점
고가용성
하드웨어 장애 허용
재해 복구
자동 치유

기본 복제 계수는 보통 세 개의 복사본이지만, 스토리지 정책에 따라 조정할 수 있습니다.

객체 업로드 워크플로우

01
Client
02
Proxy Server
03
Ring Lookup
04
Select Storage Nodes
05
Store Object
06
Replication
07
Success Response

클라이언트는 필요한 복제본이 안전하게 저장된 뒤에만 성공 응답을 받습니다.

객체 조회 워크플로우

01
Client
02
Proxy
03
Ring Lookup
04
Nearest Replica
05
Return Object

하나의 복제본을 사용할 수 없는 경우 Swift는 자동으로 다른 복제본에서 객체를 가져옵니다.

객체 메타데이터

모든 객체는 메타데이터를 포함합니다. 애플리케이션은 객체 내용을 변경하지 않고도 사용자 정의 메타데이터를 붙일 수 있습니다.

메타데이터
예시
Content-Type
image/jpeg
Content-Length
5 MB
Last Modified
2026-06-20
ETag
SHA hash
Custom Metadata
Project=AI

스토리지 정책

Swift는 여러 스토리지 정책을 지원합니다. 애플리케이션은 성능과 내구성 요구사항에 따라 스토리지 정책을 선택할 수 있습니다.

정책
스토리지 유형
Gold
NVMe SSD
Silver
SSD
Bronze
HDD
Archive
Erasure Coding

Replication vs Erasure Coding

Swift는 Replication과 Erasure Coding을 모두 지원합니다.

Replication
Object
Copy 1
Copy 2
Copy 3
장점: 빠른 복구
장점: 단순한 아키텍처
단점: 더 많은 스토리지 사용량
Erasure Coding
Object
청크로 분할
Data + Parity 생성
여러 노드에 분산
장점: 훨씬 낮은 스토리지 오버헤드
장점: 뛰어난 내구성
장점: 스토리지 비용 절감
Erasure Coding이 자주 쓰이는 영역
백업
아카이브
콜드 스토리지

일관성 모델

Swift는 eventual consistency, 즉 최종적 일관성을 제공합니다. 이는 데이터의 가용성을 높이고, 복제본이 시간이 지나며 동기화되는 방식입니다. 업데이트 직후에는 읽기 요청이 잠시 이전 버전을 반환할 수 있습니다.

백업과 미디어 같은 객체 스토리지 워크로드에서는 이러한 절충이 뛰어난 확장성과 복원력을 제공합니다.

인증

Swift는 Keystone과 통합됩니다. 이를 통해 안전한 멀티테넌트 접근과 역할 기반 권한 부여가 가능합니다.

01
Client
02
Keystone
03
Authentication Token
04
Swift Proxy
05
Object Access

다른 OpenStack 서비스와의 통합

Glance

Swift는 VM 이미지를 저장할 수 있습니다.

01
Glance
02
Swift
03
VM Image Repository
Glance + Swift의 이점
확장 가능한 이미지 저장소
높은 내구성
쉬운 배포와 분산

Cinder Backup

Cinder 백업은 Swift에 저장할 수 있습니다. 이를 통해 백업 스토리지를 운영 볼륨과 분리할 수 있습니다.

01
Cinder Volume
02
Backup
03
Swift

Nova

Nova 인스턴스에서 실행되는 애플리케이션은 REST API나 SDK를 통해 Swift와 직접 상호작용할 수 있습니다.

일반적인 Nova 기반 워크로드
미디어 업로드
로그 아카이빙
보고서 생성

REST API

Swift는 RESTful API를 제공합니다.

일반적인 작업
PUT Object
GET Object
DELETE Object
LIST Container
HEAD Object

예시:

PUT /v1/account/container/photo.jpg

자주 쓰는 CLI 명령

컨테이너 생성:

openstack container create images

객체 업로드:

openstack object create images photo.jpg

컨테이너 목록 조회:

openstack container list

객체 목록 조회:

openstack object list images

객체 다운로드:

openstack object save images photo.jpg

객체 삭제:

openstack object delete images photo.jpg

Swift vs Amazon S3

기능
OpenStack Swift
Amazon S3
오픈소스
아니오
셀프호스팅
아니오
REST API
멀티테넌트
Object Storage
스토리지 정책
Erasure Coding
벤더 종속성
없음
AWS 생태계

Swift는 인프라 제어권, 데이터 위치, 장기 운영 비용을 직접 관리해야 하는 조직에서 자주 선택됩니다.

대표적인 엔터프라이즈 활용 사례

백업 저장소

저장 대상
데이터베이스 백업
VM 백업
Kubernetes 백업

미디어 스토리지

애플리케이션이 저장할 수 있는 데이터
이미지
동영상
오디오
문서

로그 아카이브

중앙 집중 저장 대상
보안 로그
애플리케이션 로그
감사 기록

빅데이터

대규모 분석 플랫폼은 처리 전에 원시 데이터셋을 객체 스토리지에 저장하는 경우가 많습니다.

AI와 머신러닝

Swift에 적합한 AI/ML 데이터
학습 데이터셋
모델 아티팩트
추론 결과
피처 파일

운영 모범 사례

여러 스토리지 노드 배포

중복성과 지속적인 가용성을 보장하려면 최소 세 개의 스토리지 노드를 권장합니다.

전용 스토리지 네트워크 사용

스토리지 트래픽을 테넌트 및 관리 네트워크와 분리하면 지연 시간을 줄이고 대역폭 경합을 피할 수 있습니다.

디스크 상태 모니터링

정기적으로 모니터링할 항목
디스크 장애
용량 사용률
복제 상태
네트워크 처리량

Prometheus와 Grafana 같은 모니터링 도구가 일반적으로 사용됩니다.

적절한 스토리지 정책 선택

자주 접근되는 객체에는 NVMe나 SSD 같은 빠른 미디어를 사용하고, 아카이브 워크로드에는 Erasure Coding 정책을 사용하면 비용과 성능을 최적화할 수 있습니다.

Lifecycle Management 활성화

더 이상 필요하지 않은 객체를 자동 만료하거나 아카이브하면 스토리지 비용을 줄이고 데이터 관리를 단순화할 수 있습니다.

OpenStack Swift의 장점

장점
대규모 확장이 가능한 객체 스토리지
Replication 또는 Erasure Coding을 통한 높은 내구성
애플리케이션 통합이 쉬운 RESTful API
자동 데이터 분산
범용 하드웨어 지원
멀티테넌트 아키텍처
Keystone 인증 통합
유연한 스토리지 정책
오픈소스이며 벤더 종속성 없음
OpenStack 생태계와의 자연스러운 통합

한계

제약 사항
낮은 지연 시간이 필요한 블록 스토리지 워크로드에는 적합하지 않음
전통적인 계층형 파일 시스템을 제공하지 않음
최종적 일관성이 모든 애플리케이션 요구사항에 맞지는 않을 수 있음
S3 API 중심으로 설계된 솔루션보다 S3 호환성이 낮을 수 있으며, 완전한 호환성을 위해 추가 게이트웨이가 필요할 수 있음

결론

OpenStack Swift는 대규모 비정형 데이터를 뛰어난 확장성, 내구성, 장애 허용성으로 처리하도록 설계된 견고한 분산 객체 스토리지 플랫폼입니다. Swift는 일관 해싱, 자동 복제, 유연한 스토리지 정책을 사용해 단일 장애점을 제거하고, 범용 하드웨어 기반 클러스터를 자연스럽게 확장할 수 있게 합니다.

Swift는 클라우드 네이티브 애플리케이션, 미디어 저장소, 백업 시스템, AI 데이터셋, 로그 아카이브, 가상 머신 이미지 저장소에 특히 적합합니다. Glance, Cinder, Nova, Keystone과 통합하면 현대적인 OpenStack 클라우드의 핵심 구성요소가 됩니다.

프라이빗 또는 하이브리드 클라우드를 구축하는 조직에게 Swift는 독점 객체 스토리지 플랫폼의 엔터프라이즈급 대안이 될 수 있습니다. Swift는 인프라에 대한 완전한 제어권, 예측 가능한 확장성, 오픈소스 생태계의 유연성을 제공합니다.

댓글

0

댓글을 불러오는 중입니다.