Google Cloud Professional Cloud Architect Certification(구글 PCA 자격증 대비) (1/5)

wonsik·2022년 12월 7일
1

자격증

목록 보기
1/5
post-thumbnail

자격증 신청 이유

회사에서 GCP의 기능 중 Bigquery서비스만 주로 이용하다보니 전반적인 GCP의 생태계에 대해 알고 싶었고, 추후에 웹/앱 개발자나 클라우드 엔지니어 등 더 폭넓은 커리어를 담고 싶어 구글 PCA 자격증을 신청했다.

아래부터는 유데미의 Become a GCP Cloud Architect. Architect Google Cloud Platform (GCP) Solutions. Includes 4 New Case Studies.을 공부하면서 요약한 내용들을 정리하는 글이다.

1. Getting Started

최대 부하 프로비저닝 - 미리 인프라를 구매함: 비싸고 최대하중 계산하기 어려움

특정날을 위해 구매한 인프라는 평소엔 사용하지 않음

위 인프라를 관리하기 위해 인프라 팀이 따로 존재해야함

-> 클라우드로 해결(On-demand resource provisioning)

클라우드 장점

  • Trade "capital expense" for "variable expense"
  • Benefit from massive economies of scale
  • Stop guessing capacity
  • Stop spending money running and maintaining data centers
  • "Go global" in minutes

2. Google Cloud Regions and Zones

Region

런던 리전에 어플리케이션 서버가 있다면?
1. 세계 다른 나라들에게 access가 늦을 것이다: 고지연성(high latency)
2. 어플리케이션이 다운되면 낮은 가용성(low availability)을 갖는다.

-> 런던에 있는 다른 데이터 센터를 추가한다. : 2번은 해결, 1번은 여전히 해결x

런던 전체가 down되면?
다른 나라에 region을 추가한다.

즉 어플리케이션을 여러 지역에 걸쳐 배포하면 사용자에 대한 높은 가용성과 낮은 대기 시간을 갖는다.

전 세계에 데이터 센터를 세우자!
-> 개인적으로 하면 힘들다. 따라서 클라우드를 사용!

Region: Specific geographical location to host your resources

Advantage:

  • High Availability
  • Low Latency
  • Global Footprint
  • Adhere to government regulations

Zone

  • 같은 리전에서 고가용성을 얻기 위함
  • 리전마다 최소 3개의 zone이 존재
  • 구역하나가 crash되어도 애플리케이션은 다른 구역에서 제공될 수 있음
  • 각 zone은 한 개 이상의 cluster가 존재함 (하나 이상의 데이터 센터, cluster: distinct physical infrastructure that is housed in a data center)

3. Google Compute Engine for Professional Cloud Architect

Google Compute Engine

온프레미스 어플리케이션을 배포하고 싶으면 가상 컴퓨터를 생성
GCP에서 가상 컴퓨터 생성하는 방법: Google Compute Engine(GCE) 사용

가상 컴퓨터: GCP 가상 서버

GCE에서 프로비전 가능 - Load balancing and auto scaling 가능

Goal:

  • Setup VM instances as HTTP (Web) Server
  • Distribute load with Load Balancers

가상머신을 만들 때 내린 몇 가지 중요한 선택

  1. 하드웨어
  2. 특정 가상 머신에서 원하는 운영체제와 소프트웨어

하드웨어

  • 머신 패밀리
  • 머신 타입

머신 패밀리

  • General Purpose: 대부분의 작업에 권장. 최상의 가격 성능 비유를 제공.
  • Memory Optimized: high memory workloads
  • Compute Optimized: Compute intensive workloads

머신 타입

How much CPU, memory or disk do you want?

Image

What operating system and what software do you want on the instance?

Type of Images:

  • Public Images: Provided & maintained by Google or Open source communities or third party vendors
  • Custom Images: Created by you for your projects

SSH에서 HTTP server 세팅하기

SSH에
sudo su 입력: root user로 되는 command
apt update 입력: package manager 설치
apt install apache2 입력: Apache(HTTP 서버) 설치
VM 외부ip 클릭 -> 만든 웹 서버 이동
아파치 document roots: /var/www/html -> SSH에 ls /var/www/html 입력 -> index.html 파일 확인

echo "Hello World!" 입력 -> echo "Hello World!" > /var/www/html/index.html 입력: 해당 html 파일을 통해 Hello World를 출력
echo $(hostname) 입력: hostname 출력
echo $(hostname -i) 입력: host의 ip주소를 출력

HTML에 host정보 보내기: echo "Hello World from $(hostname) $(hostname -i)" > /var/www/html/index.html

IP

  • External(Public) IP addresses are Internet addressable
  • Internal(Private) IP addresses are internal to a corporate network

VM 인스턴스 만들 때 최소 한 개의 내부IP가 할당된다.

VM 인스턴스를 위해 외부IP주소가 만들어질 수 있다. 인스턴스 stop 시에 외부IP주소는 사라짐

외부IP주소 달라져서 웹 서버 다시 실행할 때: SSH들어가서 sudo su입력 후 service apache2 start 입력

VM을 재시작할 때마다 외부IP가 바뀌면 웹 서버 운영하기에 힘들다. -> 고정IP부여

고정IP

VPC네트워크에서 설정 가능
IP주소 -> 고정 주소 예약 -> 이름, 네트워크 서비스 계층(프리미엄, 표준), IP버전(IPv4, IPv6), 리전(VM과 같은 리전) -> 예약 클릭

고정IP 유의할점

  • Static IP can be switched to another VM instance in same project
  • Static IP remains attached even if you stop the instance. You have to manually detach it
  • Remember: You are billed for an Static IP when you are NOT using it as well(Make sure that you explicitly release an Static IP when you are not using it)

How do we are reduce the number of steps in creating an VM instance and setting up a HTTP Server?

  • Startup script
  • Instance Templete
  • Custom Image

부트스트랩핑: VM 인스턴스가 실행될 때 소프트웨어나 OS 패치를 설치하는 프로세스

VM에서 Bootstrapping을 위해 Startup script를 구성

새 VM인스턴스 -> 고급 옵션 -> 관리 -> 자동화에

#!/bin/bash
apt update 
apt -y install apache2
echo "Hello world from $(hostname) $(hostname -I)" > /var/www/html/index.html

입력

Instance templates

VM을 만들 때 하드웨어, 소프트웨어 등을 미리 템플릿으로 만들어서 VM 인스턴스 그룹 만들 수 있음

하지만 VM 인스턴스 시작 시 OS 패치와 소프트웨어 설치 시간은 부팅 시간을 증가시킨다.

따라서 인스턴스를 생성할 때마다 많은 소프트웨어나 많은 OS 패치를 설치한다. -> VM인스턴스를 런칭하는데 많은 시간이 걸린다. -> OS 패치와 미리 설치된 소프트웨어로 사용자 지정 이미지를 만든다.

Custom Image

  • Can be created from an instance, a persistent disk, a snapshot, another image, or a file in Cloud Stroage
  • Can be shared across projects
  • (Recommendation) Deprecate old images(& specify replacement image)
  • (Recommendation) Hardening an Image - Customize images to your corporate security standards
  • Startup script는 부팅시간을 오래걸리게 하므로 custom image로 만들면 좋다.

GCE에서 STORGE의 DISK선택 -> Custom Image만들 VM선택 (해당 VM은 stop상태여야 한다!: 현재 running중이면 이미지가 충돌날 수 있음) -> 이미지 생성

해당 이미지에서 바로 VM 인스턴스를 만들 수 있으며, 이 외에도 Instance templates에서 부팅디스크를 만든 이미지로 사용할 수 있다.

Custom Image로 Instance templates를 만든다면 package들을 새로 설치할 필요가 없기 때문에 startup script로 아래 코드를 입력

#!/bin/bash
echo "Hello world from $(hostname) $(hostname -I)" > /var/www/html/index.html
service apache2 start

설치하지 않고 service apache2 start로 아파치를 실행시켜 주기만 하면 된다.

이 후 해당 Instance templates으로 vm instance를 생성

SSH에서 HTTP server 맞게 설치됐는지 확인하기

ls /var/www/html/ -> index.html이 나오면 됨

이 특정 파일에 있는 콘텐츠가 무엇인지 보려면 cat /var/www/html/index.html
해당 출력문이 웹에서 출력되는 내용과 같다.

아파치 서비스가 잘 시작됐는지 확인 : sudo su 입력 후 service apache2 start 입력

4. Instance Group and Load Balancing for Professsional Cloud Architect

Instance Groups

How do you create a group of VM instances?

  • Instance Group - Group of VM instances managed as a single entity(Manage group of similar VMs having similar lifecycle as ONE UNIT

Two Types of Instance Groups:

  • Managed: Identical VMs created using a template:
    • Features: Auto Scaling, auto healing and managed releases
  • Unmanaged: Different configuration for VMs in same group:
    • Does NOT offer auto scaling, auto healing & other services
    • NOT Recommended unless you need different kinds of VMs

Location can be Zonal or Regional

  • Regional gives you higher availability (Recommended)

Creating Managed Instance Group(MIG)

  • 인스턴스 템플릿은 필수적이다.
  • Auto-scaling을 자동화할 수 있도록 인스턴스 갯수를 설정한다.
    • Minimum number of instances
    • Maximum number of instances
    • Autoscaling metrics
      • Cool-down period: Auto-scaling 다시 일어나는데 대기 시간
      • Scale In Controls: 늘어나거나 줄어드는 VM instance 개수 조절
  • Autohealing: Health check를 통해 VM을 없애고 새로운 VM으로 대체(Initial delay를 통해 VM초기화 후 health check 대기)
    • Check interval: 어느 간격으로 health check를 할건지 결정
    • Timeout: 몇 초 동안 응답이 없어야 실패로 간주할 것인지
    • Healthy threshold: 얼마나 많이 연속적인 성공이 일어나는지
    • Unhealthy threshold: 얼마나 많이 연속적인 실패가 일어나는지

GCE -> 인스턴스 그룹

New managed instance group(stateless): 웹, REST API 등에 사용

New managed instance group(stateful): 데이터베이스에 사용

Scale In: Reduce no of VM instances when load decreases

Scale Out: Increase no of VM instances when load increases

Updating a Managed Instance Group(MIG)

Rolling update

Gradual update of instances in an instance group to the new instance template

  • Specify new template:
    • (OPTIONAL) Specify a template for canary testing

기본적으론 롤링 업데이트 사용: 10개 인스턴스를 업데이트 할 때 롤링 업데이트에서 2개씩 업데이트를 지정하면 2개, 2개... 식으로 업데이트를 함

카나리아 테스트를 사용하면 인스턴스 집합을 먼저 테스트함. 두 개의 인스턴스를 먼저 테스트하고 이후에 나머지 8개가 업데이트로 이동

  • Specify how you want the update to be done:
    • When should the update happen?
      • Start the update immediately (Proactive) or when instance group is resized later(Opportunistic)
    • How should the update happen?
      • Maximum surge: How many instances are added at any point in time?
      • Maximum unavailable: How many instances can be offline during the update?

Rolling Restart/replace

재시작 할 때에도 업데이트와 똑같이 지정가능

Cloud Load Balancing

다른 지역에 있는 VM들을 관리

Distributes user traffic across instances of an application in single region or multiple regions

  • Fully distributed, software defined managed service
  • Important Features:
    • Health check
    • Auto Scaling
    • Global load balancing with single anycast IP

Enables

  • High Availability
  • Auto Scaling
  • Resiliency

Clould Load Balancing - Terminology

  • Backend
  • Frontend
  • Host and path rules (For HTTP(s) Load Balancing)

5. Google Cloud Compute Engine & Load Balancing for Architects

Compute Engine & Load Balancing for Architects

  • Build Resiliency
  • Increase Availability
  • Increase Scalability
  • Improve Performance
  • Improve Security
  • Lower Cost

Availability(가용성)

사용자가 원할 때 어플리케이션이 이용가능한지?

Availability가 99.95% -> 1달 downtime: 22min
Availability가 99.99%(four 9's) -> 1달 downtime: 4min 30sec : 대부분 온라인 앱의 목표
Availability가 99.999%(five 9's) -> 1달 downtime: 26sec

고가용성 아키텍처

  • 각 마이크로서비스에 대해 여러 개의 지역적 인스턴스 그룹을 생성할 수 있다.
  • 글로벌 HTTPS 부하 분산 구현을 이용해 둘 사이에 로드를 분산한다.
  • Health Check
  • 실시간 마이그레이션

Scalability(확장성)

사용자, 트래픽, 데이터 사이즈가 커져도 성능이 떨어지지 않으면서 지속될 수 있는가?

가능한 옵션

  • 더 큰 CPU와 메모리를 가진 인스턴스를 배포: Vertical Scaling
  • 인스턴스 수를 늘리고 로드 밸런서를 셋업: Horizontal Scaling

Live Migration

VM을 변경하거나 업그레이드하고 싶을 때 어플리케이션 다운 없이 변경하는 방법

실행 중인 인스턴스가 같은 구역의 다른 호스트로 자동으로 마이그레이션 된다.

Compute Engine Features: GPUs

Add a GPU to your virtual machine:

  • High performance for math intensive and graphics intensive workloads
  • Higher Cost
  • (Remember) Use images with GPU libraries(Deep Learning) installed
  • GPU restrictions
    • 모든 머신 타입에 적용되는 것은 아니다.
    • 실시간 마이그레이션 적용이 불가능하다.
    • VM종료 후 재시작

Security

  • 방화벽 규칙을 사용한다.
  • 최대한 내부 IP주소를 사용한다.
  • 단일 테넌트 노드를 사용한다.
  • 단단한 커스텀 이미지를 만들어서 사용한다.

Performance

  • 알맞은 머신 패밀리를 사용한다.
  • GPU, TPU를 사용하여 퍼포먼스를 증가시킨다.
  • 커스텀 이미지를 만들어서 VM이 시작될 때 퍼포먼스를 향상시킨다.

Resiliency(탄력성)

하나 이상의 파트에서 시스템 실패가 일어나도 용인할 수 있는 능력

  • 로드 밸런서를 만들어서 한 곳에서 오류가 일어나도 다른 곳에서 커버가 가능하도록 한다.
  • 알맞은 양의 데이터를 사용한다.
  • 모니터링을 사용한다.
  • Cloud Logging을 사용한다.
  • 예상치 못한 상황을 대비한다.(Health Check)

Sustained use discounts(비용 절감)

  • 지속 사용 할인(25%이상으로 사용)
  • Applicable for instances created by Google Kubernetes Engine and Compute Engine

Preemptible VM

  • Short-lived cheaper

단기간에 아주 저렴한 컴퓨트 인스턴스로 비 즉각적이고 오류 내성적인 작업을 실행하는 데 사용할 수 있다.

만약 직접적이지 않은 배치 프로그램이 있어서 아주 낮은 비용으로 실행하고 싶다면 Preemptible VM을 선택할 수 있다.

profile
새로운 기술을 배우는 것을 좋아하는 엔지니어입니다!

0개의 댓글