개요
Google Cloud Pub/Sub는 독립적인 애플리케이션 간에 메시지를 주고받을 수 있도록 하는 완전 관리형 실시간 메시징 서비스입니다. Cloud Pub/Sub를 사용하여 여러 소스에 데이터를 게시하고 여러 소스의 데이터를 구독한 다음, Google Cloud Dataflow를 사용하여 데이터를 실시간으로 파악할 수 있습니다.
이 실습에서는 트래픽 센서 데이터를 Pub/Sub 주제로 시뮬레이션한 후, Dataflow 파이프라인으로 처리하고, 마지막으로 추가 분석을 위해 BigQuery 테이블로 내보냅니다.
참고: 이 문서를 작성할 당시에는 Dataflow Python SDK에서 스트리밍 파이프라인을 사용할 수 없었습니다. 따라서 스트리밍 실습이 Java로 작성되었습니다.
목표
이 실습에서는 다음 작업을 수행합니다.
- Pub/Sub 주제 및 구독 만들기
- Pub/Sub로 트래픽 센서 데이터 시뮬레이션
설정
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
-
시크릿 창을 사용하여 Qwiklabs에 로그인합니다.
-
실습 사용 가능 시간(예: 1:15:00
)을 참고하여 해당 시간 내에 완료합니다.
일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.
-
준비가 되면 실습 시작을 클릭합니다.
-
실습 사용자 인증 정보(사용자 이름 및 비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.
-
Google Console 열기를 클릭합니다.
-
다른 계정 사용을 클릭한 다음, 안내 메시지에 이 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.
-
약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
작업 1. 준비
학습용 VM에서 센서 시뮬레이터를 실행해야 합니다. 이 환경에는 파일이 여러 개 포함되어 있으며, 환경의 일부를 설정해야 합니다.
SSH 터미널을 열고 학습용 VM에 연결하기
- 콘솔의 탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
training-vm 인스턴스가 있는 줄을 찾습니다.
- 맨 오른쪽에 있는 연결에서 SSH를 클릭하여 터미널 창을 엽니다.
- 이 실습에서는 training-vm에 CLI 명령어를 입력합니다.
초기화가 완료되었는지 확인하기
-
training-vm이 백그라운드에서 몇 가지 소프트웨어를 설치합니다. 새 디렉터리의 내용을 검토하여 설정이 완료되었는지 확인합니다.
ls /training
나열(ls) 명령어 결과가 아래 이미지와 같이 표시되면 설정이 완료된 것입니다. 전체 목록이 표시되지 않는 경우 몇 분 정도 기다린 후 다시 시도하세요. 참고: 모든 백그라운드 작업이 완료되려면 2~3분 정도 걸립니다.

코드 저장소 다운로드하기
- 다음으로 이 실습에서 사용할 코드 저장소를 다운로드합니다.
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
프로젝트 식별하기
설정할 환경 변수 하나는 $DEVSHELL_PROJECT_ID로, 여기에 청구 가능한 리소스에 액세스하는 데 필요한 Google Cloud 프로젝트 ID를 포함합니다.
- 콘솔의 탐색 메뉴(
)에서 홈을 클릭합니다. 프로젝트 정보 패널에 프로젝트 ID가 목록으로 표시됩니다. 이 정보는 '연결 세부정보' 아래 Qwiklabs 탭에서도 찾을 수 있으며 GCP 프로젝트 ID로 라벨이 지정되어 있습니다.
-
training-vm SSH 터미널에서 DEVSHELL_PROJECT_ID 환경 변수를 설정하고 다른 셸에서 사용할 수 있도록 내보냅니다. 다음 명령어를 실행하면 Google Cloud 환경에서 활성 프로젝트 ID를 가져올 수 있습니다.
export DEVSHELL_PROJECT_ID=$(gcloud config get-value project)
작업 2. Pub/Sub 주제 및 구독 만들기
-
training-vm SSH 터미널에서 이 실습에 해당하는 디렉터리로 이동합니다.
cd ~/training-data-analyst/courses/streaming/publish
gcloud 명령어를 사용하여 Pub/Sub 서비스가 액세스 가능하며 정상 작동하는지 확인하기
- 주제를 만들고 간단한 메시지를 게시합니다.
gcloud pubsub topics create sandiego
- 간단한 메시지를 게시합니다.
gcloud pubsub topics publish sandiego --message "hello"
- 주제에 대한 구독을 만듭니다.
gcloud pubsub subscriptions create --topic sandiego mySub1
- 주제에 게시된 첫 번째 메시지를 가져옵니다.
gcloud pubsub subscriptions pull --auto-ack mySub1
결과가 표시되나요? 아니라면 그 이유는 무엇인가요?
- 다른 메시지를 게시한 다음, 구독을 사용하여 가져와 봅니다.
gcloud pubsub topics publish sandiego --message "hello again"
gcloud pubsub subscriptions pull --auto-ack mySub1
이번에는 응답을 받았나요?
출력:

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Pub/Sub 주제 및 구독 만들기
-
training-vm SSH 터미널에서 구독을 취소합니다.
gcloud pubsub subscriptions delete mySub1
작업 3. Pub/Sub로 트래픽 센서 데이터 시뮬레이션하기
- San Diego 트래픽 센서 데이터를 시뮬레이션하는 Python 스크립트를 살펴봅니다. 코드를 변경하지 마세요.
cd ~/training-data-analyst/courses/streaming/publish
nano send_sensor_data.py
시뮬레이션 함수를 살펴보겠습니다. 이 함수는 트래픽 센서가 실시간으로 데이터를 Pub/Sub에 보내고 있는 것처럼 스크립트가 동작하게 만듭니다. speedFactor 매개변수는 시뮬레이션의 진행 속도를 결정합니다. Ctrl+X를 눌러 파일을 종료합니다.
- 트래픽 시뮬레이션 데이터 세트를 다운로드합니다.
./download_data.sh
스트리밍 센서 데이터 시뮬레이션하기
-
send_sensor_data.py를 실행합니다.
./send_sensor_data.py --speedFactor=60 --project $DEVSHELL_PROJECT_ID
이 명령어를 사용하면 Pub/Sub 메시지를 통해 기록된 센서 데이터를 보내 센서 데이터를 시뮬레이션할 수 있습니다. 스크립트는 센서 데이터의 원래 시간을 추출하고 각 메시지를 보내는 사이에 일시중지함으로써 센서 데이터의 전송 속도를 사실적으로 시뮬레이션합니다. speedFactor 값은 메시지 사이의 시간을 비례식으로 변경합니다. 따라서 speedFactor의 값이 60이면 기록된 시간보다 '60배 더 빠르다'는 의미이며, 60초마다 약 1시간 분량의 데이터를 보냅니다.
이 터미널을 열어 두고 시뮬레이션을 실행 중인 상태로 둡니다.
작업 4. 메시지가 수신되었는지 확인하기
두 번째 SSH 터미널을 열고 학습용 VM에 연결하기
- 콘솔의 탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
training-vm 인스턴스가 있는 줄을 찾습니다.
- 맨 오른쪽에 있는 연결에서 SSH를 클릭하여 두 번째 터미널 창을 엽니다.
- 작업 중이던 디렉터리로 변경합니다.
cd ~/training-data-analyst/courses/streaming/publish
- 주제에 대한 구독을 만들고 가져오기를 수행하여 메시지가 수신되고 있는지 확인합니다(참고: 메시지가 표시되도록 하려면 'pull' 명령어를 두 번 이상 실행해야 할 수 있음).
gcloud pubsub subscriptions create --topic sandiego mySub2
gcloud pubsub subscriptions pull --auto-ack mySub2
- 트래픽 센서 정보가 포함된 메시지가 보이는지 확인합니다.

- 이 구독을 취소합니다.
gcloud pubsub subscriptions delete mySub2
- 두 번째 터미널을 닫습니다.
exit
센서 시뮬레이터 중지하기
- 첫 번째 터미널로 돌아갑니다.
-
Ctrl+C를 입력하여 게시자를 멈춤으로써 시뮬레이터를 중지합니다.
- 첫 번째 터미널을 닫습니다.
exit
실습 종료하기
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
- 별표 1개 = 매우 불만족
- 별표 2개 = 불만족
- 별표 3개 = 중간
- 별표 4개 = 만족
- 별표 5개 = 매우 만족
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.