오늘날 조직은 엄청난 양의 비정형 데이터를 생성하고 처리합니다. 이 데이터에는 이미지와 동영상부터 백업, 로그 파일, 분석을 위한 대규모 데이터 세트에 이르기까지 모든 것이 포함됩니다. 이러한 다양하고 종종 매우 큰 파일을 효과적으로 저장, 관리, 액세스하려면 특수한 스토리지 솔루션이 필요합니다. 이러한 과제를 해결하기 위한 핵심 기술로 바이너리 대형 객체(BLOB) 스토리지가 등장했으며, 확장 가능하고 비용 효율적인 방식으로 비정형 데이터를 처리할 수 있는 방법을 제공합니다.
바이너리 대규모 객체 스토리지 시스템은 대규모 확장성과 높은 내구성을 갖추고 있으며 비용 효율성을 높여주므로 대량의 비정형 데이터를 저장하는 데 도움이 됩니다.
바이너리 대형 객체 스토리지를 완전히 이해하려면 먼저 객체 스토리지와 바이너리 대형 객체(BLOB) 자체인 핵심 구성요소를 정의하는 것이 좋습니다.
객체 스토리지는 데이터를 객체라는 개별 단위로 관리하는 데이터 스토리지 아키텍처입니다. 데이터를 계층적 디렉터리 구조(폴더 및 파일)로 구성하는 파일 시스템이나 데이터를 고정 크기 블록으로 관리하는 블록 스토리지와 달리 객체 스토리지 시스템은 각 데이터 조각을 자체 포함 객체로 취급합니다.
각 객체에는 일반적으로 다음이 포함됩니다.
바이너리 대형 객체(BLOB)는 단일 항목으로 저장된 바이너리 데이터 컬렉션을 의미합니다. '바이너리'라는 용어는 데이터가 무엇이든 될 수 있다는 것을 의미합니다. 텍스트나 특정 형식으로 제한되지 않습니다. 실행 파일, 이미지, 오디오 또는 동영상 콘텐츠, 압축된 보관 파일, 데이터베이스 백업 또는 기타 유형의 디지털 정보일 수 있습니다. 이름의 '대형' 부분은 BLOB가 일반적으로 정형 데이터와 함께 기존 데이터베이스 필드에 직접 저장하기에는 너무 큰 파일을 저장하는 데 사용된다는 것을 나타냅니다.
따라서 바이너리 대형 객체 스토리지는 기본적으로 이러한 BLOB를 객체 스토리지 시스템 내에 개별 객체로 저장하는 관행입니다. 예를 들어 대용량 동영상 파일을 데이터베이스 레코드에 직접 삽입하는 대신 동영상 파일을 객체 스토리지 시스템에 저장한 다음 데이터베이스에 해당 BLOB에 대한 참조(객체의 고유 식별자 또는 URL)를 저장합니다.
바이너리 대형 객체 스토리지를 사용하는 프로세스에는 일반적으로 객체 스토리지 시스템에서 지원하는 몇 가지 주요 단계가 포함됩니다.
사용자 또는 애플리케이션이 대규모 바이너리 파일을 저장해야 하는 경우 API 호출(일반적으로 HTTP/S를 통한 RESTful API)을 통해 관련 메타데이터와 함께 데이터를 객체 스토리지 시스템으로 전송합니다. 스토리지 시스템이 이 데이터를 수신합니다.
객체 스토리지 시스템은 업로드된 바이너리 데이터와 메타데이터를 가져와 '객체'로 캡슐화합니다. 그런 다음 이 새 객체에 고유 식별자를 할당합니다. 이 식별자는 객체를 나중에 처리하고 검색하는 데 사용되므로 매우 중요합니다.
시스템은 객체를 저장하며, 종종 여러 물리적 스토리지 기기, 심지어 서로 다른 데이터 센터에 객체를 배포하고 복제합니다. 이러한 분산된 접근방식은 데이터 내구성(하드웨어 장애로부터 보호)과 가용성을 향상시킵니다. 구체적인 복제 전략은 선택한 스토리지 클래스 또는 제공업체 정책에 따라 달라질 수 있습니다.
BLOB와 연결된 메타데이터가 색인됩니다. 이를 통해 수십억 개의 객체가 있더라도 메타데이터 태그를 기반으로 객체를 검색하거나 분류할 수 있습니다.
사용자 또는 애플리케이션이 BLOB에 액세스해야 하는 경우 객체의 고유 식별자를 사용하여 객체 스토리지 시스템에 요청을 보냅니다. 시스템은 객체를 찾고 바이너리 데이터를 요청자에게 다시 스트리밍합니다.
객체 스토리지 시스템은 BLOB를 읽거나 쓰고 삭제할 수 있는 사용자를 제어하는 메커니즘을 제공합니다. 이는 일반적으로 Identity and Access Management(IAM) 정책, 액세스 제어 목록(ACL) 또는 임시 액세스 권한을 부여하는 서명된 URL을 통해 관리됩니다.
바이너리 대형 객체 스토리지를 사용하면 비정형 데이터를 관리하는 데 다음과 같은 상당한 이점이 있습니다.
확장성
객체 스토리지 시스템은 엑사바이트 이상으로 확장되도록 설계되어 대량의 데이터와 객체를 수용할 수 있습니다. 따라서 대량의 데이터를 생성하는 애플리케이션에 적합합니다.
비용 효과
자주 액세스하지 않는 대규모 데이터를 기존의 고성능 파일 시스템이나 데이터베이스에 저장하면 비용이 많이 들 수 있습니다. 객체 스토리지는 액세스 빈도와 내구성 요구사항에 따라 비용이 달라지는 계층화된 옵션을 제공하여 비용 최적화를 가능하게 합니다.
내구성 및 가용성
주요 객체 스토리지 서비스는 여러 기기 또는 지리적 위치에 객체를 중복으로 저장하는 방식으로 높은 수준의 데이터 내구성을 제공할 수 있습니다. 이를 통해 하드웨어 장애로 인한 데이터 손실 위험을 최소화하고 고가용성을 지원할 수 있습니다.
풍부한 메타데이터
각 BLOB에 광범위한 커스텀 메타데이터를 연결할 수 있는 기능을 통해 데이터 조직을 개선하고, 검색을 더 쉽게 수행하며, 더 정교한 데이터 관리 및 분석 기능을 제공할 수 있습니다.
간소화된 데이터 액세스
표준 HTTP API를 통해 BLOB에 액세스하면 웹 애플리케이션, 모바일 앱, 기타 클라우드 서비스와의 통합을 간소화할 수 있습니다. 각 객체의 고유 식별자를 통해 복잡한 파일 경로를 탐색하지 않고도 직접 액세스할 수 있습니다.
분리
BLOB를 데이터베이스 또는 애플리케이션 서버 외부에 저장하면 기본 시스템의 성능과 확장성을 개선할 수 있습니다. 데이터베이스는 크고 다루기 힘든 데이터 유형을 관리할 필요가 없으며 애플리케이션은 정적 콘텐츠 전송을 오프로드할 수 있습니다.
BLOB를 호스팅하는 객체 스토리지 서비스는 액세스 빈도, 검색 시간, 비용에 따라 분류된 다양한 스토리지 클래스 또는 등급을 제공하는 경우가 많습니다. 이러한 등급은 조직이 데이터 사용 방식에 따라 스토리지 비용을 최적화하는 데 도움이 될 수 있습니다. 일반적인 유형은 다음과 같습니다.
지연 시간이 짧고 처리량이 높으며 액세스 빈도가 높은 데이터를 위해 설계되었습니다. 이 등급은 활성 웹사이트 콘텐츠, 모바일 애플리케이션 데이터 또는 분석 워크로드에서 활발하게 처리 중인 데이터에 적합할 수 있습니다. 일반적으로 스토리지 비용이 더 높지만 액세스 비용을 낮추는 데 도움이 될 수 있습니다.
액세스 빈도가 낮지만(예: 월 1회) 요청 시 즉시 사용할 수 있어야 하는 데이터에 적합합니다. 표준 스토리지보다 스토리지 비용이 저렴할 수 있지만 액세스 비용이나 검색당 수수료가 약간 더 높을 수 있습니다. 이러한 유형은 장기 백업, 가끔 빠른 액세스가 필요한 데이터 보관처리, 재해 복구 파일에 적합합니다.
데이터에 거의 액세스하지 않는(예: 연 1회 이하) 장기 데이터 보관처리, 규정 준수, 보존을 위해 빌드되었습니다. 이 등급은 스토리지 비용이 저렴합니다. 검색 시간이 몇 분에서 몇 시간까지 더 길어질 수 있으며 액세스 비용이 더 높을 수 있습니다. 이러한 유형은 규정 준수용 보관 파일이나 과거 기록 보존을 위해 보관해야 하지만 일상적인 운영에는 필요하지 않은 데이터에 적합합니다.
일부 제공업체는 액세스 빈도가 매우 낮고 검색 시간이 더 길어도 되는 데이터(예: 몇 시간)를 위한 콜드 등급도 제공합니다. 이러한 등급은 가장 낮은 스토리지 비용을 제공합니다.
다기능성과 확장성을 갖춘 BLOB 스토리지는 다양한 산업에 광범위하게 활용할 수 있습니다.
사용 사례 | 기능 |
멀티미디어 콘텐츠 전송 | 웹사이트, 스트리밍 서비스, 모바일 애플리케이션을 위한 이미지, 동영상, 오디오 파일 및 기타 리치 미디어를 저장하고 제공합니다. |
데이터 레이크 및 분석 | 다양한 소스의 방대한 양의 원시 데이터를 데이터 레이크하우스(정형, 반정형, 비정형)에 기본 형식으로 저장하여 빅데이터 처리, 머신러닝 모델 학습, 비즈니스 인텔리전스를 수행합니다. |
로그 파일 보관처리 | 문제 해결, 보안 분석, 규정 준수 목적으로 애플리케이션 서버 로그, 보안 로그, 감사 추적을 저장합니다. |
문서 관리 시스템 | 대량의 문서, PDF, 스캔된 이미지, 기타 비즈니스 기록을 저장하고 관리합니다. |
정적 웹사이트 호스팅 | 확장성이 뛰어나고 비용 효율적인 객체 스토리지에서 웹사이트의 정적 애셋(HTML, CSS, JavaScript, 이미지)을 직접 호스팅합니다. |
소프트웨어 배포 | 대규모 소프트웨어 패키지, 업데이트, 설치 프로그램을 저장하고 배포합니다. |
의료 서비스 데이터 관리 | 의료 영상(엑스레이, MRI), 환자 기록, 게놈 데이터를 안전하고 규정을 준수하는 방식으로 저장합니다. |
과학 연구 | 실험, 시뮬레이션, 센서 네트워크에서 수집한 대규모 데이터 세트를 분석 및 협업을 위해 저장합니다. |
사용 사례
기능
멀티미디어 콘텐츠 전송
웹사이트, 스트리밍 서비스, 모바일 애플리케이션을 위한 이미지, 동영상, 오디오 파일 및 기타 리치 미디어를 저장하고 제공합니다.
데이터 레이크 및 분석
다양한 소스의 방대한 양의 원시 데이터를 데이터 레이크하우스(정형, 반정형, 비정형)에 기본 형식으로 저장하여 빅데이터 처리, 머신러닝 모델 학습, 비즈니스 인텔리전스를 수행합니다.
로그 파일 보관처리
문제 해결, 보안 분석, 규정 준수 목적으로 애플리케이션 서버 로그, 보안 로그, 감사 추적을 저장합니다.
문서 관리 시스템
대량의 문서, PDF, 스캔된 이미지, 기타 비즈니스 기록을 저장하고 관리합니다.
정적 웹사이트 호스팅
확장성이 뛰어나고 비용 효율적인 객체 스토리지에서 웹사이트의 정적 애셋(HTML, CSS, JavaScript, 이미지)을 직접 호스팅합니다.
소프트웨어 배포
대규모 소프트웨어 패키지, 업데이트, 설치 프로그램을 저장하고 배포합니다.
의료 서비스 데이터 관리
의료 영상(엑스레이, MRI), 환자 기록, 게놈 데이터를 안전하고 규정을 준수하는 방식으로 저장합니다.
과학 연구
실험, 시뮬레이션, 센서 네트워크에서 수집한 대규모 데이터 세트를 분석 및 협업을 위해 저장합니다.
특히 민감한 정보나 미션 크리티컬 데이터를 다룰 때는 바이너리 대규모 객체를 보호하는 것이 중요합니다. 효과적인 보안 전략에는 일반적으로 여러 계층의 보안이 포함됩니다.
암호화
전송 중 암호화는 모든 API 요청에 HTTPS(TLS/SSL)를 사용합니다. 저장 시 암호화는 BLOB가 스토리지에서 암호화되도록 보장하며, 서버 측 암호화(공급업체 관리 키) 또는 고객 관리/제공 키(CMEK/CSEK) 옵션을 통해 제어 기능을 강화할 수 있습니다.
Identity and Access Management(IAM):
세분화된 액세스 제어 정책을 구현하여 특정 BLOB 또는 BLOB 모음(버킷 또는 컨테이너라고도 함)에 대해 어떤 사용자, 그룹 또는 서비스 계정이 어떤 작업(읽기, 쓰기, 삭제, 나열)을 수행할 수 있는지 정의합니다. 최소 권한의 원칙을 따르고 필요한 권한만 부여합니다.
액세스 제어 목록(ACL)
ACL은 또 다른 제어 레이어를 제공하여 개별 객체 또는 버킷에 대해 개별 사용자 또는 그룹에 특정 권한을 부여할 수 있도록 지원합니다. 확장된 관리보다는 세분화된 제어 요구사항에 더 적합하며, 구체적이고 상세한 권한 설정에 대한 세분화된 접근방식을 제공합니다.
서명된 URL/사전 서명된 URL
특정 BLOB에 대한 임시 제한된 액세스 권한을 부여해야 하는 시나리오(예: 사용자가 구매한 파일을 다운로드하도록 허용)의 경우 서명된 URL이 안전한 메커니즘입니다. 이러한 URL은 사용자에게 전체 사용자 인증 정보가 없어도 특정 작업을 수행할 수 있는 시간 제한 권한을 부여합니다.
버전 관리
객체 버전 관리를 사용 설정하여 여러 버전의 BLOB을 유지합니다. 필요한 경우 이전 버전을 복원할 수 있으므로 실수로 덮어쓰거나 삭제하는 것을 방지할 수 있습니다.
감사 로깅
감사 로깅을 사용 설정하여 BLOB 및 스토리지 버킷에 대한 액세스 요청과 수행된 작업을 추적합니다. 이는 보안 분석, 규정 준수 보고, 무단 액세스 시도 식별에 도움이 됩니다.