GCP IP Address 經常是分配給 GCP VM Instance 和 GCP Load-Balancer 使用,讓他們可以和 GCP 其他雲端資源,或者是外部公共網路上的系統通訊。IP Address 劃分也蠻多的,會使用以下種類來描述不同的類型:
- Internal IP Address <=> External IP Address
- Private IP Address <=> Public IP Address
- Ephemeral IP Address <=> Static IP Address
- Regional IP Address <=> Global IP Address
此篇會全部做簡單的介紹。而在使用 IP Address 也常發生一些使用上的疏忽,例如一直 reserve IP 卻沒有使用它,因為 IP 算是稀有資源,如果有保留固定 IP ,就算沒有使用還是會持續計費的,而且會更貴!
Virtual Private Cloud 虛擬私有雲網路,可簡寫成 VPC、網路、VPC Network、Network 等等都可以,是 Google 使用 Andromeda(/ænˈdrɑː.mə.də/) 網路虛擬化技術實現的一個雲端資源,提供如 GCP-VM、GKE、Serverless Workloads 和 App Engine 等等雲端服務的網路功能,能讓 User 可以高自由度地建立管理和優化網路架構。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : Amazon VPC
- Microsoft Azure : Azure Virtual Network
GCP-VPC 和 AWS-VPC 架構上蠻不一樣的,GCP-VPC 是全球性的,只要在同一個 GCP-VPC 內,就算不同 Region 也能使用 Internal IP ; 但如果是不同的 GCP-VPC 就算在同一個 Region 也不能互相通訊。而 AWS-VPC 是針對 Region 來設計的,故只要跨 Region 就不是內網無法直接溝通需再多做其他設定。
Instance Template 一個用於定義 GCP VM instance 配置的模板,其中包括如 machine type、bootdisk、startup script 等等實例屬性,基本上都是和 Managed Instance Groups 結合使用來自動創建 VM instance。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : Launch Template
- Microsoft Azure : 沒有直接類似的,在 Virtual Machine Scale Sets 內直接設定 VM 所需參數
概念上就是做好 VM 的模板,讓 VM 啟動完成後直接就可以達到我們想要的狀態,從這個方向出發的話 Instance Template 其實和 Startup Script、Custom Image 都蠻類似的,等等都會介紹和比較一下。
Compute Engine 是託管在 Google 雲端上基礎架構即服務 (IaaS) 產品,其他的稱呼還有 compute engine instance 、 virtual machine instance 、 VM instance。 對應其他的雲端服務是 :
- Amazon Web Services (AWS) : EC2
- Microsoft Azure : Virtual Machine
啟動前可以訂製自己需要的 Machine Type ,例如 CPU、memory、disk 等等;再來 Boot disk OS 也可自行選擇 Linux 、 Windows 等等操作系統;針對容器虛擬化,可能使用專門優化來運行容器的 Container-Optimized OS (COS) image 在虛擬機上啟動容器服務。最後關於備份資料,GCP 也有提供相應的服務來面對災難發生時的處理。
Language Server Protocol 簡稱 LSP ,是微軟於 2016 製定的 Protocol 協定,專門用來輔助 Visual Studio Code 開發用的,目標是讓 Code-Editor 能便利地支援更多的程式語言。設計理念是把語言撰寫領域模型如:自動補全、引用定義、類型檢查器等等,這些提供輔助功能的部分拆出去用「公定的介面」來做溝通,給各自領域的人開發。
LSP 專門用於描述 Code-Editor 中,用戶行爲與響應之間通訊方式和傳輸資料結構,像是 VSCode 的 IntelliSense 提供的 auto-completion 就可以基於這個協定支援更多不同的 coding language。 現在支援 LSP 的 Code-Editor 也不少,除了 VSCode 還有 Eclipse 、 Vim 、 NeoVim 都已經支援了,可以在 langserver.org 可以看到各個 client 的支援狀況。
「 整合式開發環境 Integrated Development Environment 簡稱為 IDE 」 ,是一種程式開發軟體,通常只針對特定語言,且有應用程式生命週期管理(Application lifecycle management)簡稱 ALM 的功能 ; 另一方面「 文字編輯器 Text Editor 」通常只提供如複製、剪下、貼上、搜尋、取代等文字操作功能,但現在兩者已經沒有區分的這麼明顯了,原因就是 VSCode 的出現很大了融合了兩者。 VSCode 其定位採用核心是 <Text Editor + code understanding + debug>,並以檔案夾作為專案管理,保持輕量與高性能,但還是提供強大的支援語法。
與許多程式編輯器一樣,VSCode 也採用通用 layout,設計理念是希望可以提供簡單直覺的排版,讓使用者可以直觀的選取檔案並閱覽、編輯檔案,本文章首先討論 Workbench 的定義和介紹 vscode layout 的各個名稱。