시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Create a Pub/Sub topic
/ 10
Deploy the Lab Report Service: Build
/ 15
Create a Revision for Cloud Run
/ 15
Deploy the Email Service: Build
/ 15
Create a new Revision
/ 15
Create a service account
/ 10
Create a Pub/Sub subscription
/ 10
Deploy the SMS Service
/ 10
Create a Pub/Sub topic
/ 10
Deploy the Lab Report Service: Build
/ 15
Create a Revision for Cloud Run
/ 15
Deploy the Email Service: Build
/ 15
Create a new Revision
/ 15
Create a service account
/ 10
Create a Pub/Sub subscription
/ 10
Deploy the SMS Service
/ 10
서버리스 Cloud Run 개발 과정에 포함된 실습에서는 가상의 비즈니스 시나리오를 읽고 시나리오 속 인물들이 서버리스 마이그레이션 계획을 세울 수 있도록 도움을 줍니다.
릴리는 12년 전에 Pet Theory라는 프랜차이즈 동물병원을 열었습니다. 지난 몇 년 동안 병원 수가 증가함에 따라 자동화의 필요성도 커졌습니다. Pet Theory가 연구에서 나온 의료 검사 결과를 처리하는 방식은 너무 느리고 오류가 발생하기 쉬워 릴리는 이를 개선하고자 합니다.
현재 Pet Theory의 IT 관리자인 패트릭은 검사 결과를 수동으로 처리하고 있습니다. 검사 결과가 나올 때마다 그는 반려동물을 검사한 고객에게 이메일을 작성해 보낸 다음, 휴대전화로 문자 메시지를 입력해 결과를 고객에게 문자로 전송합니다.
패트릭은 소프트웨어 컨설턴트인 Ruby와 협력하여 확장성이 더욱 뛰어난 시스템을 설계하고 있습니다. 이들은 지속적인 유지보수가 크게 필요하지 않은 솔루션을 빌드하길 원합니다. 패트릭과 루비는 서버리스 기술을 선택하기로 했습니다.
이 실습에서는 다음 작업을 수행하는 방법을 배웁니다.
이 실습은 Cloud 콘솔 및 셸 환경에 익숙하다는 전제로 진행됩니다. 이 실습은 시리즈의 일부입니다. 이전 실습을 먼저 수강하면 도움이 될 수 있지만, 필요하지는 않습니다.
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지를 표시합니다.
실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음을 준비해야 합니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 대화상자가 열립니다. 오른쪽에는 다음과 같은 항목이 포함된 실습 설정 및 액세스 패널이 있습니다.
실습 타이머는 페이지 상단에 있으며 남은 시간을 표시합니다.
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
실습 설정 및 액세스 패널에서도 사용자 이름을 확인할 수 있습니다.
다음을 클릭합니다.
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
실습 설정 및 액세스 패널에서도 비밀번호를 확인할 수 있습니다.
다음을 클릭합니다.
이후에 표시되는 페이지를 클릭하여 넘깁니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다. Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
Google Cloud 콘솔 상단에서 Cloud Shell 활성화 를 클릭합니다.
다음 창을 클릭합니다.
연결되면 사용자 인증이 이미 처리된 것이며 프로젝트가 학습자의 PROJECT_ID,
gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
출력:
출력:
gcloud 전체 문서는 Google Cloud에서 gcloud CLI 개요 가이드를 참고하세요.
특정 Compute Engine 리소스는 여러 리전과 영역에 위치합니다. 리전은 리소스를 실행할 수 있는 특정한 지리적 위치로, 각 리전에는 영역이 하나 이상 있습니다.
Cloud Shell에서 다음 gcloud 명령어를 실행하여 실습에 사용할 기본 리전과 영역을 설정합니다.
Pet Theory는 고객 검사 결과를 공유하는 프로세스를 자동화하고자 합니다. 늘어나는 진료 예약을 모두 처리하기가 쉽지 않았기 때문에 릴리는 루비에게 도움을 요청하기로 합니다.
|
릴리, Pet Theory 설립자 |
안녕하세요, 루비님. 보험 포털 문제를 처리해 주셔서 감사합니다. 의료 검사 결과 건도 개선할 방법이 있을까요? 고객에게 결과를 전달하는 더 효율적인 방법이 필요합니다. 릴리 드림 |
|
루비, 소프트웨어 컨설턴트 |
안녕하세요, 릴리님. 물론입니다. 상황을 개선할 만한 몇 가지 아이디어가 있는데 어떤 방법이 가능한지 확인해 보도록 하겠습니다. 루비 드림 |
Pet Theory는 외부 연구소를 이용하여 의료 검사를 진행합니다. 연구소는 의료 검사를 완료하면 그 결과를 Pet Theory에 다시 보냅니다.
연구소에서는 의료 연구 결과에 대해 Pet Theory의 웹 엔드포인트에 HTTP(s) POST를 사용합니다. 아래 이미지는 일반 아키텍처를 간략하게 설명합니다.
루비는 전반적인 프로세스를 살펴본 후 Pet Theory에서 다음을 수행할 수 있도록 시스템을 설계할 수 있다고 판단합니다.
루비의 설계는 위의 각 활동을 분리하고 다음이 필요합니다.
루비는 일회용 함수를 사용하여 작성하기 쉽고 버그가 적은 코드를 개발할 방법을 모색하고 있습니다.
|
루비, 소프트웨어 컨설턴트 |
안녕하세요, 패트릭님. 릴리님이 의료 기록 처리에 도움이 되는 프로토타입을 제작해 달라고 하셨습니다.
이를 시작할 수 있도록 루비 드림 |
|
패트릭, IT 관리자 |
안녕하세요, 루비님. 괜찮은 프로젝트인 것 같습니다. 오늘 아침에 완료해 드릴 수 있어요. 두 활동 모두 Google Cloud에서 매우 빠르게 설정할 수 있습니다. 패트릭 드림 |
패트릭이 new-lab-report라는 Pub/Sub 주제를 만들 수 있도록
지원하세요.
서비스가 Pub/Sub 메시지를 게시할 때 해당 메시지는 주제로 태그되어야 합니다. 연구 보고서는 해당 서비스를 통해 사용되어 각 보고서에 대한 메시지를 만들고 게시합니다.
먼저 이 작업에 사용할 수 있는 주제를 만들어야 합니다.
'new-lab-report' 주제를 구독하는 모든 서비스는 연구 보고서 서비스에서 게시한 메시지를 사용할 수 있습니다. 위 다이어그램에서는 이메일 서비스와 SMS 서비스라는 두 가지 소비자를 확인할 수 있습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Pub/Sub 주제가 준비되었다고 루비에게 알려주세요.
|
패트릭, IT 관리자 |
안녕하세요, 루비님. 모두 완료되었습니다. 시간이 되시면 이 프로토타입이 어떻게 구성되는지 보고 싶습니다. 함께 작업할 수 있을까요? 패트릭 드림 |
|
루비, 소프트웨어 컨설턴트 |
안녕하세요, 패트릭님. 이렇게 빨리 처리해 주셔서 감사합니다. 함께 빌드 작업을 진행할 수 있도록 일정을 잡아보도록 하겠습니다. 루비 드림 |
루비가 새로운 연구 보고서 서비스를 설정하도록 지원하세요.
이 서비스는 프로토타입 제작 목적으로 사용되므로 다음 두 가지 작업만 수행합니다.
lab-service 디렉터리로 이동합니다.
이러한 명령어는 package.json 파일을 업데이트하여 이 서비스에
필요한 종속 항목을 나타냅니다.
이제 Cloud Run이 코드 시작 방법을 알 수 있도록
package.json 파일을 수정합니다.
package.json 파일을 엽니다.
package.json 파일의 "scripts" 섹션에서 아래와 같이
7번 줄에 "start": "node index.js" 코드
줄을 추가한 다음 파일을 저장합니다.
"start": "node index.js",
그렇지 않으면 배포 중에 오류가 발생합니다.
index.js라는 새로운 파일을 만들고 다음 코드를 파일에
추가합니다.
const labReport = req.body;
await publishPubSubMessage(labReport);
구체적으로는 다음과 같습니다.
Dockerfile이라는 파일을 만들고 아래 코드를 파일에
추가합니다.
이 파일은 Cloud Run 서비스를 컨테이너에 패키징하는 방법을 정의합니다.
deploy.sh라는 파일을 만들고 다음 명령어를 파일에 붙여넣습니다.
타이밍 문제로 인해 이 명령어를 처음 실행할 때 오류가 발생할 수 있습니다.
그러면 deploy.sh를 다시 실행하면 됩니다.
배포가 성공적으로 완료되면 다음과 유사한 메시지가 표시됩니다.
훌륭합니다. 연구 보고서 서비스가 배포되었으며 HTTP를 통해 의료 연구 결과를 사용합니다. 이제 새로운 서비스가 실행되고 있는지 테스트할 수 있습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
연구 보고서 서비스의 유효성을 검사하려면 각각 1개의 연구 보고서가 포함된, 연구소에서 만든 3개의 HTTPS POST를 시뮬레이션합니다. 테스트 목적으로 생성된 연구 보고서에는 ID만 포함됩니다.
post-reports.sh라는 새로운 파일을 만들고 아래 코드를 파일에
추가합니다.
위 스크립트는 curl 명령어를 사용하여 3개의 개별 ID를 연구 서비스
URL에 게시합니다. 각 명령어는 백그라운드에서 개별적으로 실행됩니다.
post-reports.sh 스크립트를 실행 가능하게 만듭니다.이 스크립트는 3개의 연구 보고서를 연구 보고서 서비스에 게시했습니다. 로그를 확인하여 결과를 볼 수 있습니다.
Cloud 콘솔에서
탐색 메뉴() > Cloud Run을 클릭합니다.
이제 서비스 목록에 새로 배포된 lab-report-service가 표시됩니다. 클릭합니다.
다음 페이지에는 lab-report-service에 대한 세부정보가 표시됩니다. 로그 탭을 클릭합니다.
로그 페이지에 스크립트를 사용하여 게시한 3개의 테스트 보고서의 결과가 표시됩니다. 아래에 표시된 것과 같이 콘텐츠가 아니라 '확인'을 의미하는 HTTP 코드인 204가 반환될 것입니다. 아무 항목도 표시되지 않는 경우 오른쪽에 있는 스크롤바를 사용하여 위아래로 스크롤해 보세요. 그러면 로그가 다시 로드됩니다.
다음 작업은 SMS 서비스와 이메일 서비스를 작성하는 것입니다. 이러한 서비스는 연구 보고서 서비스가 'new-lab-report' 주제에 대한 Pub/Sub 메시지를 게시할 때 트리거됩니다.
루비가 새로운 이메일 서비스를 설정하도록 지원하세요.
위 명령어는 앱과 해당 종속 항목을 설명하는 package.json 파일을
업데이트합니다. Cloud Run은 코드 실행 방법을 알아야 하므로 수행할 작업을 알 수
있도록 start 명령어를 추가합니다.
package.json 파일을 엽니다.
"scripts" 섹션에서 아래와 같이
"start": "node index.js" 줄을 추가하고
파일을 저장합니다.
"start": "node index.js",
그렇지 않으면 배포 중에 오류가 발생합니다.
index.js라는 새로운 파일을 만들고 다음을 파일에 추가합니다.
이 코드는 Pub/Sub가 메시지를 서비스에 게시할 때 실행됩니다. 이를 통해 다음과 같은 기능을 수행합니다.
sendEmail() 함수 호출을
시도합니다.
서비스 간 통신이 작동하면 루비는 실제로 이메일을 보내기 위해
sendEmail() 함수에 코드를 추가합니다.
Dockerfile이라는 파일을 만들고 아래 코드를 파일에
추가합니다.
이 파일은 Cloud Run 서비스를 컨테이너에 패키징하는 방법을 정의합니다.
deploy.sh라는 새로운 파일을 만들고 다음을 파일에 추가합니다.
deploy.sh를 실행 파일로 만듭니다.배포가 완료되면 다음과 유사한 메시지가 표시됩니다.
서비스가 성공적으로 배포되었습니다. 이제 Pub/Sub 메시지를 사용할 수 있을 때 이메일 서비스가 트리거되는지 확인해야 합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
'new-lab-report' 주제를 사용하여 새로운 Pub/Sub 메시지가 게시될 때마다 이메일 서비스가 트리거되어야 합니다. 이 작업을 수행하려면 이 서비스에 대한 관련 요청을 자동으로 처리하도록 서비스 계정을 구성합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
그런 다음 'new-lab-report' 메시지가 게시될 때 Pub/Sub에서 SMS 서비스를 호출하도록 지시합니다.
그런 다음 프로젝트에서 Pub/Sub 인증 토큰을 만들도록 설정합니다.
훌륭합니다. 이제 서비스가 Cloud Pub/Sub 메시지에 응답하도록 설정되었습니다. 다음 단계로 코드의 유효성을 검사하여 요구사항을 충족하는지 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
그런 다음 로그를 엽니다(탐색 메뉴 > Cloud Run). email-service 및 lab-report-service라는 2개의 Cloud Run 서비스가 계정에 표시됩니다.
email-service를 클릭한 다음 로그를
클릭합니다.
Pub/Sub에 의해 트리거되는 이 서비스의 결과가 표시됩니다. 예상되는 메시지가
표시되지 않는 경우 스크롤바를 위아래로 이동하여 로그를 새로고침합니다.
완료되었습니다. 이제 이메일 서비스는 Cloud Pub/Sub 주제 큐에서 메시지가 처리될 때마다 로그에 정보를 작성할 수 있습니다. 마지막 작업은 SMS 서비스를 작성하는 것입니다.
루비가 새로운 SMS 서비스를 설정하도록 지원하세요.
package.json 파일을 엽니다.
"scripts" 섹션에서 아래와 같이
"start": "node index.js" 줄을 추가하고
파일을 저장합니다.
"start": "node index.js",
그렇지 않으면 배포 중에 오류가 발생합니다.
index.js라는 새로운 파일을 만들고 다음을 파일에 추가합니다.
Dockerfile이라는 파일을 만들고 아래 코드를 파일에
추가합니다.
이 파일은 Cloud Run 서비스를 컨테이너에 패키징하는 방법을 정의합니다. 이제 코드가 생성되었으므로 다음 단계는 서비스를 배포하는 것입니다.
deploy.sh라는 파일을 만들고 다음 코드를 파일에 추가합니다.
deploy.sh를 실행 파일로 만듭니다.배포가 완료되면 다음과 유사한 메시지가 표시됩니다.
SMS 서비스가 배포되었지만 Cloud Pub/Sub 서비스에 연결되지 않았습니다. 다음 섹션에서 이를 수정합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이메일 서비스와 마찬가지로, 메시지를 사용할 수 있도록 Cloud Pub/Sub와 SMS 서비스 간의 링크를 구성해야 합니다.
그런 다음 'new-lab-report' 메시지가 게시될 때 Pub/Sub에서 SMS 서비스를 호출하도록 지시합니다.
SMS_SERVICE_URL이 캡처되었는지 확인합니다.
그런 다음 Pub/Sub 구독을 만듭니다.
그런 다음 로그를 엽니다(탐색 메뉴 > Cloud Run). email-service, lab-report-service, sms-service라는 3개의 Cloud Run 서비스가 계정에 표시됩니다.
sms-service를 클릭한 다음 로그를 클릭합니다. Pub/Sub에 의해 트리거되는 이 서비스의 결과가 표시됩니다.
프로토타입 시스템이 생성되어 성공적으로 테스트되었습니다. 그러나 패트릭은 초기 검증 프로세스의 일부인 복원력 항목이 아직 테스트되지 않았다는 점을 우려하고 있습니다.
서비스 중 하나가 중지되면 어떻게 될까요? 이는 흔히 발생하는 상황으로, 패트릭은 이전에도 이런 문제를 겪은 적이 있습니다.
루비가 시스템에서 이 시나리오를 처리할 방법을 조사할 수 있도록 지원하세요. 루비는 잘못된 버전의 이메일 서비스를 배포하여 서비스가 중지되면 어떻게 되는지 테스트하고자 합니다.
email-service 디렉터리로 돌아갑니다.오류가 발생하도록 이메일 서비스 애플리케이션에 잘못된 텍스트를 추가합니다.
index.js를 수정하고 throw 줄을
sendEmail() 함수에 추가합니다. 그러면 이메일 서버가 중지된
것처럼 예외가 발생합니다.
이 코드를 추가하면 서비스가 호출될 때 서비스가 비정상 종료합니다.
이메일 서비스 로그를 열어 잘못된 이메일 서비스에 대한 로그를 확인합니다(탐색 메뉴 > Cloud Run).
계정에 3개의 Cloud Run 서비스가 표시되면 email-service를 클릭합니다.
이메일 서비스가 호출되고 있지만 계속 비정상 종료됩니다. 로그에서 조금 뒤로 스크롤하면 '이메일 서버가 중지되었습니다'라는 근본 원인을 찾을 수 있습니다. 또한 서비스가 상태 코드 500을 반환하고 Pub/Sub가 계속해서 서비스 호출을 재시도하는 것을 확인할 수 있습니다.
SMS 서비스의 로그를 보면 성공적으로 작동하는 것을 알 수 있습니다.
이제 이메일 서비스에서 오류를 수정하여 애플리케이션을 복원합니다.
index.js 파일을 열고 이전에 입력한 throw 줄을 삭제한 다음
파일을 저장합니다.
이제 index.js sendEmail 함수가 다음과 유사하게
표시됩니다.
보고서 12, 34, 56의 이메일이 마침내 전송되고 이메일 서비스가 상태 코드 204를 반환하며, Pub/Sub가 서비스 호출을 중단하는 과정을 확인할 수 있습니다. 데이터는 손실되지 않았으며 Pub/Sub는 최종적으로 성공할 때까지 계속해서 재시도했습니다. 이것이 바로 견고한 시스템의 기반입니다.
루비는 여러분의 도움으로 복원력이 우수한 프로토타입 시스템을 성공적으로 구축했습니다. 이 서비스를 통해 모든 고객에게 이메일과 SMS 메시지를 자동으로 보낼 수 있습니다. 개별 서비스가 일시적으로 중지되는 경우에도 시스템에서 재시도 메커니즘을 구현하여 데이터가 손실되지 않도록 합니다. 루비는 그 공로를 인정받았습니다.
|
릴리, Pet Theory 설립자 |
안녕하세요, 루비님. 루비님의 노고와 리더십에 감사드립니다. 아주 짧은 기간 동안 당사의 필수 시스템이 완전히 개편되었습니다. 이를 축하하기 위해 금요일에 작은 모임을 가질 예정인데, 루비님께서 주빈으로 참석해 주시면 정말 감사하겠습니다. 릴리 드림 |
|
|
루비님, Pet Theory로부터 루비님의 업무에 대해 높은 평가를 받았습니다. 팀에 큰 도움이 되었어요. 이제 이 업무를 마치셨으니 새로운 프로젝트에서 더 높은 직책을 맡아주실 것을 제안하고 싶습니다. 멜로디 드림 상무이사 Computer Consulting Inc. |
Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.
설명서 최종 업데이트: 2024년 7월 23일
실습 최종 테스트: 2024년 7월 23일
Copyright 2026 Google LLC. All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 연락드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.