클라우드 스토리지(Cloud Storage) 기술의 이해

민첩성(Agility)과 유연성(Flexibility)은 클라우드가 가진 최대의 장점입니다.
이런 클라우드의 장점을 효과적으로 활용하기 위해서는 해당 기술의 깊이 있는 이해가 필요합니다.
특히, 기업의 핵심 자산인 데이터를 저장하는 스토리지 기술은 클라우드 서비스에서도 핵심적인 필수 요소입니다.
클라우드에서 사용하는 스토리지 종류 및 사용법에 대해 살펴보겠습니다.

클라우드 기술 백서 관련하여 궁금하신 사항은 이곳으로 문의주세요.

기업의 핵심 자산인 데이터를 저장하는, 클라우드 스토리지(Storage) 기술

민첩성(Agility)과 유연성(Flexibility)은 클라우드가 가진 최대의 장점입니다. 이런 클라우드의 장점을 효과적으로 활용하기 위해서는 해당 기술의 깊이 있는 이해가 필요합니다. 특히, 기업의 핵심 자산인 데이터를 저장하는 스토리지 기술은 클라우드 서비스에서도 핵심적인 필수 요소입니다. Local Disk, SAN(Storage Area Network), NAS(Network Attached Storage), Object 등의 다양한 스토리지는 애플리케이션 요구 조건에 따라 선택되어 사용하고 있습니다.

스토리지는 데이터 접근 방식에 따라 3가지로 구분

이런 스토리지는 데이터 접근 방식에 따라 Block, File, Object로 구분되는데 사용법과 주요 Workload 타입은 다음과 같습니다.

구분, 사용법, Workload 타입을 확인할 수 있습니다.
구분 사용법 Workload 타입
Block 1. 디스크 인식
2. 볼륨 생성
3. 파일 시스템 생성
4. mount (② ,③, ④ 없이 App에서 바로 사용 가능 예: Oracle ASM)
- 빠른 응답 속도, 고성능, 변경이 많은 데이터
- Database, Transaction 처리, App용 파일시스템
File 1. IP와 경로(Path) 확인
2. mount
- 파일 공유, 변경이 많은 데이터, Lock 처리 필요
- 문서 공유, 빅데이터 분석, 미디어 처리, 웹컨텐츠 관리
Object 1. Object 주소(URL) 확인
2. 프로그램(REST API)을 통한 사용
- 대량의 파일(Object) 처리, 변경이 거의 없는 데이터
- 동영상/이미지 등 미디어 저장, 아카이빙, 백업

클라우드 스토리지 서비스 이용 시 고려 사항

Application 에서

Local Disk

Fc, isCSI, FCoE SAN

NFS, SMB(CIFS) NAS

REST API Object

로 나눠지고 그 아래로 block, file, object 이미지

블록 스토리지(Block Storage)

블록 스토리지는 Legacy 환경에서 가장 일반적으로 사용되는 스토리지입니다. 클라우드 환경에서 블록 스토리지를 효과적으로 사용하기 위해서는 스토리지의 용량과 성능에 대한 고려가 선행되어야 합니다. 일반적인 업무 환경에는 문제가 없을 수 있지만 용량이 작은 경우, 스토리지 성능에 제약이 발생할 수 있습니다.

클라우드 스토리지에서는 용량에 따라 보장되는 성능이 다를 수 있기 때문입니다. 작은 용량으로 고성능이 필요한 경우에는 처음부터 SSD 상품을 선택하는 것을 권장하며 기존 업무의 이관 시에도 용량 뿐 아니라 필요 성능까지 확인하는 것이 중요합니다. I/O처리량이 많거나 응답 속도에 민감한 경우에는 스토리지 상품뿐만 아니라 고성능 I/O를 처리할 수 있는 클라우드 컴퓨팅(Cloud Computing) 상품을 선택하는 것도 고려해야 합니다.

[여기서 잠깐!] 스토리지 성능은 어떻게 비교하면 좋을까?

스토리지 성능 수치 비교를 위해서는 IOPS(Input/output Operations Per Second)나 Throughput(MB/s) 값을 사용하는데 I/O Size, Read and Write 비율, Sequential and Random I/O 패턴 등, 성능 수치에 영향을 미치는 요소를 고려해야 합니다. 어떤 환경에서 측정된 값인지에 따라 클라우드 스토리지 상품의 성능이 다르게 나타날 수 있기 때문입니다.

[여기서 잠깐!] 클라우드에서 임시로 고성능 스토리지가 필요하다면?

클라우드에서 임시 사용 공간으로 고성능이 필요한 경우에는 Local NVMe 디스크를 사용할 수 있습니다. 일반적으로 클라우드의 Block Storage는 네트워크 기반의 I/O 수행으로, 네트워크 Latency를 수반합니다. 하지만 Local NVMe 디스크의 경우는 동일한 H/W 장비의 Compute에 내장된 우수한 성능의 Local NVMe 디스크를 사용합니다. NVMe 디스크는 기존 SCSI 프로토콜에 비해 계층이 단순화된 명령어로 처리되어 Latency가 줄어 들었고 Multi-Queue 지원으로 I/O 처리 성능이 우수합니다.

[여기서 잠깐!] Local NVMe 디스크 사용 시 주의할 점은?

Local NVMe 디스크 사용 시 주의할 점은 Compute가 비정상 종료되면 데이터가 유실 될 수 있으므로 임시 저장 공간으로 사용 범위를 제한하고 필요한 경우 백업을 정기적으로 수행해야 합니다. 클라우드의 블록 스토리지는 여러OS에서 동시 접근을 할 수 없지만 특정 상품에서는 Multi Attached라고 불리는 동시 접근 기능이 옵션으로 제공됩니다. 이 기능을 통해 클라우드 환경에서도 Linux GFS2나 Veritas의 CFS 같은 클러스터 파일 시스템을 구성할 수 있습니다. Linux GFS2나 Veritas의 CFS 구성에서 데이터 정합성은 블록 스토리지가 아닌 애플리케이션에서 구현됩니다.

파일 스토리지(File Storage)

파일(File)은 가장 쉬운 데이터 공유 방식입니다. 사용해야 할 파일 스토리지의 IP와 Path 정보만 알면 되고 POSIX를 지원하기 때문에 파일 시스템을 사용하는 애플리케이션은 별도의 프로그램 변경 없이 바로 사용이 가능합니다. 파일 스토리지도 블록 스토리지처럼 용량에 따라 성능 수치가 결정되기 때문에 이에 대한 고려가 필요합니다.

[여기서 잠깐!] 파일 스토리지의 제약 조건을 먼저 확인 합시다.

기존 레거시(Legacy) 환경의 NAS에서는 멀티 프로토콜(Multi-Protocol)을 지원하기 때문에 마운트 타겟을 Linux나 Windows에서 동시에 사용할 수 있습니다. 하지만 클라우드 파일 제품은 Multi-Protocol을 지원하지 않는 경우도 있기 때문에 제약 조건 확인이 필요합니다. NFS는 Protocol버전이 있습니다. 레거시 환경의 NAS는 버전 3과 4를 동시에 지원하지만 클라우드 File 제품은 특정 버전만 지원하는 경우가 있습니다. 버전 3과 4는 전환 사용이 가능하지만 애플리케이션에 따라 NFS Protocol 버전의 영향을 받는 경우가 있기 때문에 호환성 체크가 필요합니다.

오브젝트 스토리지(Object Storage)

오브젝트 스토리지는 클라우드 스토리지의 대표 제품입니다. 수억 개 이상의 Object(이미지 파일 등)를 관리하고 수천 대 이상의 클라이언트 I/O 요청을 동시에 처리할 수 있습니다. 기존 아키텍처로는 제약이 많아 불가능했던 부분이었습니다.

[여기서 잠깐!] 파일시스템의 단점 : 오버헤드

일반적으로 파일시스템은 파일을 inode 기반으로 한 Tree 방식으로 관리합니다. 이런 구조에서 inode에는 파일 이름 정보가 없기 때문에 Tree Walking을 통해 파일 위치를 찾아가야 합니다. 파일 이름과 inode 맵핑은 디렉토리가 가지고 있는 정보를 사용해서 순차적인 방식으로 찾아갑니다. 이로 인해 디렉토리 구조가 복잡해지면 path가 길어져서 파일을 찾아가는 시간이 증가하게 됩니다.

파일 시스템은 이러한 오버헤드(Overhead)를 최소화하기 위해 메모리 공간을 캐싱 영역으로 사용했습니다. 디렉토리 캐시(DNLC), inode 캐시, 파일캐시 등을 통해 성능을 높일 수 있었습니다. 그러나 파일 수의 급격한 증가로 캐시용 메모리 공간이 부족하게 되었고 캐시 데이터 관리를 위한 부하도 증가하게 되었습니다.

[여기서 잠깐!] 오브젝트 스토리지의 장점과 단점은?

이에 반해 오브젝트 스토리지는 파일 정보를 Key-value 방식의 Object ID로 관리합니다. 이는 원하는 데이터에 즉각적인 접근이 가능함을 의미합니다. 일반적으로 분산 구조 시스템으로 구현되어 있어 확장성이 뛰어나고 대량 데이터 처리에 용이합니다. 또한, 데이터 자체를 설명하는 메타 데이터의 특성을 활용하면(Tag 기능) 효과적으로 오브젝트를 관리할 수 있습니다. 그러나 Lock 기능이 없기 때문에 배타적인 접근 방식이 필요한 애플리케이션 사용에는 제약이 있습니다. 동시에 읽고 쓰는 애플리케이션의 경우 의도하지 않은 결과 값을 가질 수 있기 때문입니다. 업데이트 방식도 최종 일관성(Eventually Consistency) 모델로 동작하므로 복사본(일반적으로 3벌)이 특정 시점에 불일치할 수 있습니다.

오브젝트 스토리지에서 내용을 수정하는 것은 기존 데이터를 변경하는 것이 아니라 다시 만드는 것을 의미합니다. 이런 제약으로 변경이 많은 데이터를 오브젝트에 저장하는 것은 권장하지 않으며 오브젝트 사용을 위해서는 REST API를 사용해야 합니다.

클라우드 환경에서 백업(Backup)의 중요성

스토리지 종류에 포함하지는 않지만 클라우드 환경에서도 백업은 여전히 중요합니다. 사용자 실수나 랜섬웨어의 공격으로부터 데이터를 보호하기 위해서 백업의 필요성이 여전히 유효하기 때문입니다. 오브젝트 스토리지를 사용하는 경우에는 버저닝(versioning) 기능을 적극적으로 사용하여 중요 데이터에 대한 복구 수준을 높일 수 있습니다.

아는 만큼 사용 가능한 클라우드 스토리지 기술

지금까지 클라우드 스토리지 기술에 대해서 살펴보았습니다. 그러면 클라우드 스토리지를 잘 사용하기 위해서는 무엇을 해야 할까요? 온프레미스(On-Premise) 스토리지 환경에 대해 평가하고 PoC(Proof of Concept)를 통해 구현 가능성, 마이그레이션 시간/비용을 시뮬레이션 해야 합니다. 특히 네트워크 성능과 사용량에 대한 고려가 중요합니다. 온프레미스(On-Premise) 환경에서는 내부망으로 처리되는 트래픽이 클라우드 환경에서는 다른 방식으로 처리되어 성능과 비용에 영향을 줄 수 있기 때문입니다. 또한 파일 스토리지와 오브젝트 스토리지 제품의 경우에는 보안 정책에 더 관심을 가져야 하며 마이그레이션 후에도 지속적인 성능 모니터링과 자원 관리를 통한 최적화가 필요합니다. 클라우드 시대이지만 아는 만큼만 해당 기술을 잘 사용할 수 있다는 것은 여전히 변함이 없습니다.

이상식 프로 / 삼성SDS
스토리지 기술 전문가로 제품 평가부터 아키텍처 설계/구축/운영과 성능 진단 및 장애복구등에 전문성을 보유하고 있습니다. 20년간 삼성 관계사와 일반 고객을 대상으로 시스템 운영과 컨설팅, 기술 지원 업무를 수행하고 있습니다.
클라우드 기술 백서 관련하여 궁금하신 사항은 이곳으로 문의주세요.

좋아요
공유하기