스토리지 조직 전략 설계

완료됨

데이터를 저장해야 하는 앱을 디자인할 때는 앱이 스토리지 계정, 컨테이너, Blob에서 데이터를 어떻게 구성하게 될지 고려해야 합니다.

스토리지 계정

단일 스토리지 계정은 Blob을 구성할 수 있을 만큼 유연합니다. 그러나 필요에 따라 추가 스토리지 계정을 추가하여 논리적으로 비용을 분리하고 데이터에 대한 액세스를 제어해야 합니다.

컨테이너 및 Blob

앱과 앱이 저장하는 데이터의 특성에 따라 컨테이너 및 Blob의 이름을 지정하고 구성하는 전략을 결정해야 합니다.

데이터베이스를 포함하는 스토리지 체계의 일부로 Blob을 사용하는 앱은 데이터에 대한 정보를 표시하는 데 주로 구성, 이름 지정 또는 메타데이터를 사용할 필요가 없습니다. 일반적으로 이러한 앱은 GUID 같은 식별자를 Blob 이름으로 사용하고 데이터베이스 레코드에서 이러한 식별자를 참조합니다. 앱은 데이터베이스를 사용하여 Blob이 저장되는 위치 및 Blob에 포함하는 데이터 종류를 결정합니다.

다른 앱은 Azure Blob Storage를 개인 파일 시스템처럼 사용합니다. 컨테이너 및 Blob 이름은 의미와 구조를 나타냅니다. 이러한 종류의 앱에 있는 Blob 이름은 일반적인 파일 이름과 유사한 경우가 많습니다. .jpg와 같은 파일 이름 확장명을 사용하여 포함된 데이터 형식을 나타낼 수 있습니다. 이러한 앱은 가상 디렉터리를 사용하여 Blob을 구성합니다. 또한 메타데이터 태그를 사용하여 Blob 및 컨테이너에 대한 정보를 저장하는 경우가 많습니다.

Blob 및 컨테이너를 구성하고 저장하는 방법을 결정할 때 고려해야 하는 몇 가지 주요 사항이 있습니다.

이름 지정 제한 사항

컨테이너 및 Blob 이름은 길이 제한 및 문자 제한을 포함한 규칙 집합을 따라야 합니다. 명명 규칙에 대한 자세한 내용은 이 모듈의 끝부분에 있는 추가 참고 자료 섹션을 참조하세요.

보안 경계인 공용 액세스 및 컨테이너

기본적으로 모든 Blob에 액세스하려면 인증이 필요합니다. 그러나 인증 없이 Blob의 퍼블릭 다운로드를 허용하도록 개별 컨테이너를 구성할 수 있습니다. 퍼블릭 다운로드는 정적 웹 사이트 자산 호스트, 파일 공유와 같은 많은 사용 사례를 지원합니다. 이 방식은 Blob 콘텐츠 다운로드가 웹을 통해 다른 데이터를 읽는 것과 동일한 방식으로 작동하기 때문에 효과가 있습니다. Blob URL에서 GET 요청을 수행할 수 있는 브라우저 등을 가리키기만 하면 됩니다.

확장성을 위해서는 공용 액세스를 활성화하는 것이 중요합니다. Blob Storage에서 직접 다운로드한 데이터는 서버 쪽 앱에서 트래픽을 생성하지 않습니다. 공용 액세스를 즉시 허용하지 않거나 데이터베이스를 사용하여 데이터 액세스를 제어하지 않더라도 공개적으로 사용 가능하게 하려는 데이터에 별도의 컨테이너를 사용하도록 계획하세요.

주의

스토리지 URL을 알고 있는 모든 사용자는 어떠한 형태의 인증 또는 감사도 없이 공용 액세스용으로 구성된 컨테이너의 Blob을 다운로드할 수 있습니다. 공개적으로 공유하지 않을 공용 컨테이너에 Blob 데이터를 넣지 마세요.

공용 액세스 외에도 Azure에는 컨테이너에 대한 세분화된 권한 제어를 허용하는 공유 액세스 서명 기능이 있습니다. 정밀 액세스 제어를 사용하면 스케일링 성능을 더 개선하는 시나리오를 구현할 수 있으므로 컨테이너를 보안 경계로 생각하는 것이 도움이 됩니다.

Blob 이름 접두사(가상 디렉터리)

컨테이너는 플랫 형태입니다. 어떠한 종류의 중첩 또는 계층 구조도 지원하지 않습니다. 파일 경로처럼 보이는 Blob 계층 구조 이름(예: finance/budgets/2017/q1.xls)을 제공할 경우 API의 목록 작업은 특정 접두사에 대한 결과를 필터링할 수 있습니다. 이 방식을 통해 파일 및 폴더의 계층 구조 시스템인 것처럼 목록을 탐색할 수 있습니다.

일부 도구 및 클라이언트 라이브러리는 이 방식을 사용하여 파일 시스템인 것처럼 Blob Storage를 시각화하고 탐색합니다. 각 폴더 탐색은 해당 폴더의 Blob을 나열하기 위한 별도의 호출을 트리거합니다. 이 기능을 가상 디렉터리라고도 합니다.

참고 항목

계정의 계층 구조 네임스페이스 기능을 활성화하면 디렉터리는 더 이상 가상이 아닙니다. 대신 직접 작업할 수 있는 구체적이면서 독립적인 개체가 됩니다. 디렉터리는 파일을 포함하지 않고 존재할 수 있습니다. 이 모듈에서는 계층 구조 네임스페이스 기능을 활성화하지 않은 계정만 설명합니다.

Blob 형식

다음과 같이 데이터를 저장할 수 있는 세 종류의 Blob이 있습니다.

  • 블록 Blob은 개별적으로 또는 동시에 업로드될 수 있는 서로 다른 크기의 블록으로 구성됩니다. 블록 Blob에 쓰기에는 데이터를 블록에 업로드하고 블록을 Blob에 커밋하는 작업이 포함됩니다.
  • 추가 Blob은 기존 데이터의 업데이트 또는 삭제가 아닌 새 데이터의 추가만 지원하는 특수 블록 Blob입니다. 이러한 용도에 효율적입니다. 추가 Blob은 로그 저장 또는 스트리밍된 데이터 쓰기와 같은 시나리오에 적합합니다.
  • 페이지 Blob은 임의 액세스 읽기 및 쓰기를 포함하는 시나리오를 지원합니다. 페이지 Blob은 Azure Virtual Machines에서 사용하는 VHD(가상 하드 디스크) 파일을 저장하는 데 사용됩니다. 임의 액세스가 포함된 모든 시나리오에 적합합니다.

블록 Blob은 특별히 추가 또는 페이지 Blob에 대한 호출을 수행하지 않는 대부분의 시나리오에 가장 적합한 선택입니다. 해당 블록 기반 구조는 빠른 업로드 및 다운로드를 지원하며, 개별 Blob 부분에 효율적으로 액세스할 수 있도록 합니다. 대부분의 클라이언트 라이브러리는 블록을 자동으로 관리하고 커밋합니다. 또한 일부는 병렬 업로드 및 다운로드를 처리하여 성능을 최대화합니다.

지식 점검

1.

고객에 대한 프로필 및 주문 정보를 저장해야 한다고 가정하겠습니다. “내 상위 100명의 고객은 누구인가?” 및 “해당 지역에 얼마나 많은 고객이 살고 있는가?”와 같은 질문에 답변하기 위해 데이터를 쿼리해야 합니다. True 또는 False: Blob 스토리지는 이 데이터에 적합한 선택인가요?

2.

Blob은 비구조적 데이터 스토리지를 제공합니다. 비구조적은 무엇을 의미하나요?