시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Public Cloud Run service
/ 20
Private Cloud Run service
/ 20
PubSub Topic
/ 20
Service account
/ 20
PubSub Subscription
/ 20
Pub/Sub를 사용하면 애플리케이션에서 효율적인 메시지 큐를 활용할 수 있습니다. 이 서비스는 다양한 Google Cloud 서비스와 호환되며, 이 실습에서는 Cloud Run과 통합하는 방법을 알아봅니다.
이 실습은 서버리스 인프라를 사용하여 고객 사용 사례를 해결하는 것을 바탕으로 합니다. 이 실습은 기술 문제를 해결하는 개괄적인 섹션 3개로 구성되어 있습니다.
이 실습에서는 다음을 수행하는 방법에 대해 알아봅니다.
이러한 실습은 Google Cloud에 대한 중급 수준의 지식을 기반으로 합니다. 필요한 단계는 내용에 설명되어 있지만 다음 제품에 익숙하면 도움이 됩니다.
Google Skills 실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음이 필요합니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에 있는 패널에서 이 실습에 사용해야 하는 임시 사용자 인증 정보를 확인할 수 있습니다.
사용자 이름을 복사한 다음 Google 콘솔 열기를 클릭합니다. 실습에서 리소스가 실행되며 계정 선택 페이지를 표시하는 다른 탭이 열립니다.
계정 선택 페이지에서 다른 계정 사용을 클릭합니다. 로그인 페이지가 열립니다.
연결 세부정보 패널에서 복사한 사용자 이름을 붙여넣습니다. 그런 다음 비밀번호를 복사하여 붙여넣습니다.
잠시 후 Cloud 콘솔이 이 탭에서 열립니다.
Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.
Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.
계속을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:
gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
출력:
출력 예시:
출력:
출력 예시:
이 실습에서 학습자는 Critter Junction의 개발팀이 요구사항을 위해 Pub/Sub를 사용하는 것을 조사하는 데 도움을 주어야 합니다. 팀은 애플리케이션 내에서 효율적인 큐 처리를 수행하는 방법을 살펴보고자 합니다.
Critter Junction의 팀은 Google Cloud를 기반으로 빌드된 공개 웹 애플리케이션과 여러 마이크로서비스를 보유하고 있습니다. 마이크로서비스 간의 통신은 매우 중요하며 각 애플리케이션 구성요소 간에 복원력이 뛰어난 메시지 형식을 설정해야 합니다.
마이크로서비스가 서로에 대해 많은 것을 알아야 했기 때문에(높은 결합도) 개발팀에서 이전에 했던 시도는 성공하지 못했습니다. 또한 서비스가 일시적으로 중단되면 메시지가 손실됩니다.
팀은 시스템에 추가 서비스 종속 항목(낮은 결합도)을 도입하지 않고도 일정 수준의 복원력을 포함하는 솔루션이 필요합니다. 이제 Critter Junction과 이 팀이 직면한 문제에 대해 조금 더 알게 되었으니 솔루션의 주요 기준에 우선순위를 정해 보세요.
주요 사용 사례와 우선순위를 파악하기 위해 Critter Junction 이해관계자들과 초기 논의를 진행했습니다. 논의 결과는 아래와 같습니다.
|
참조 |
사용자 스토리 |
|
1 |
수석 개발자로서 메시지의 복원력을 보장하여 수동 개입 없이도 서비스 운영이 복원되도록 하고 싶습니다. |
|
2 |
프로그램 관리자로서 서비스가 원활하게 확장되어 추가적인 트랜잭션 부하로 인해 시스템 불안정이 발생하지 않았으면 합니다. |
|
3 |
운영팀 책임자로서 직원들이 중요한 유지보수 작업으로 인해 다른 업무로 재배치되지 않도록 서비스가 관리되었으면 합니다. |
팀장과의 논의를 통해 다음과 같은 개략적인 작업을 정의했습니다.
|
참조 |
완료 조건 |
|
1 |
서비스 간 통신을 위한 비동기 구성요소를 설정합니다. |
|
2 |
솔루션의 입증된 확장성을 구현합니다. |
|
3 |
서비스는 감독 없이 실행되어야 합니다. |
Critter Junction의 팀은 신속하게 구현할 수 있는 솔루션을 정의하고자 합니다. 요구사항을 고려하여 개발팀은 옵션을 다음과 같이 좁혔습니다.
자세한 내용은 Pub/Sub와 Cloud Tasks 비교를 참조하세요.
|
제품 |
사용 사례 |
선택 |
|
Pub/Sub |
"실행 제어 권한을 일정 수준 포기할 수 있는 보다 일반적인 이벤트 데이터 수집 및 배포 패턴에 적합합니다." |
|
|
Cloud Tasks |
"태스크 생성자가 특정 웹훅 또는 리모트 프러시저 콜의 실행 시점을 연기하거나 제어해야 하는 사용 사례에 적합합니다." |
|
요구사항을 고려한 후 개발팀은 푸시 기반 배포 패턴만 필요하므로 Pub/Sub를 선택합니다. 다음은 조사해야 할 최소 기능 제품(MVP)을 요약한 대략적인 아키텍처 다이어그램입니다.
제안된 솔루션에서는 Pub/Sub를 사용하여 서비스 간의 비동기 메시지를 처리합니다.
필요한 API에 액세스할 수 있도록 Pub/Sub API를 다시 사용 설정합니다.
Google Cloud 콘솔의 탐색 메뉴()에서 API 및 서비스 아래의 라이브러리를 클릭합니다.
검색 상자에 Pub/Sub를 입력합니다.
Cloud Pub/Sub API에 대한 검색 결과를 클릭합니다.
관리를 클릭합니다.
API 사용 중지를 클릭합니다. 확인을 요청하는 메시지가 표시되면 사용 중지를 클릭합니다.
Do you want to disable Cloud Pub/Sub API and its dependent APIs?(Cloud Pub/Sub API 및 이에 종속된 API를 사용 중지하시겠습니까?)라는 메시지가 표시되면 확인을 클릭합니다.
API를 다시 사용 설정하려면 사용 설정을 클릭합니다.
API가 다시 사용 설정되면 페이지에 API에 관한 정보가 표시됩니다.
Critter Junction은 Pub/Sub와 통합하려는 여러 Cloud Run 서비스를 보유하고 있습니다. MVP를 빌드하려면 다음 작업이 필요합니다.
Critter Junction은 외부로 연결되는 스토어 서비스가 공개 엔드포인트로 구성되어야 한다고 명시하며 다음과 같은 요구사항을 지시했습니다.
|
유형 |
권한 |
설명 |
|
URL 액세스 |
--allow-unauthenticated |
서비스를 공개로 설정합니다(인증되지 않은 사용자도 볼 수 있음). |
|
권한 호출 |
allUsers |
누구나 서비스를 호출/트리거할 수 있도록 허용합니다. |
프로듀서 스토어 서비스는 구매 주문에 대해 공개 인터넷 기반 연결을 수락합니다. 이를 위해서는 서비스에 인증이 필요해서는 안 되며 누구나 트리거할 수 있어야 합니다.
이 서비스에서 수집한 정보는 백엔드 소비자 서비스로 전달됩니다.
Cloud Run에서 스토어 서비스를 구성하고 배포합니다. Cloud Shell에서 다음 명령어를 실행합니다.
Cloud Run API를 사용 설정하고 셸 환경을 구성합니다.
LOCATION 환경 변수를 만듭니다.
컴퓨팅 리전을 설정합니다.
스토어 서비스를 배포합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
스토어 서비스가 배포되면 인터넷을 통해 공개적으로 액세스할 수 있습니다.
개발팀은 비공개 엔드포인트에서 액세스할 수 있는 주문 서비스도 구성해야 합니다. 스토어 서비스와 달리 주문 서비스는 인터넷을 통해 공개적으로 액세스할 수 있어서는 안 되며 적절한 권한이 있는 계정에서만 호출해야 합니다.
Cloud Run 기반 서비스의 경우 다음 설정을 사용하여 구현할 수 있습니다.
|
유형 |
권한 |
설명 |
|
URL 액세스 |
--no-allow-unauthenticated |
서비스를 비공개로 설정합니다(인증된 사용자만 볼 수 있음). |
|
역할/권한 호출 |
Cloud Run 호출자 |
Cloud Run 호출자 역할이 있는 계정만 서비스를 호출하도록 허용합니다. |
주문 서비스를 구성하고 배포합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이제 인증된 계정만 서비스에 액세스하고 서비스를 호출할 수 있습니다.
Pub/Sub는 이벤트를 소비 및 처리하는 서비스에서 이벤트를 생성하는 서비스를 분리하는 비동기 메시지 서비스입니다.
Pub/Sub 핵심 개념
Pub/Sub를 성공적으로 배포하려면 몇 가지 옵션을 완료해야 합니다. Pub/Sub는 Google Cloud 콘솔의 빅데이터 메뉴 옵션에서 액세스할 수 있습니다.
|
필드 |
설명 |
|
주제 |
게시자가 메시지를 전송하는, 이름이 지정된 리소스입니다. |
|
구독 |
특정 단일 주제의 메시지 스트림이 구독 중인 애플리케이션으로 전달되는 과정을 나타내는, 이름이 지정된 리소스입니다. 구독과 메시지 전달 시맨틱스를 자세히 알아보려면 구독자 가이드를 참조하세요. |
|
메시지 |
게시자가 주제에 전송해 결과적으로 구독자에게 전달되는 데이터와 속성(선택사항)의 조합입니다. |
|
메시지 속성 |
게시자가 메시지에 대해 정의할 수 있는 키-값 쌍입니다. 예를 들어 메시지에 키 iana.org/language_tag와 값 en을 추가하여 영어를 사용하는 구독자가 읽을 수 있다고 표시하는 식입니다. |
Pub/Sub는 다양한 사용 사례에 사용할 수 있으며, 가장 일반적인 사용 사례는 다음과 같습니다.
|
사용 사례 |
예시 |
|
네트워크 클러스터 간의 워크로드 균형 조정 |
예: 대규모 작업 큐를 Compute Engine 인스턴스 같은 여러 작업자 간에 효율적으로 분배합니다. |
|
비동기 워크플로 구현 |
예: 주문 처리 애플리케이션이 주제에 주문을 전송하고 하나 이상의 작업자가 주문을 처리합니다. |
|
이벤트 알림 배포 |
예: 사용자 가입을 수락하는 서비스에서 새 사용자가 등록할 때마다 알림을 전송하고, 다운스트림 서비스는 구독하여 이벤트 알림을 수신합니다. |
|
분산 캐시 새로고침 |
예: 애플리케이션이 무효화 이벤트를 게시해, 변경된 객체의 ID를 업데이트합니다. |
|
여러 시스템에 로깅 |
예: Google Compute Engine 인스턴스가 모니터링 시스템, 향후 쿼리용 데이터베이스 등에 로그를 기록합니다. |
|
다양한 프로세스 또는 기기에서 데이터 스트리밍 |
예: 가정용 센서가 클라우드에서 호스팅되는 백엔드 서버로 데이터를 스트리밍합니다. |
|
안정성 개선 |
예: 단일 영역 Compute Engine 서비스가 공통 주제를 구독하여 추가 영역에서 작동함으로써 특정 영역이나 리전에서 발생하는 오류로부터 복구합니다. |
이제 프로듀서(store service) 및 소비자(order service) 서비스가 성공적으로 배포되었으므로 Pub/Sub의 주요 기능에 집중할 수 있습니다. Pub/Sub를 사용하려면 다음 두 가지 활동이 필요합니다.
주제에 비동기식 (푸시) 이벤트가 생성되면 주제를 구독하는 애플리케이션이 연결된 메시지를 처리할 수 있습니다. Pub/Sub를 사용한 푸시 이벤트 처리는 Google Cloud에서 메시지를 처리하는 확장 가능한 방법을 제공합니다.
새 Pub/Sub 주제에는 다음 값이 포함됩니다.
|
필드 |
값 |
|
이름 |
ORDER_PLACED |
|
암호화 |
Google 관리 키 |
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Pub/Sub 주제를 생성하면 메시지를 독립적으로 저장하고 복원력 있는 방식으로 전송할 수 있습니다.
후속 작업에서 구독을 만듭니다.
Pub/Sub 메시지를 Cloud Run 서비스에 전달하려면 Pub/Sub 구독이 필요합니다. 구독은 적절한 권한이 있는 서비스 계정을 사용하여 서비스를 호출할 수 있어야 합니다. 이 실습에서는 서비스 계정을 사용하여 구독을 통해 소비자 주문 서비스를 호출합니다.
이 기능을 구현하려면 다음 활동이 필요합니다.
인증된 액세스를 제공할 새 서비스 계정을 만듭니다.
Order Initiator라는 새 서비스 계정을 만듭니다.
서비스 계정이 생성되었는지 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 시점에서 Order Initiator 서비스 계정을 사용할 수 있습니다. 하지만 역할이나 권한이 할당되어 있지 않습니다. IAM 권한을 할당하려면 역할 권한을 서비스 계정에 적용하거나 바인딩해야 합니다.
Cloud Run에서 서비스를 호출하는 데 사용되는 계정에 권한을 바인딩하려면 다음 정보가 필요합니다.
|
카테고리 |
설명 |
|
서비스 이름 |
호출할 배포된 서비스의 이름입니다. |
|
구성원 |
역할 권한을 부여할 계정입니다. |
|
리전 |
서비스가 배포된 리전입니다. |
|
플랫폼 |
플랫폼 유형입니다(Cloud Run Managed, Cloud Run for Anthos 또는 Cloud Run for VMWare). |
주문 서비스에서 서비스 계정에 Cloud Run Invoker 역할을 바인딩합니다.
이제 새 서비스 계정에 Cloud Run 서비스를 호출할 수 있는 권한이 부여되었습니다.
프로젝트 번호를 저장할 환경 변수를 만듭니다.
프로젝트 서비스 계정에서 토큰을 만들 수 있도록 설정합니다.
이 작업에서는 Pub/Sub 구독을 만들고 새 서비스 계정을 사용하도록 구성합니다.
주문 서비스의 엔드포인트를 저장할 환경 변수를 만듭니다.
구독을 만들고 주문 서비스에 바인딩합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
애플리케이션을 테스트하려면 샘플 JSON 페이로드를 스토어 서비스로 전송합니다.
다음 내용으로 test.json이라는 파일을 만듭니다. nano, vi 또는 Cloud Shell 편집기 등 원하는 편집기를 사용할 수 있습니다.
스토어 서비스의 엔드포인트를 저장할 환경 변수를 만듭니다.
마이크로서비스 간의 통신을 테스트하고 주문 ID를 생성하려면 스토어 서비스에 메시지를 게시합니다.
명령어의 출력은 주문이 성공적으로 생성되었음을 나타내며 다음과 유사합니다.
스토어 서비스(공개 엔드포인트)는 Pub/Sub를 사용하여 정보를 주문 서비스(비공개 엔드포인트)로 전송합니다.
Google Cloud 콘솔의 탐색 메뉴()에서 Cloud Run을 클릭합니다.
store-service 링크를 클릭합니다.
서비스 로그를 보려면 로그를 클릭합니다. 스토어 서비스 로그를 확인하여 생성된 주문 ID를 봅니다.
로그 필터 ORDER ID를 추가하여 스토어 서비스에서 생성된 ID를 확인합니다.
주문 서비스는 Pub/Sub를 통해 전달된 스토어 서비스의 메시지를 수신합니다.
주문 서비스 로그를 확인하여 JSON 데이터가 성공적으로 전송되었는지 확인합니다.
Order Placed 로그 필터를 추가하여 주문 서비스에 전달된 생성된 주문 ID를 확인합니다.
Critter Junction은 이제 Pub/Sub를 활용하도록 솔루션을 업데이트했습니다. 다음은 배포된 솔루션을 요약한 대략적인 아키텍처 다이어그램입니다.
Google Cloud에 Pub/Sub를 배포하여 Cloud Run 서비스 간에 비동기식으로 통신하는 데 성공했습니다.
이 실습에서는 Google Cloud 인프라에서 Cloud Run 서비스를 Pub/Sub와 통합하는 방법을 배웠습니다. 지금까지 배운 내용은 다음과 같습니다.
Serverless Expeditions(서버리스 탐험) 동영상 시리즈를 시청하여 프로젝트 내에서 이러한 제품을 사용하는 방법을 자세히 알아보세요.
설명서 최종 업데이트: 2024년 2월 20일
실습 최종 테스트: 2024년 2월 20일
Copyright 2026 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.