실습 설정 안내 및 요구사항
계정과 진행 상황을 보호하세요. 이 실습을 실행하려면 항상 시크릿 브라우저 창과 실습 사용자 인증 정보를 사용하세요.

Dataflow를 사용한 서버리스 데이터 처리 - 커스텀 Dataflow Flex 템플릿(Java)

실습 2시간 universal_currency_alt 크레딧 5개 show_chart 고급
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
이 콘텐츠는 아직 휴대기기에 최적화되지 않음
최상의 경험을 위해 데스크톱 컴퓨터에서 이메일로 전송된 링크를 사용하여 방문하세요.

개요

명령줄 파라미터를 지원하는 파이프라인은 파라미터가 하드 코딩된 파이프라인보다 훨씬 활용도가 높습니다. 다만 이 파이프라인을 실행하려면 개발 환경을 먼저 구성해야 합니다. 여러 사용자나 다양한 환경에서 반복 실행할 것으로 예상되는 파이프라인의 경우 Dataflow 템플릿을 사용하는 것이 훨씬 더 적합합니다.

Google Cloud Platform에는 이미 다양한 Dataflow 템플릿이 제공되고 있으며, Google 문서 시작하기에서 살펴볼 수 있습니다. 하지만 이 실습의 파이프라인과 동일한 기능을 제공하지는 않습니다. 대신 이 실습에서는 파이프라인을 기존 커스텀 템플릿이 아닌 최신 커스텀 Dataflow Flex 템플릿으로 변환합니다.

파이프라인을 커스텀 Dataflow Flex 템플릿으로 변환하려면 코드와 종속 항목을 패키징하는 Uber JAR, 빌드할 코드를 설명하는 Dockerfile, 런타임에 실행되어 실제 작업을 생성하는 기본 컨테이너를 빌드하는 Cloud Build, 작업 파라미터를 설명하는 메타데이터 파일을 사용해야 합니다.

기본 요건

Java에 대한 기본 지식

학습 내용

이 실습에서 학습할 내용은 다음과 같습니다.

  • 커스텀 파이프라인을 커스텀 Dataflow Flex 템플릿으로 변환합니다.
  • Dataflow Flex 템플릿을 실행합니다.

설정 및 요건

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Google Skills에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다. 일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다. 다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.

Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

    강조 표시된 Cloud Shell 아이콘

  2. 계속을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

Cloud Shell 터미널에 강조 표시된 프로젝트 ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  • 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list

출력:

Credentialed accounts: - @.com (active)

출력 예시:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project

출력:

[core] project =

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.

프로젝트 권한 확인

Google Cloud에서 작업을 시작하기 전에 프로젝트가 Identity and Access Management(IAM) 내에서 올바른 권한을 보유하고 있는지 확인해야 합니다.

  1. Google Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 IAM 및 관리자 > IAM을 선택합니다.

  2. 기본 컴퓨팅 서비스 계정 {project-number}-compute@developer.gserviceaccount.com이 있고 editor 역할이 할당되어 있는지 확인하세요. 계정 프리픽스는 프로젝트 번호이며, 이 번호는 탐색 메뉴 > Cloud 개요 > 대시보드에서 확인할 수 있습니다.

Compute Engine 기본 서비스 계정 이름과 편집자 상태가 강조 표시된 권한 탭 페이지

참고: 계정이 IAM에 없거나 editor 역할이 없는 경우 다음 단계에 따라 필요한 역할을 할당합니다.
  1. Google Cloud 콘솔의 탐색 메뉴에서 Cloud 개요 > 대시보드를 클릭합니다.
  2. 프로젝트 번호(예: 729328892908)를 복사합니다.
  3. 탐색 메뉴에서 IAM 및 관리자 > IAM을 선택합니다.
  4. 역할 테이블 상단에서 주 구성원별로 보기 아래에 있는 액세스 권한 부여를 클릭합니다.
  5. 새 주 구성원 필드에 다음을 입력합니다.
{project-number}-compute@developer.gserviceaccount.com
  1. {project-number}는 프로젝트 번호로 바꿉니다.
  2. 역할 필드에서 프로젝트(또는 기본) > 편집자를 선택합니다.
  3. 저장을 클릭합니다.

IDE 설정

이 실습에서는 Google Compute Engine에서 호스팅되는 Theia Web IDE를 주로 사용합니다. 실습 저장소가 사전에 클론되어 있습니다. Java 언어 서버가 지원되며, Cloud Shell처럼 gcloud 명령줄 도구를 통해 Google Cloud API에 프로그래매틱 방식으로 액세스할 수 있는 터미널도 제공됩니다.

  1. Theia IDE에 액세스하려면 Google Skills에 표시된 링크를 복사하여 새 탭에 붙여넣습니다.
참고: 환경이 완전히 프로비저닝되려면 URL이 표시된 후에도 3~5분 정도 기다려야 할 수 있습니다. 환경이 완전히 프로비저닝되지 않으면 브라우저에 오류가 표시됩니다.

ide_url이 표시된 사용자 인증 정보 창

실습 저장소가 환경에 클론되었습니다. 각 실습은 사용자가 완성해야 하는 코드가 포함된 labs 폴더와, 문제 발생 시 참고할 수 있는 정상 작동 예시가 포함된 solution 폴더로 구분되어 있습니다.

  1. File Explorer 버튼을 클릭하여 다음을 확인합니다.

실습 폴더가 강조 표시된 확장된 파일 탐색기 메뉴

Cloud Shell을 사용할 때처럼 이 환경에서 여러 터미널을 만들 수도 있습니다.

터미널 메뉴에서 강조 표시된 새 터미널 옵션

터미널에서 gcloud auth list를 실행하면, 제공된 서비스 계정으로 로그인되어 있음을 확인할 수 있습니다. 이 서비스 계정은 실습 사용자 계정과 동일한 권한을 가지고 있습니다.

gcloud auth list 명령어를 표시하는 터미널

환경이 작동하지 않는다면, GCE 콘솔에서 IDE를 호스팅하는 VM을 다음과 같이 재설정할 수 있습니다.

VM 인스턴스 페이지에서 강조 표시된 재설정 버튼과 VM 인스턴스 이름

작업 1. 파이프라인 설정

이 실습에서는 브랜칭 파이프라인 실습(솔루션 폴더)의 기존 파이프라인 코드를 활용합니다.

해당 실습 열기

  1. 아직 IDE 환경에 새 터미널을 만들지 않았다면 새 터미널을 만들고 다음 명령어를 복사하여 붙여넣습니다.
# Change directory into the lab cd 2_Branching_Pipelines/labs # Download dependencies mvn clean dependency:resolve export BASE_DIR=$(pwd)
  1. 데이터 환경 설정:
# Create GCS buckets and BQ dataset cd $BASE_DIR/../.. source create_batch_sinks.sh # Generate event dataflow source generate_batch_events.sh # Change to the directory containing the practice version of the code cd $BASE_DIR

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 데이터 환경 설정

파이프라인 코드 업데이트

  • IDE에서 솔루션 파일을 사용하여 MyPipeline.java 파일을 업데이트합니다. 솔루션 파일은 2_Branching_Pipelines/solution/src/main/java/com/mypackage/pipeline에서 찾을 수 있습니다.
cp /home/project/training-data-analyst/quests/dataflow/2_Branching_Pipelines/solution/src/main/java/com/mypackage/pipeline/MyPipeline.java $BASE_DIR/src/main/java/com/mypackage/pipeline/

작업 2. 커스텀 Dataflow Flex 템플릿 컨테이너 이미지 만들기

  1. 이 작업을 완료하려면 먼저 pom.xml 파일에 다음 플러그인을 추가하여 Uber JAR 빌드를 사용 설정합니다. 먼저 속성 태그에 다음을 추가합니다.
<maven-shade-plugin.version>3.2.3</maven-shade-plugin.version>
  1. 이어서 빌드 플러그인 태그에 다음을 추가합니다.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>${maven-shade-plugin.version}</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> </transformers> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin>
  1. 이제 다음 명령어를 사용하여 Uber JAR 파일을 빌드할 수 있습니다.
cd $BASE_DIR mvn clean package

파일 크기를 확인합니다. 이 Uber JAR 파일에는 모든 종속 항목이 포함되어 있습니다.

  1. 이 파일은 다른 라이브러리에 대한 외부 종속 항목 없이 독립형 애플리케이션으로 실행할 수 있습니다.
ls -lh target/*.jar
  1. pom.xml 파일과 동일한 디렉터리에서 다음 텍스트를 사용하여 Dockerfile이라는 파일을 만듭니다. FLEX_TEMPLATE_JAVA_MAIN_CLASS를 전체 클래스 이름으로 설정하고 YOUR_JAR_HERE를 생성한 Uber JAR로 설정해야 합니다.
FROM gcr.io/dataflow-templates-base/java11-template-launcher-base:latest # Define the Java command options required by Dataflow Flex Templates. ENV FLEX_TEMPLATE_JAVA_MAIN_CLASS="YOUR-CLASS-HERE" ENV FLEX_TEMPLATE_JAVA_CLASSPATH="/template/pipeline.jar" # Make sure to package as an uber-jar including all dependencies. COPY target/YOUR-JAR-HERE.jar ${FLEX_TEMPLATE_JAVA_CLASSPATH}
  1. 그런 다음 이 컨테이너 빌드를 로컬에서 수행하는 대신 Cloud Build를 사용하여 오프로드합니다. 먼저 향후 빌드 속도를 높이기 위해 캐싱을 사용 설정합니다.
gcloud config set builds/use_kaniko True
  1. 이제 실제 빌드를 실행합니다. 이 작업은 실제로 빌드할 항목에 대한 안내가 포함된 Dockerfile을 포함하여 전체 디렉터리를 tar로 묶고, 서비스에 업로드하여 컨테이너를 빌드하고, 나중에 사용할 수 있도록 해당 컨테이너를 프로젝트의 Artifact Registry에 푸시합니다.
export TEMPLATE_IMAGE="gcr.io/$PROJECT_ID/my-pipeline:latest" gcloud builds submit --tag $TEMPLATE_IMAGE .

Cloud Build UI에서 빌드 상태를 모니터링할 수도 있습니다. 또한 빌드된 컨테이너가 Artifact Registry에 업로드된 것을 확인할 수 있습니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 커스텀 Dataflow Flex 템플릿 컨테이너 이미지 만들기

작업 3. Flex 템플릿 만들기 및 스테이징

템플릿을 실행하려면 SDK 정보, 메타데이터 등 작업을 실행하는 데 필요한 모든 정보가 포함된 템플릿 사양 파일을 Cloud Storage에 만들어야 합니다.

  1. 이 작업을 완료하려면 파이프라인이 예상하는 모든 입력 파라미터를 포함하도록 다음 형식으로 metadata.json 파일을 만듭니다.

필요한 경우 솔루션을 참고하세요. 이를 위해서는 파라미터 정규 표현식 검사를 직접 작성해야 합니다. 권장사항은 아니지만 ".*"는 어떤 입력과도 일치할 수 있습니다.

{ "name": "Your pipeline name", "description": "Your pipeline description", "parameters": [ { "name": "inputSubscription", "label": "Pub/Sub input subscription.", "helpText": "Pub/Sub subscription to read from.", "regexes": [ "[-_.a-zA-Z0-9]+" ] }, { "name": "outputTable", "label": "BigQuery output table", "helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.", "is_optional": true, "regexes": [ "[^:]+:[^.]+[.].+" ] } ] }
  1. 이어서 실제 템플릿을 빌드하고 스테이징합니다.
export TEMPLATE_PATH="gs://${PROJECT_ID}/templates/mytemplate.json" # Will build and upload the template to GCS gcloud dataflow flex-template build $TEMPLATE_PATH \ --image "$TEMPLATE_IMAGE" \ --sdk-language "JAVA" \ --metadata-file "metadata.json"
  1. 파일이 Cloud Storage의 템플릿 위치에 업로드되었는지 확인합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Flex 템플릿 만들기 및 스테이징

작업 4. UI를 통한 템플릿 실행

이 작업을 완료하려면 아래의 안내를 따르세요.

  1. Google Cloud 콘솔의 Dataflow 페이지로 이동합니다.
  2. 템플릿에서 작업 만들기를 클릭합니다.
  3. 작업 이름 필드에 작업 이름을 입력합니다.
  4. Dataflow 템플릿 드롭다운 메뉴에서 커스텀 템플릿을 선택합니다.
  5. 템플릿 파일의 Cloud Storage 경로를 템플릿 Cloud Storage 경로 필드에 입력합니다.
  6. 필수 파라미터 아래에 해당 항목을 입력합니다.
  7. 작업 실행을 클릭합니다.
참고: 스테이징 버킷을 지정할 필요 없이 Dataflow는 프로젝트 번호를 사용하여 프로젝트에 비공개 버킷을 만듭니다. 예: gs://dataflow-staging--/staging.
  1. Compute Engine 콘솔을 살펴보면 컨테이너를 실행하고 제공된 파라미터로 파이프라인을 시작하기 위해 생성된 임시 런처 VM이 표시됩니다.

작업 5. gcloud를 사용하여 템플릿 실행

Dataflow 템플릿을 사용하면 개발 환경 외에도 더 다양한 컨텍스트에서 템플릿을 실행할 수 있다는 이점이 있습니다. 직접 확인해 보기 위해 gcloud를 사용하여 명령줄에서 Dataflow 템플릿을 실행합니다.

  1. 이 작업을 완료하려면 터미널에서 다음 명령어를 실행하고 필요에 따라 파라미터를 수정합니다.
export PROJECT_ID=$(gcloud config get-value project) export REGION={{{project_0.default_region | Region}}} export JOB_NAME=mytemplate-$(date +%Y%m%H%M$S) export TEMPLATE_LOC=gs://${PROJECT_ID}/templates/mytemplate.json export INPUT_PATH=gs://${PROJECT_ID}/events.json export OUTPUT_PATH=gs://${PROJECT_ID}-coldline/ export BQ_TABLE=${PROJECT_ID}:logs.logs_filtered gcloud dataflow flex-template run ${JOB_NAME} \ --region=$REGION \ --template-file-gcs-location ${TEMPLATE_LOC} \ --parameters "inputPath=${INPUT_PATH},outputPath=${OUTPUT_PATH},tableName=${BQ_TABLE}"
  1. 파이프라인이 성공적으로 완료되었는지 확인합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. UI 및 gcloud를 통한 템플릿 실행

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Skills에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2026 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하는 가장 좋은 방법은 시크릿 모드 또는 시크릿 브라우저 창을 사용하는 것입니다. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.