Google GCP 클라우드

GCP Associate 자격증 준비 - Google Cloud Platform 핵심 요약 (Development, Cloud Functions, Monitoring)

슬기로운IT생활 2022. 7. 15. 22:03
728x90

GCP Associate 자격증 시험 준비를 위해서 Coursera에서

Architecting with Google Cloud Compute Engine 특화 과정을 수강했다

우선 강의에서 배운 내용을 순서대로 따라가면서 간단하게

Cloud Source Repositories, Cloud Functions, Monitoring 및 연습 문제에 대해서 포스팅하겠다.

1. Development in the cloud

Cloud Source Repositories

많은 GCP 고객이 git을 사용하여 소스 코드 트리를 저장하고 관리함

즉, 자체 git 인스턴스를 실행하거나 호스팅 된 git 공급자를 사용하는데

Cloud Source Repositories를 이용하면 코드를 GCP 프로젝트에 비공개로 유지하고

IAM 권한을 사용하여 보호하는 방법을 사용하면서 직접 git 인스턴스를 유지할 필요가 없음

App Engine, Compute Engine, Kubernetes Engine에서 실행되는 애플리케이션 또는 서비스를 포함하여

모든 애플리케이션 또는 서비스에 대한 팀의 개발을 지원하는 git 버전 제어를 제공함

원하는 수의 비공개 git 저장소를 보유할 수 있어 자신에게 가장 적합한 방식으로

클라우드 프로젝트와 연결된 코드를 구성할 수 있음

또한, GCP 콘솔 내에서 저장소 파일을 찾아보고 볼 수 있도록 소스 뷰어도 포함되어 있음

Cloud Functions

Cloud Functions를 사용하면 서버 또는 런타임 바이너리에 대해 걱정할 필요가 없음

GCP가 제공하는 Node.js 환경용 자바스크립트로 코드를 작성한 다음 실행 시기만 구성하면 됨

서버 비용을 지불할 필요도 없음. 한수가 실행될 때마다 100밀리 초 간격으로 비용만 지불하면 됨

Cloud Functions은 Cloud Storage, Cloud Pub/Sub 또는 HTTP 호출에서 이벤트 트리거가 가능함

Cloud Functions이 동작하는 방법은 다음과 같음

관심 있는 이벤트를 선택 -> 각 이벤트 유형에 대해 Cloud Functions에 관심이 있음을 알림

이러한 선언을 트리거라고 하며, JavaScript 함수를 트리거에 연결하면 이벤트 발생할 때마다 함수가 응답함

Cloud Functions은 확장에 대해 걱정할 필요 없이 애플리케이션을 운영할 수 있는 장점이 존재함

연습 문제

1. Why would a developer choose to store source code in Cloud Source Repositories? Choose all the answers that are correct (2 correct answers)

A. To reduce work

B. To have total control over the hosting infrastructure

C. To keep code private to a GCP project

정답 : A, C


2. Infrastructure as code

템플릿을 사용하면 GCP 환경에서 설정할 수 있는 컴퓨팅 네트워크 및 저장소 리소스 설정, 구성 추적 등 여러 단계를 효율적으로 사용할 수 있으며 GCP에서 제공하는 서비스로 Deployment Manager가 존재함

Deployment Manager는 GCP 리소스 생성 및 관리를 자동화하는 인프라 관리 서비스

이를 사용하려면 YAML 마크 업 언어 또는 환경 구성 요소의 모양을 설명하는 Python을 사용하여

템플릿 파일을 생성함. 이후 템플릿이 설명하는 환경을 만드는데 필요한 작업을 파악하고

수행하는 Deployment Manager 템플릿을 제공

환경을 변경해야 하는 경우 템플릿을 편집한 다음 Deployment Manager에 변경 사항에 맞게

환경을 업데이트하도록 지시함

Tip : Cloud Source 저장소에 Deployment Manager 템플릿을 저장하고 버전을 제어할 수 있음

연습 문제

1. What is the advantage of putting event-driven components of your application into Cloud Functions?

A. Cloud Functions handles scaling these components seamlessly

B. Cloud Functions means that processing always happens free of charge

정답 : A

event-driven : 이벤트 중심

seamlessly : 원활하게


3. Monitoring

애플리케이션을 안정적으로 운영하기 위해서 모니터링은 필수

모니터링을 통해 변경 사항이 문제없는지 파악할 수 있음

Stackdriver는 모니터링, 로깅, 진단을 위한 GCP 도구

인프라 플랫폼, 가상 머신, 컨테이너, 미들웨어 및 애플리케이션 등급, 로그,

측정 항목 및 추적에서 다양한 종류의 신호에 액세스할 수 있음

애플리케이션의 상태, 성능 및 가용성에 대한 통찰력을 제공하여 문제가 발생하면 빠르게 해결할 수 있음

Stackdriver의 핵심 구성 요소는 모니터링, 로킹, 추적, 오류 보고, 디버깅

클라우드 환경에서 실행되는 웹 애플리케이션 및 기타 인터넷 액세스 가능 서비스의 엔드 포인트를 확인

URL, 그룹 또는 인스턴스 및 로드 밸런스와 같은 리소스와 관련된 가동 시간 확인을 구성할 수 있음

상태 확인 결과 또는 가동 시간이 조치가 필요한 수준으로 떨어질 때 경고를 설정할 수 있음

많이 사용되는 알림 도구와 함께 모니터링을 사용할 수 있고 APP 상태 시각화를 위한 대시 보드를 생성 가능

Stackdriver Logging 사용 시 애플리케이션 로그를 보고 필터링 및 검색 가능

로깅을 사용하면 대시 보드 및 경고에 통합된 로그 내용을 기반으로 메트릭을 정의할 수 있음

BigQuery, Cloud Storage, Cloud Pub/Sub으로 로그를 내보낼 수도 있음

Stackdriver Error Reporing은 APP의 오류를 추적하고 그룹화하며 새로운 오류가 감지되면 알려줌

Stackdriver Trace를 사용하면 웹 엔진 애플리케이션의 지연 시간 샘플링, RUL 별 통계를 보고 할 수 있음

Stackdriver Debugger는 애플리케이션 프로덕션 데이터를 소스 코드에 연결하여

프로덕션의 모든 코드 위치에서 상태를 검사할 수 있음 (로깅 문 추가 없이 애플리케이션 단계 확인 가능)

또한 Cloud Source Repositories와 같이 애플리케이션 소스 코드를 사용할 수 있을 때 가장 잘 동작함

물론 다른 저장소에도 있을 수 있음

실습

1) GCP 콘솔 탐색 메뉴에서 API 및 서비스 클릭

- Deployment Manager 배포 만들기

2) GCP 콘솔에서 Cloud Shell 클릭 후 터미널 실행

3) 편의를 위해 할당받은 Region을 MY_ZONE이라는 환경 변수에 배치 (예 : us-central1-a)

export MY_ZONE=us-central1-a

4) 편집 가능한 Deployment Manager 템플릿을 다운로드 수행

gsutil cp gs://cloud-training/gcpfcoreinfra/mydeploy.yaml mydeploy.yaml

5) 다음 명령으로 자리 표시 자 문자열을 GCP 프로젝트 ID로 변경

sed -i -e "s/PROJECT_ID/$DEVSHELL_PROJECT_ID/mydeploy.yaml

6) 다음 명령으로 자리 표시자 문자열을 GCP 영역으로 변경

sed -i -e "s/ZONE/$MY_ZONE/" mydeploy.yaml

7) mydeploy.yaml 파일 확인

cat mydeploy.yaml

8) 템플릿에서 배포를 빌드

gcloud deployment-manager deployments create my-first-depl --config mydeploy.yaml

9) GCP 콘솔에서 Compute Engine > VM 인스턴스 클릭 후

템플릿에서 지정한 대로 my-vm이라는 VM 인스턴스가 생성된 것을 확인

세부 정보 중 사용자 지정 메타 데이터 섹션 내 Deployment Manager 템플릿에

지정한 시작 스크립트가 설치되었는지 확인

- Deployment Manager 배포 업데이트

10) Cloud Shell 프롬프트로 돌아가서 nano 편집기 실행

nano mydeploy.yaml

11) 시작 스크립트의 값을 설정하는 라인을 찾아 편집 후 저장 및 종료

value: "apt-get update; apt-get install nginx-light -y"

12) Cloud Shell 프롬프트로 돌아가서 다음 명령어 입력하면

Deployment Manger가 새 시작 스크립트를 설치하도록 배포를 업데이트

gcloud deployment-manager deployments update my-first-depl --config mydeploy.yaml

13) GCP 콘솔 메뉴에서 Compute Engine > VM 인스턴스 클릭 후 my-vm VM 인스턴스 이름을 클릭

세부 정보 창에서 사용자 지정 메타 데이터 섹션에 시작 스크립트가 업데이트되었는지 확인

- Stackdriver Monitoring을 사용하여 VM 부하 확인

14) GCP 콘솔에서 Compute Engine > VM 인스턴스 클릭 후 my-vm 확인란 선택 후 STOP 클릭

15) VM 인스턴스 세부 정보 화면을 열고 편집을 클릭

16) 서비스 계정 드롭 다운에서 Compute Engine 기본 서비스 계정을 선택 및

액세스 범위의 모든 Cloud API에 대한 전체 액세스 허용을 선택 후 저장

17) my-vm 인스턴스에서 SSH 클릭 후 터미널 접속

18) 다음 명령을 실행하여 CPU 로드를 생성

dd if=/dev/urandom | gzip -9 >> /dev/null &

이 Linux 파이프라인은 CPU가 연속적인 임의 데이터 스트림을 압축하도록 강제함

19) GCP 콘솔에서 탐색 메뉴 > 모니터링 클릭하여 대시보드 생성

20) 왼쪽 패널에서 설정 옵션 클릭 후 GCP 프로젝트가 GCP 프로젝트 섹션 아래에 표시되는지 확인

21) VM 인스턴스의 SSH 창 화면에 표시된 명령어를 실행하여

모니터링 에이전트와 로깅 에이전트 모두 설치

curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh

sudo bash install-monitoring-agent.sh

 

curl -sSO https://dl.google.com/cloudagents/install-logging-

sudo bash install-logging-agent.sh

22) VM에 두 에이전트가 모두 설치되면 맨 왼쪽의 기본 Stackdriver Monitoring

메뉴 아래에 있는 측정 항목 탐색기를 클릭

23) 메트릭 탐색기 자원 유형 선택하여 VM 인스턴스 및 CPU 사용량에 대해

그래프에서 몇 분 전에 CPU 사용량이 급격히 증가했음을 확인

24) 워크 로드 생성기 종료 후 my-vm의 SSH 세션에서 아래 명령 입력하여 종료

kill %1

테스트

1. Why might a GCP customer to use Cloud Source Repostories?

A. They want to host and manage their own git instance, and they want to integrate with IAM permissions

B. They don't want to host their own git instance, and they don't want to integrate with IAM permissions

C. They want to host and manage their own git instance, and they don't want to integrate with IAM permissions

D. They don't want to host their own git instance, and they want to integrate with IAM permissions

정답 : D


2. Why might a GCP customer choose to use Cloud Functions?

A. Cloud Functions is a free service for hosting compute operations

B. Cloud Funcions is the primary way to run Node.js application in GCP

C. Their application has a legacy monolithic structure that they want to break apart into microservices with little developer effort

D. Their application contains event-driven code that they don't want to have to provision compute resources for

정답 : D

effort : 노력

event-driven : 이벤트 중심


3. Why might a GCP customer choose to use Deployment Manager?

A. Deployment Manager enforces maximum resource utilzation and spending limits on your GCP resources

B. Deployment Manager is an infrastructure management system for GCP resources

C. Deployment Manager is an infrastucture management system for Kubernetes pods

D. Deployment Manager is a version control system for your GCP infrastructure layout

정답 : B

enforces : 시행


4. You want to define alearts on your GCP resources, such as when health checks fail. Which is the best GCP product to use?

A. Cloud Functions

B. Stackdriver Monitoring

C. Stackdriver Debugger

D. Deployment Manager

E. Stackdriver Trace

정답 : A, B


5. Which statements are true about Stackdriver Logging? Choose all that are true (2 statements)

A. Stackdriver Logging lets you define metrics based on your logs

B. Stackdriver Logging lets you view logs from your applications, and filter and search on them

C. Stackdriver Logging requires that you store your logs in BigQuery or Cloud Storage

D. Stackdriver Logging requires the use of a third-party monitoring agent

E. Stackdriver Logging lets you define uptime checks

정답 : A, B

728x90