---
tags: Blue 的學習紀錄
---
# Google Cloud Certification - Associate Cloud Engineer

> <https://www.credential.net/ea496d98-9cdd-4fd3-a5fb-145652797241>
考到啦~~
ExamTopics 超好用,在考試中看到好多一模一樣的題目
下面內容是我在準備過程中所做的紀錄
---
**目標:**
<https://cloud.google.com/certification/cloud-engineer>
**考試內容:**
<https://cloud.google.com/certification/guides/cloud-engineer>
**ExamTopics 刷題筆記(不公開):**
<https://docs.google.com/document/d/11o45Z3TZT73kNQokfy_tbCmr-2vk4-Pqzn71mQdhDJ4/edit#>
選擇放 google doc 的原因是圖片是儲存在文件裡,而不是另一個外部空間
不公開的原因是我直接將題目圖片截圖至文件中,怕有侵權疑慮所以不公開
**考試地點 & 日期:**
我選擇實體考試,而非線上
地點:
[台北恆毅考試中心](https://www.uuu.com.tw/About/tpe)
[Google Map 地點](https://goo.gl/maps/SBnM5BMozsZKLZ3J9)
交通方式:
文湖線 - 南京復興站 - 7 號出口
考試時間:
2022/10/31(一) 13:30
## Exam Pro 影片隨手筆記
<https://www.youtube.com/watch?v=jpno8FSqpc8>
### Cloud Service Models
<https://www.youtube.com/watch?v=jpno8FSqpc8&t=3613s>
- IaaS: Infrastructure as a Service
例如 Linode、Google Compute Engine
從作業系統開始,使用者來負責
底層網路、機器的運行由服務端負責
- PaaS: Platform as a Service
例如 Heroku
應用程式由使用者來負責
runtime、OS 由服務端來負責
- SaaS: Software as a Service
例如 Gmail、MS Office 365
這些分類的目的在於==責任如何分配==
### Google Cloud Global Infrastructure
<https://www.youtube.com/watch?v=jpno8FSqpc8&t=4102s>
- zone
gcp network 裡的最小單位
範例:`us-east4-a`, `us-east4-b`
- region
由 zone 所組成
一個 region 具有高可用的特性
region 內的 zone 的相互通訊時間小於 5ms
### Compute Service Options
<https://www.youtube.com/watch?v=jpno8FSqpc8&t=4519s>
- serverless & fully managed
[解釋 serverless 和 fully managed](https://cloud.google.com/blog/topics/developers-practitioners/serverless-vs-fully-managed-whats-difference)
> serverless:
> I code my application or service and I don't care where it run..just make sure my user is able to get to it when they try.
>
> fully managed:
> I care how and where my service runs because I have a specific type of service that needs more control over the underlying resources and… my application/team benefits from the extra controls.
**serverless:**
只管寫程式,完全不管硬體相關的事情
例如跑在哪台機器上、有幾台機器、機器的運算能力和儲存空間等等,這些都不關心
收費方式舉例:request 的數量、function 被呼叫的次數、使用了多少資源
**fully managed:**
除了程式碼,同時也關心硬體的事情
可以控制有幾台機器在跑,機器各自的運算能力如何等等
讓使用者可以輕易規劃 High Availability (HA) 和 Disaster recovery (DR)
收費方式舉例:以機器運行的時間來計算(所以就算實際上機器沒有任務執行,錢也會照算)(compute engine)
- Compute Engine
IaaS
一台 VM 會稱為一個 instances
可部署在特定的 zone 之內
可決定 VM 所要運行的 OS
透過 `instance group` 來管理多個 VM,autoscaling
- Google Kubernetes Engine - GKE
CaaS - Container as a Service
建立在 k8s 之上的一個圖形化介面平台
幫助使用者關於 k8s 的使用
gke 會使用 Compute Engine 來當作 k8s 裡的 node
- App Engine
<https://cloud.google.com/appengine/docs>
PaaS
## Google Cloud Fundamentals: Core Infrastructure
<https://www.cloudskillsboost.google/course_templates/60>
### CH.1 Introducting Google Cloud
GCP 的 IaaS 服務是以秒計費的
關於 compute engine 的計費,若使用的時間超過 1/4 月
1/4 月後的時間都會有折價
關於價錢的控制,有幾種方法:
- 設定 budget
可以在 billing account 或 project level 設定預算
預算可以是固定的數字或是某種規則的變數,例如上個月的 110%
- 設定 alert
例如當預算達到 90% 時,就會進行通知
- 使用 report
report 是 GCP 的一個視覺化工具,可以查看目前的支出
- quota
可防止服務因被攻擊或不預期的錯誤導致的過度消耗
quota 有分兩種,兩種都屬於 project level:
- rate quota
會在特定時間之後重置,例如:
在預設情況下,GKE 會配置給每個 project 每 100 秒只能 1000 個 API call
100 秒後,數字就會重置
- allocation quota
管理著 project 所能擁有的 resource,例如:
在預設情況下,每個 project 只能擁有 5 個 VPC
這些 quota 可向 google cloud support 進行申請提升
### CH.3 Resources and Access in the Cloud
#### Google Cloud resource hierarchy
Organization -> Folder -> Project -> Resources
Policy 可以定義在 Organization, Folder, Project
少部分的 Resource 可以設定 Policy
Policy 的設定會延伸至較下面的層級
譬如設定 Organization 的 Policy,則所有 Folder 也會沿用此 Policy
一個 Resource 只能屬於一個 Project
Project ID 為 Global unique,而且無法變更
Project Name 可以任意變更
Folder 可以 nest
可再放 Folder,或是 Project
Folder 並不是必備,可以沒有 Folder 層
但 Folder 的建立一定需要 Organization Node
Organization node 的建立會因為使用者是否為「Google Workspace customer」而有所不同
如果是,則 Project 會自動屬於使用者的 Organization node
若不是,則可以使用 Cloud Identity 來新建 Organization node
#### IAM
IAM 在做的,是在定義**誰**可以在**哪個資源**上面**做什麼事**
**誰**:
- Google account
mail
- Google group
Google account 的集合
- Service account
給 service 所使用,例如 VM
- Cloud Identity domain
**做什麼事**:
能做什麼事由 **role** 來定義
role 則是由數個 permission 所組成
role 可以分成三類:basic、predefined、custom
- basic
並不如字面上 basic,而是在影響著 project 之下的所有資源
basic 之中有四種 role:

- owner
可以增刪查改、管理 project 之下的所有資源和權限,管理 billing
- editor
可以查看及編輯 project 之下的所有資源
- viewer
只能查看 project 之下的所有資源
- billing admin
可以查看 project 之下的所有資源,管理 billing
basic 的權限相當廣大,若是在一個多人協作的 project 中,非常不適合使用這個 role
- predefined
由各別 google service 所提供的 role
所擁有的 permission 會依據 service 而有所不同
- custom
可以自定義一個 role 所擁有的 permission
只能用在 organization 或 project level,不能用在 folder level
#### 與 GCP 互動的四種方式
- Google Console
GCP web-based 圖形化介面
- Cloud SDK and Cloud Shell
- Cloud SDK
GCP 上的一堆工具,例如:
- gcloud tool
提供主要的 command-line interface 給 Google Cloud 上各個服務
- gsutil
提供以 command line 的方式存取 Cloud Storage
- bq
BigQuery 的 command line 工具
- Cloud Shell
得以用 command line 在瀏覽器上操作 cloud resource
Cloud Shell 是一個 Debian-based 的 VM,並且配有 5GB 的使用空間
Cloud SDK 可在 Cloud Shell 內使用
Cloud Shell 內的資料,除了 `./home` 以下之外,每個小時就會被洗掉
- APIs
Google APIs Explorer 可以查看所有可用的 API
- Cloud Console Mobile App
#### Load Balancing
load balancer 的種類
- Global HTTP(S)
cross-regional for web application
- Global SSL Proxy
For Secure Sockets Layer traffic
- Global TCP Proxy
TCP traffic that doesnt use SSL
- Regional
across region
UDP traffic
traffic on any port number
- Regional internal
load balance traffic inside your project
### CH.4 Virtual Machines and Networks in the Cloud
#### VPC - Virtual Private Cloud
Public Cloud - 所有組織共用一份 infrastructure
Private Cloud - 一份 infrastructure 只有一個組織在使用
Virtual Private Cloud - 用起來像是一個組織一份 infrastructure,但其實是所有組織在共用
#### 與 VPC 連線的方法
- 使用 VPN(Virtual Private Network)
IPsec VPN protocol、Cloud Router、Border Gateway Protocol
- Direct Peering
Peering 表示將 router 放在公開的資料中心,例如 Google
資料將在這個資料中心進行 exchange
- Carrier Peering
service provider's network 提供
- Dedicated Interconnect
提供 SLA 99.99% 的連線服務
- Partner Interconnect
???
#### VPC network
Routes 負責告訴 VM 及 VPC network 如何溝通
- allow-custom
內部可以 ping 內部
- allow-icmp
內部可以 ping 外部
<https://cloud.google.com/vpc/docs/subnets>
Virtual Private Cloud (VPC) networks 是一種 global resources
每個 VPC network 包含了多個 IP 區段,又稱為 subnet
subnet 為 regional resources
#### Compute Engine - 計費方式
- 費用以運行的時間做為計算,時間單位為"秒"
- 當運行超過 1/4 個月之後,在 1/4 個月之後開始就會有折扣
- 若已知一年或三年內所需的運算資源是固定不變動的,可以使用 commited-use 的方式,會有折扣
- 一次性的任務,可以使用 Preemptible VM,比較便宜
### CH.5 Storage in the Cloud

- Cloud Storage
一種 object storage
- 什麼是 object storage?
windows 作業系統中的檔案就是 file storage,意思是每個檔案都擁有特定路徑,資料存放於特定層級之中
object storage 中的資料則沒有層級的概念,並且所有檔案都會有額外的 metadata,讓資料容易地被辨識,以便可以找到
- `bucket`
Cloud Storage 的檔案藉由 bucket 來管理
bucket 需要 global unique name 及特定的地理資訊
- 不可編輯,只能覆蓋
Cloud Storage 中的資料無法進行編輯,只能覆蓋新的檔案
- version control
管理者可以決定每個 bucket,對於新檔案是要直接覆蓋
還是 Cloud Storage 會追蹤檔案變更的地方(像 git)
並且可以將檔案回復到特定版本
- 檔案的生命週期管理政策
例如,可以設定自動刪除放置了一年的檔案
或是當開啟版本控制時,設定只保留最新的三個版本
- Cloud Storage,依據檔案的存取頻率,可以再細分為四類
- Standard Storage
頻繁的讀取,hot data
或是生命很短暫的
- Nearline Storage
"建議"存放大約一個月才會存取一次的資料
- Coldline Storage
90 天"只能"讀取一次的資料
- Archive Storage
365 天"只能"讀取一次的資料
- 上傳資料的方式
- gsutil
由 cloud SDK 提供的 command line tool
- cloud console
從 gui 頁面上直接上傳
- Storage Transfer Service
提供大型資料(例如 TB 等級)的上傳管道
可以管理 batch transfers 的方式
從其他 cloud provider, 其他 cloud storage region 或特定 HTTP(S) endpoint
- Transfer Appliance
一個 server
將 server 連到特定的網路下,就可以將網路內的資料上傳至 cloud storage
- Cloud SQL
提供 relational databases 的服務,例如 MySQL, PostgreSQL
- Cloud Spanner
同樣提供 relational database 的服務,但特別適用於以下情境:
- 有 joins 和 secondary indexes 的需求
- Built-in high availability
- Strong global consistency
- Database sizes that exceed 2 terabytes
- Higt throughput per second,每秒破萬的讀寫
- Firestore
NoSQL cloud database
資料的單位是 document,collection 內會有多個 document,就像是 MongoDB
擁有每日 free quota
- Cloud Bigtable
NoSQL big data database service
目標是要能處理大量的 workload
所以很適合應用於需要處理大量資料的場景,例如 IOT, 金融資料, 機器學習
### CH.6 Containers in the Cloud
k8s 已經有點熟了,所以這裡不做紀錄
#### Anthos
hybrid and multi-cloud solution
內建 k8s 及 GKE
讓 k8s 可在多個雲之間運行著
### CH.7 Applications in the Cloud
#### App Engine
PaaS 平台,使用者只需選擇要使用的程式語言、框架,App Engine 負責建置 server
使用步驟:
- 在地端開發 app
- 使用 SDK 進行部署
- App Engine 自動運行 app
依據環境可以分成兩種:
<https://cloud.google.com/appengine/docs/the-appengine-environments>
- standard
應用程式將運行在 sandbox 之內,意思是我們完全不用關心程式碼的運行環境
但是 runtime 被限定只能使用 GCP 所支援的項目,包含程式語言及其版本的選擇
因此擁有最快的執行速度及最低的成本
計費方式以所選擇的 instance 的啟動時間來計算
- flexible
應用程式會運行在 Compute Engine VM 的 Docker container 之內
App Engine 幫使用者管理 Compute Engine
意思是自動做 health-check、自動更新 OS、每周重啟
使用 Dockerfile 來自定義 runtime
支援任何版本的 Python, Java, Node.js, Go, Ruby, PHP, or .NET
計價方式以 vCPU, memory, and persistent disks 的使用量
<https://cloud.google.com/appengine/docs/the-appengine-environments#compare_high-level_features>
| | Standard | Flexible |
|:-----------------:|:------------------------------------:|:-----------------------------------------------------:|
| Instance 啟動時間 | 秒 | 分鐘 |
| SSH | 不行 | 可以(預設不行) |
| 寫入 local disk | 不行(有些 runtime 可以讀寫 `/tmp`) | 可以,ephemeral (disk initialized on each VM startup) |
App Engine Standard 的作用在於讓使用者免除部屬及 scaling 的問題
GKE 則是幫助使用者使用 k8s
App Engine Flexible 則介於以上兩者之間
#### Cloud Endpoints & Apigee Edge
- Cloud Endpoints
類似於 AWS API Gateway
可以宣告多個 API
- Apigee Edge
一樣類似於 API Gateway
但是可以做到 rate limiting, quotas, analytics
Apigee Edge 的 server 不必放在 GCP 內
#### Cloud Run
運行 stateless 的 container
serverless,完全不用管 infra
建立在 knative 上,背後是 k8s
啟動速度很快,能夠 auto scaling
以所使用到的計算資源為計費
將應用程式的 image 上傳至 Artifact Registry 後即可部屬到 Cloud Run
也可以直接上傳 source code,Cloud Run 自動 build 成 container
### CH.8 Developing and Deploying in the Cloud
- Cloud Source Repositories
應該類似於 Github 和 Gitlab,只是是在 GCP 上,並且能與 GCP 上的其他服務有更好的整合
- Cloud Functions
類似於 AWS Lambda
#### Terraform: Infrastructure as Code
所謂 "Infrastructure as Code" 指的是,讓 infra 這件事情就像是寫 code 一樣
使用 Terraform 就可以寫 template,讓 infra 照著所寫的 template 而去生成
### CH.9 Logging and Monitoring in the Cloud
這個章節主要在講 logging 及 monitoring
收集資料,進行處理,呈現 real-time 的系統資料
關於一個系統穩定性的描述,有 4 個項目:
- latency
- traffic
- saturation
- errors
#### SLI, SLO 和 SLA
定義一個 service 的可用性
靠的是 SLI, SLO 和 SLA 這三個指標
- SLI: Service level indicators
用來衡量服務使用情況的量化指標
各指標建議以 `good event / all event` 的形式呈現
例如 `200 request / all request`
- SLO: Service level objective
SLO 是 SLI 再加上時間的描述
例如一個月內的 SLI 均維持在 99.9% 以上
- SLA: Service Level Agreements
SLA 是對於客戶所承諾的服務品質,通常基於 SLO 來決定
參考資料:
<https://ikala.cloud/understanding-sli-slo-sla-in-sre/>
#### Log
- Cloud Audit Logs
Who did what, where, and when?
- Agent Logs
看不懂
似乎是任意 VM 上的 log,即使是外部服務?
- Network Logs
- Service Logs
## Essential Google Cloud Infrastructure: Foundation
<http://cloudskillsboost.google/course_templates/50>
### Projects, networks, and subnetworks
#### Network
一個 project 預設可以擁有 5 個 network
一個 project 中的 network,有三種模式:

- default
每個 project 預設會給予的 default network
- 每個 region 就有一個 subnet
- default 的 firewall
- auto mode
建立於 default network 之上
- custom mode
## Getting Started with Google Kubernetes Engine
<https://www.cloudskillsboost.google/course_templates/2>
### CH.3 Introduction to Containers and Kubernetes
Compute Engine offers a feature called managed instance groups
With these, you can define resources that are automatically deployed to meet demand.
GCP enables fine-grain control of costs of Compute Engine resources by providing per second billing.
### Introduction to Kubernetes Workloads
## Resources
<https://github.com/sathishvj/awesome-gcp-certifications>
<https://www.cloudskillsboost.google/course_templates/77?locale=zh_TW>