콘텐츠로 이동하기
데이터 분석

Cloud Functions를 사용해 BigQuery에서 Earth Engine으로 이어지는 자동화된 데이터 파이프라인 구축하기

2022년 12월 2일
Grace Coleman

Cloud Geographer

* 본 아티클의 원문은 2022년 10월 5일 Google Cloud 블로그(영문)에 게재되었습니다.


여러 해 동안 방대한 양의 위성 데이터가 수집되었으며, 그 어느 때보다 많은 양의 세분화된 데이터가 날마다 수집되고 있습니다. 불과 얼마 전까지만해도 상업 부문에서는 이러한 데이터를 활용하지 못했습니다. 이 같은 유형의 데이터를 대규모로 분석하는 데 필요한 도구와 위성 이미지 자체를 즉시 사용할 수 없었던 것이 주된 이유입니다. 지구 과학 데이터 및 분석을 위한 전 지구적 규모의 Earth Engine은 이러한 문제를 해결할 수 있는 플랫폼입니다. 

최근 Google Cloud Platform(GCP) 제품의 정식 버전으로 출시된 이 플랫폼을 사용하면 업종을 불문하고 상업적 사용자들이 원격 감지 데이터로 작업을 수행할 수 있습니다. 지속 가능한 소싱, 기후 위기 감지, 지속 가능한 농업, 천연 자원 관리 등의 분야에서 이미 Earth Engine 사용 사례를 찾아볼 수 있습니다. Earth Engine으로 각 사용 사례에 대한 공간 중심의 솔루션을 개발하면 비즈니스 운영 개선에 유용한 특별한 정보를 얻을 수 있습니다. 해당 솔루션을 자동화하면 유용한 정보를 보다 빠르게 도출하고, 작업 부담을 덜어내고, 오류를 줄이는 데 도움이 됩니다. 

이 게시물에서 다루는 자동화된 데이터 파이프라인은 데이터를 BigQuery에서 Earth Engine으로 전달하며, 가상의 소비재 회사인 Cymbal에 대한 지속 가능한 소싱 사용 사례를 통해 설명합니다. 이 사용 사례에는 두 가지 유형의 데이터가 필요합니다. 첫 번째 유형은 Cymbal에서 이미 보유한 데이터이고, 두 번째 유형은 Earth Engine과 Earth Engine Data Catalog에서 제공되는 데이터입니다. 이 예시에서 Cymbal이 보유한 데이터는 BigQuery에서 출발해 자동화된 프로세스를 통해 데이터 파이프라인을 따라 Earth Engine으로 전달됩니다.

이와 같은 데이터의 조합을 마치 케이크를 한 층씩 쌓는 레이어링 프로세스로 이해하면 쉽습니다. 이제 이 사용 사례와 관련된 레이어에 대해 살펴보겠습니다. 기본 레이어는 Earth Engine이 제공하는 위성 이미지나 래스터 데이터입니다. 두 번째 레이어는 Cymbal이 제공한 야자수 농장의 위치 정보로, 아래 이미지에서 검은색으로 표시됩니다. 세 번째이자 마지막 레이어는 데이터 카탈로그에서 가져온 나무 분포 데이터로, 아래 이미지에서 분홍색으로 표시됩니다. 케이크의 여러 층처럼 여러 데이터 레이어가 쌓여 최종 제품이 만들어집니다. 데이터 레이어의 집계를 자동화하는 것이 이 아키텍처의 목표입니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/blog_img_2.max-1000x1000.jpg

이와 같은 아키텍처가 적용될 수 있는 또 다른 사용 사례의 예시로 메탄 가스 배출 감지 사용 사례를 들 수 있습니다. 이 사례에서도 첫 번째 레이어는 동일합니다. 두 번째 레이어는 회사나 조직에서 제공하는 시설 위치 세부정보(예: 이름, 시설 유형)입니다. 데이터 카탈로그에서 가져온 메탄 가스 배출 데이터가 세 번째 레이어가 됩니다. 메탄 가스 감지 및 지속 가능한 공급망과 마찬가지로 대부분의 사용 사례에는 회사나 조직에서 수집한 테이블 형식의 데이터가 포함됩니다. 데이터가 테이블 형식이기 때문에 자연스럽게 BigQuery가 출발점이 됩니다. 테이블 형식 데이터와 래스터 데이터의 비교, BigQuery와 Earth Engine을 사용해야 하는 경우에 대한 비교를 자세히 살펴보려면 이 게시물을 참조하세요.

지금까지 자동화된 파이프라인에서 Earth Engine과 BigQuery를 함께 사용할 때의 잠재적인 가치에 대해 알아보았으니 이제 아키텍처를 살펴보겠습니다. 다음 섹션에서는 Cloud Functions를 사용해 분석 목적으로 BigQuery와 같은 GCP 제품에서 Earth Engine으로 데이터 흐름을 자동화하는 방법을 알아봅니다. Earth Engine에서 BigQuery로 데이터를 이동하는 방법이 궁금하다면 이 게시물에서 관련 내용을 읽어보세요.

아키텍처 살펴보기

Cymbal은 주로 인도네시아에 위치한 팜유 공급망을 보다 명확하게 파악하고자 합니다. 구체적인 목표는 삼림 벌채 가능성이 있는 지역을 파악하는 것입니다. 이 섹션에서는 Cymbal이 부지의 상황에 대한 정보를 파악할 수 있도록 Cymbal에서 이미 보유하고 있는 야자수 농장 위치 데이터를 Earth Engine으로 전송하여 위성 이미지에 농장이 있는 지역을 매핑하는 방법에 대해 알아봅니다. 모든 요소가 어떻게 조합되는지 자세히 이해할 수 있도록 아키텍처를 단계별로 살펴보겠습니다. 이 아키텍처의 코드를 보면서 진행하려면 여기를 참조하세요.

아키텍처

https://storage.googleapis.com/gweb-cloudblog-publish/images/blog_img_1.max-2000x2000.jpg

단계별 안내

1. BigQuery로 지리정보 데이터 가져오기

Cymbal의 지리정보 데이터 과학자는 Cymbal이 보유한 야자수 농장의 위치 데이터와 이 데이터가 BigQuery에 전달되는 방식을 관리하는 역할을 맡고 있습니다.

2. Cloud Scheduler 태스크가 Pub/Sub 주제로 메시지 전송

Cloud Scheduler 태스크는 파이프라인을 시작하는 역할을 수행합니다. Cloud Scheduler 태스크는 크론 태스크이며 워크플로에 맞는 빈도로 예약할 수 있습니다. 태스크가 실행되면 Pub/Sub 주제로 메시지를 전송합니다.

3. Pub/Sub 주제에서 메시지를 수신하고 Cloud 함수 트리거

4. 첫 번째 Cloud 함수가 데이터를 BigQuery에서 Cloud Storage로 전송

Earth Engine 애셋을 만드는 데 사용할 수 있도록 데이터를 Cloud Storage로 이전해야 합니다. 

5. 데이터가 Cloud Storage 버킷에 도착하고 두 번째 Cloud 함수 트리거

6. 두 번째 Cloud 함수가 Earth Engine API를 호출하고 Earth Engine에 애셋 생성

Cloud 함수는 Earth Engine을 인증하면서 시작됩니다. 그런 다음 Cloud Storage에 있는 지리정보 데이터에서 Earth Engine 애셋을 생성하는 API를 호출합니다.

7. Earth Engine에 애셋이 생성되면 Earth Engine 앱(EE 앱)이 업데이트됨

대체로 EE 앱은 영향력이 큰 측정항목에 주로 관심을 갖는 Cymbal의 의사 결정권자들이 사용합니다. 대시보드 형식의 이 앱을 사용하면 복잡한 코드를 살펴보지 않고도 측정항목과 시각화된 정보를 파악할 수 있습니다.

8. EE 앱에서 액세스 가능한 고급 분석 스크립트가 생성됨

Earth Engine 코드 편집기에 고급 분석을 위한 환경이 생성되며 EE 앱을 통해 Cymbal의 기술 관련 사용자들에게 제공됩니다. 이 환경은 기술 관련 사용자들에게 삼림 벌채 가능성이 있는 지역에 대한 의사 결정권자들의 질문을 자세히 분석할 수 있는 공간을 제공합니다.

9. Earth Engine의 분석 결과를 Cloud Storage로 다시 내보내기 가능

고급 분석 환경에서 자세한 분석을 마친 기술 관련 사용자는 태스크를 실행하고 분석 결과를 Cloud Storage로 내보내기할 것인지 선택할 수 있습니다. 이후 사용자는 적절하다고 판단되는 방식으로 워크플로를 이어갈 수 있습니다.

Cymbal은 이와 같은 대략적인 아홉 단계를 통해 솔루션을 제공하는 자동화된 워크플로를 마련하여 팜유 공급망을 자세히 파악할 수 있습니다. 이 솔루션은 전사적인 목표를 달성하는 데 도움이 될 뿐만 아니라 다양한 Cymbal 사용자의 니즈도 고려합니다.

요약

지금까지 Cloud Functions를 사용해 BigQuery에서 Earth Engine으로 이어지는 자동화된 데이터 파이프라인의 아키텍처를 살펴봤습니다. 이 아키텍처를 파악하고 모든 요소가 어떻게 조합되는지 자세히 이해하는 가장 좋은 방법은 자체 환경에서 아키텍처를 직접 빌드해보는 것입니다. GitHub에서 제공되는 Terraform 스크립트를 사용하면 아키텍처를 더욱 쉽게 빌드할 수 있습니다. 아키텍처를 빌드한 다음에는 파이프라인의 여러 요소를 교체하여 자체 운영 환경에 보다 적절하도록 조정해 보세요. 아이디어를 얻고 싶거나 다른 예시가 궁금하다면 Earth Engine에서 BigQuery로의 데이터 이전을 다룬 이 게시물을 살펴보세요. 이 게시물에서는 GEE 카탈로그 내의 Landsat 위성 이미지에서 기온 및 식생 데이터를 가져오는 Cloud 함수를 만드는 작업을 BigQuery에서 SQL로 수행하는 방법을 안내합니다. 읽어 주셔서 감사합니다.

게시 위치