다음을 통해 공유


STAC(SpatioTemporal Asset Catalog)를 사용하여 우주 지리 공간적 데이터 구성

이 참조 아키텍처는 지리 공간적 데이터를 구조화하는 STAC(SpatioTemporal Asset Catalog) 만들기의 엔드투엔드 구현을 보여줍니다. 이 문서에서는 Azure의 지리 공간 라이브러리를 사용하는 공개 리소스인 NAIP(National Agriculture Imagery Program) 데이터 세트를 사용합니다. 위성 이미지 공급자, AOGS(Azure Orbital Ground Station) 또는 BYOD(Bring Your Own Data)와 같은 다른 소스에서 데이터 세트를 가져오도록 아키텍처를 조정할 수 있습니다.

구현은 STAC FastAPI를 통한 데이터 획득, 메타데이터 생성, 카탈로그화 및 데이터 검색의 네 단계로 구성됩니다. 이 문서에서는 새 데이터 원본 또는 Bring Your Own Data를 기반으로 STAC를 빌드하는 방법도 보여줍니다.

이 아키텍처의 구현은 GitHub에 있습니다.

이 문서는 우주 지리 공간적 데이터 작업에서 중간 수준의 기술을 가진 사용자를 위해 작성되었습니다. 일반적으로 사용되는 STAC 용어의 정의는 용어집의 표를 참조하세요. 자세한 내용을 보려면 공식 stacspec 페이지를 방문하세요.

시나리오 정보

우주 데이터 수집은 점점 더 일반화되고 있습니다. Imagery, SAR(Synthetic Aperture Radar), Point Clouds 등과 같은 다양한 시공 자산 데이터 공급자가 있습니다. 데이터 공급자는 사용자에게 시공 데이터에 대한 액세스를 제공하는 표준 방법을 갖고 있지 않습니다. 시공 데이터 사용자는 사용하려는 데이터 컬렉션마다 고유한 워크플로를 빌드해야 하는 부담스러운 경우가 많습니다. 개발자는 시공 데이터와 상호 작용하기 위해 새로운 도구와 라이브러리를 개발해야 합니다.

STAC 커뮤니티는 이러한 복잡성을 없애고 일반적인 도구 사용을 촉진하기 위한 사양을 정의했습니다. STAC 사양은 지리 공간적 정보를 설명하는 공용 언어이므로 보다 쉽게 작업하고, 인덱싱하고, 검색할 수 있습니다. 많은 제품이 STAC를 기반으로 빌드된 후 배포되었으며, 그 중 하나는 지속 가능성 연구를 위한 멀티 페타바이트의 글로벌 환경 데이터 STAC 카탈로그를 제공하는 Microsoft Planetary Computer입니다.

샘플 솔루션은 STAC FastAPI, pystac, Microsoft Planetary Computer API 및 개방형 표준 지리 공간적 라이브러리(구성 요소 섹션에 나열됨)와 같은 오픈 소스 도구를 사용하여 Azure에서 솔루션을 실행합니다.

잠재적인 사용 사례

STAC는 지리 공간적 데이터를 구조화하고 쿼리하는 방법을 지원하는 산업 표준이 되었습니다. 다양한 사용 사례의 여러 프로덕션 배포에서 사용되고 있습니다.

몇 가지 예는 다음과 같습니다.

  • 위성 데이터 공급자 회사는 데이터를 쉽게 검색하고 액세스할 수 있게 만들어야 합니다. 공급자는 STAC 카탈로그를 빌드하여 모든 기록 보관 데이터 세트와 들어오는 새로 고침 데이터를 매일 인덱싱합니다. 웹 클라이언트 UI는 사용자가 카탈로그를 찾아보고 AOI(관심 영역), 날짜/시간 범위 및 기타 매개 변수를 기준으로 원하는 이미지를 검색할 수 있는 STAC API를 기반으로 빌드됩니다.

  • 지리 공간적 데이터 분석 회사는 이미지, DEM(수치 표고 모델) 및 다양한 데이터 원본에서 획득한 3D 형식을 포함한 우주 데이터의 데이터베이스를 빌드해야 합니다. 데이터베이스는 GIS(지리 정보 시스템) 분석 솔루션을 사용하여 기계 학습 모델 기반 개체 감지 분석을 위해 다양한 데이터 세트를 집계합니다. 표준 데이터 액세스 레이어를 지원하기 위해 기업에서는 확장성 있고 성능이 뛰어난 방식으로 데이터베이스와 상호 작용할 수 있도록 GIS 분석 솔루션에 오픈 소스와 호환되는 STAC API 인터페이스를 구현하기로 결정합니다.

아키텍처

Diagram of STAC architecture.

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

STAC dataflow diagram.

이 데이터 흐름에 대한 Visio 파일을 다운로드합니다.

다음 섹션에서는 아키텍처의 네 단계를 설명합니다.

데이터 취득

메타데이터 생성

  • 데이터 공급자는 공급자, 사용 조건, 키워드 등을 설명하는 메타데이터를 정의합니다. 이 메타데이터는 STAC 컬렉션을 형성합니다.
  • 데이터 공급자는 지리 공간적 자산을 설명하는 메타데이터를 제공할 수 있습니다. 이 샘플에서는 NAIPFGDC에서 제공하는 메타데이터를 사용합니다. 표준 지리 공간적 라이브러리를 사용하여 자산에서 더 많은 메타데이터가 추출됩니다. 이 메타데이터는 STAC 항목을 형성합니다.
  • 이 STAC 컬렉션 및 항목은 사용자가 STAC API를 사용하여 시공 자산을 검색하는 데 도움이 되는 STAC 카탈로그를 만드는 데 사용됩니다.

카탈로그화

  • STAC 카탈로그

    • STAC 카탈로그는 다른 카탈로그, 컬렉션 및 항목 개체를 논리적으로 그룹화하는 최상위 개체입니다. 이 솔루션을 배포할 때, 컬렉션과 항목이 그 아래에 정리되는 STAC 카탈로그를 만듭니다.
  • STAC 컬렉션

    • 데이터 공급자가 제공하는 관련 STAC 항목 그룹입니다.
    • 자산을 검색하는 검색 쿼리는 STAC 컬렉션 수준에서 범위가 지정됩니다.
    • 데이터 공급자(여기서는 NAIP)에 대해 생성되며 이 JSON 메타데이터는 Azure Storage 컨테이너에 업로드됩니다.
    • STAC 컬렉션 메타데이터 파일의 업로드는 Azure Service Bus에 메시지를 트리거합니다.
    • 프로세서는 Azure Kubernetes 클러스터에서 이 메타데이터를 처리하고 STAC 카탈로그 데이터베이스(PostgreSQL 데이터베이스)로 수집합니다. 데이터 공급자마다 프로세서가 서로 다르며 각 프로세서는 해당 Service Bus 토픽을 구독합니다.
  • STAC 항목 및 자산

    • 카탈로그화할 자산(GeoTiff, 클라우드 최적화 GeoTiff 등과 같은 형식의 래스터 데이터). 자산 및 자산에서 추출된 메타데이터를 설명하는 메타데이터는 적절한 스토리지 컨테이너 아래의 Storage 계정에 업로드됩니다.
    • 해당 메타데이터가 성공적으로 업로드되면 자산(GeoTiff)이 적절한 스토리지 컨테이너 아래의 스토리지 계정에 업로드됩니다.
    • Storage 계정에 업로드된 각 자산과 관련 메타데이터는 Service Bus에 메시지를 트리거합니다. 이 메타데이터는 카탈로그 데이터베이스의 STAC 항목을 형성합니다.
    • 프로세서는 Azure Kubernetes 클러스터에서 이 메타데이터를 처리하고 STAC 카탈로그 데이터베이스(PostgreSQL 데이터베이스)로 수집합니다.

데이터 검색

  • STAC API는 오픈 소스 STAC FastAPI를 기반으로 합니다.
  • STAC API 레이어는 Azure Kubernetes Service 위에 구현되며 API는 API Management Service를 사용하여 노출됩니다.
  • STAC API는 카탈로그에서 지리 공간적 데이터를 검색하는 데 사용됩니다. 이러한 API는 STAC 사양을 기반으로 하며 STAC 카탈로그 데이터베이스(PostgreSQL 서버)에 정의되고 인덱싱된 STAC 메타데이터를 이해합니다.
  • 검색 조건에 따라 큰 데이터 세트에서 데이터를 빠르게 찾을 수 있습니다.
    • STAC 컬렉션, 항목 및 자산 쿼리:
      • 사용자가 STAC FastAPI를 통해 하나 이상의 STAC 컬렉션 항목 및 자산을 조회하기 위해 쿼리를 제출합니다.
      • STAC FastAPI는 PostgreSQL 데이터베이스의 데이터를 쿼리하여 STAC 컬렉션, 항목 및 자산에 대한 참조를 검색합니다.
      • 결과는 STAC FastAPI를 통해 사용자에게 반환됩니다.

구성 요소

이 아키텍처에서는 다음과 같은 Azure 서비스가 사용됩니다.

  • Key Vault는 토큰, 암호, API 키와 같은 비밀을 저장하고 이러한 비밀에 대한 액세스를 제어합니다. 또한 Key Vault는 암호화 키를 만들고 제어하며 보안 인증서를 관리합니다.
  • Service Bus는 더 폭넓은 Azure 메시징 인프라의 일부이며, 큐뿐 아니라 게시/구독과 여러 고급 통합 패턴도 지원합니다.
  • Azure Data Lake Storage는 빅 데이터 분석 전용이며 Azure Blob Storage를 기반으로 합니다.
  • Azure Virtual Network를 통해 Azure 리소스가 상호 간, 인터넷 및 온-프레미스 네트워크와 안전하게 통신할 수 있습니다.
  • Azure Database for PostgreSQL 유연한 서버는 데이터베이스 관리 기능 및 구성 설정에 대한 보다 세부적인 제어와 유연성을 제공하도록 설계된 완전 관리형 데이터베이스 서비스입니다. 영역 복원력 있는 HA(고가용성), 예측 가능한 성능, 최대 제어, 사용자 지정 유지 관리 기간, 비용 최적화 제어, 엔터프라이즈 워크로드에 적합한 간소화된 개발자 환경과 같은 다양한 기능을 갖추고 있습니다.
  • API Management Services는 API를 보호, 게시 및 분석하기 위한 확장성 있는 다중 클라우드 API 관리 플랫폼을 제공합니다.
  • Azure Kubernetes Services는 기본 제공 코드-클라우드 파이프라인 및 가드레일을 사용하여 클라우드 네이티브 앱의 개발 및 배포를 시작하는 가장 빠른 방법을 제공합니다.
  • Container Registry는 컨테이너 이미지 및 관련 아티팩트를 저장하고 관리합니다.
  • VM(가상 머신)은 다양한 컴퓨팅 솔루션을 유연하게 가상화할 수 있습니다. 완전 보안 배포에서 사용자는 Azure Bastion을 통해 VM에 연결하여(다음 항목에서 설명) 스토리지 계정에 파일 복사, Azure CLI 명령 실행, 다른 서비스와 상호 작용 등의 다양한 작업을 수행합니다.
  • Azure Bastion을 사용하면 VM에서 공용 IP를 사용할 필요 없이 Azure Portal에서 직접 Azure 가상 네트워크의 VM에 안전하고 원활하게 RDP 및 SSH를 설정할 수 있으며, 다른 클라이언트/에이전트 또는 어떠한 소프트웨어도 필요하지 않습니다.
  • Application Insights는 라이브 웹앱에 대한 확장 가능한 애플리케이션 성능 관리 및 모니터링을 제공합니다.
  • Log Analytics는 Azure Monitor 로그에서 수집된 데이터에서 로그 쿼리를 편집 및 실행하고 그 결과를 대화형으로 분석하는 도구입니다.

다음과 같은 지리 공간적 라이브러리도 사용됩니다.

  • GDAL은 우주 데이터를 조작하는 도구 라이브러리입니다. GDAL은 래스터 및 벡터 데이터 형식에서 작동합니다. 우주 데이터로 작업하고 있는지 알 수 있는 좋은 도구입니다.
  • Rasterio는 래스터 처리를 위한 모듈입니다. Python에서 여러 가지 래스터 형식을 읽고 쓰는 데 사용할 수 있습니다. Rasterio는 GDAL 기반입니다. Rasterio를 가져오면 Python은 지원되는 형식을 읽기 위해 알려진 모든 GDAL 드라이버를 자동으로 등록합니다.
  • Shapely는 평면 기능의 집합론 분석 및 조작을 위한 Python 패키지입니다. 널리 배포된 GEOS 라이브러리의 함수를 사용(Python의 ctypes 모듈을 통해)합니다.
  • pyproj는 카토그래픽 변환을 수행합니다. PROJ를 사용하여 경도 및 위도에서 네이티브 맵 프로젝션 x, y 좌표로 그리고 그 반대로 변환합니다.

고려 사항

  • 샘플 솔루션은 모든 지리 공간적 데이터 컬렉션과 상호 작용하는 데 필요한 STAC의 핵심 JSON 지원을 보여줍니다. STAC는 메타데이터 필드, 명명 규칙, 쿼리 언어 및 카탈로그 구조를 표준화하지만, 사용자는 자신의 자산과 관련된 메타데이터 필드를 지원하도록 STAC 확장을 추가로 고려해야 합니다.

  • 샘플 구현에서 메타데이터를 추출하기 위해 자산을 처리하는 구성 요소에는 복제본 수가 설정되어 있습니다. 이 구성 요소를 스케일링하면 자산을 더 빠르게 처리할 수 있습니다. 그러나 스케일링은 동적으로 수행되지 않습니다. 대량의 자산을 카탈로그화해야 하는 경우 이러한 복제본을 스케일링하는 것이 좋습니다.

새 데이터 원본 추가

더 많은 데이터 원본을 카탈로그화하거나 사용자 고유의 데이터 원본을 카탈로그화하려면 다음 옵션을 고려해 봅니다.

  • 데이터 원본의 STAC 컬렉션을 정의합니다. 검색 쿼리는 STAC 컬렉션 수준에서 범위가 지정됩니다. 사용자가 컬렉션에서 STAC 항목 및 자산을 검색하는 방법을 고려합니다.
  • STAC 항목 메타데이터를 생성합니다. 표준 도구 및 라이브러리를 사용하여 지리 공간적 자산에서 더 많은 메타데이터를 파생시킬 수 있습니다. STAC 항목을 풍부하게 만들고 API를 사용하여 데이터를 더 쉽게 검색할 수 있게 만드는 데 유용한 자산에 대한 추가 메타데이터를 캡처하는 프로세스를 정의하고 구현합니다.
  • 이 메타데이터(STAC 컬렉션 및 STAC 항목 형식)를 데이터 원본에 사용할 수 있게 되면 이 샘플 솔루션을 사용하여 동일한 흐름에 따라 STAC 카탈로그를 빌드할 수 있습니다. 카탈로그화된 데이터는 표준 STAC API를 사용하여 쿼리할 수 있습니다.
  • 이 아키텍처의 프로세서 구성 요소는 Azure Kubernetes 클러스터에서 컨테이너로 개발하고 실행할 수 있는 사용자 지정 코드를 포함하도록 확장할 수 있습니다. 자산으로 카탈로그화할 지리 공간적 데이터를 다양하게 표현하는 방법을 제공하기 위한 것입니다.

보안

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

  • Azure Kubernetes Service 컨테이너 보안을 구현하면 컨테이너가 안전하게 보호되는 상태로 프로세서가 빌드되고 실행됩니다.
  • API Management Service 보안 기준은 Azure에서 클라우드 솔루션을 보호하는 방법에 대한 권장 사항을 제공합니다.
  • Azure Database for PostgreSQL 보안에서는 미사용 데이터 및 전송 중인 데이터를 포함하여 데이터가 PostgreSQL 유연한 서버에 저장되는 경우의 여러 레이어 보안에 대해 심층적으로 다룹니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

이 솔루션은 학습 및 개발을 위한 것이므로 Azure 리소스에 최소한의 구성을 사용했습니다. 이 최소 구성은 샘플 데이터 세트에서 샘플 솔루션을 실행합니다.

사용자는 자신의 워크로드 및 스케일링 요구 사항에 맞게 구성을 조정할 수 있습니다. 예를 들어 AKS 클러스터에서 표준 HDD를 프리미엄 SSD와 교환하거나 API Management Services를 프리미엄 SKU로 스케일링할 수 있습니다.

성능 효율성

성능 효율성은 사용자가 배치된 요구 사항을 효율적인 방식으로 충족하기 위해 워크로드의 크기를 조정할 수 있는 기능입니다. 자세한 내용은 성능 효율성 핵심 요소 개요를 참조하세요. 또한 다음 지침은 성능 효율성을 극대화하는 데 도움이 될 수 있습니다.

시나리오 배포

구독에 배포할 수 있는 샘플 솔루션을 빌드했습니다. 이 솔루션을 사용하면 STAC 메타데이터부터 수집을 지나 표준 STAC API를 사용한 자산 검색까지 이어지는 전체 데이터 흐름의 유효성을 검사할 수 있습니다. 배포 지침 및 유효성 검사 단계는 추가 정보 파일에 설명되어 있습니다.

크게 보면, 이 배포에서 다음 작업이 수행됩니다.

  • Azure Kubernetes Services, Azure PostgreSQL Server, Azure Key Vault, Azure Storage 계정, Azure Service Bus 등과 같은 다양한 인프라 구성 요소를 프라이빗 네트워크에 배포합니다.

  • Azure API Management 서비스를 배포하고 STAC FastAPI에 대한 엔드포인트를 게시합니다.

  • 코드와 해당 종속성을 패키징하고, Docker 컨테이너 이미지를 빌드하고, Azure Container Registry에 푸시합니다.

    Diagram of STAC deployment services.

이 구현을 위한 Visio 파일을 다운로드합니다.

다음 단계

이 빌드를 시작할 수 있도록, 위에서 간략하게 설명한 샘플 솔루션을 구성해 두었습니다. 다음은 STAC 및 모델 구현을 시작하는 데 유용한 링크입니다.

용어 설명

STAC 용어 정의
자산 특정 공간 및 시간에 캡처된 우주 데이터를 나타내는 파일입니다.
STAC 사양 쉽게 인덱싱하고 검색할 수 있도록 지리 공간적 데이터를 설명할 수 있습니다.
STAC 항목 단일 시공 자산을 GeoJSON 형상으로 나타내고 날짜/시간 및 참조 링크와 같은 메타데이터를 나타내는 핵심 원자 단위입니다.
STAC 카탈로그 구조를 제공하고 STAC 항목, 컬렉션 및 기타 카탈로그와 같은 메타데이터를 구성하는 간단하고 유연한 JSON입니다.
STAC 컬렉션 컬렉션 내의 STAC 항목을 설명하는 익스텐트, 라이선스, 키워드, 공급자 등과 같은 추가 정보를 제공합니다.
STAC API OpenAPI에 지정된 STAC 항목을 검색할 수 있는 RESTful 엔드포인트를 제공합니다.