iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

SQL與NoSQL

選擇資料庫上 大致會區分成兩個方向SQL DataBase和 NoSQL DataBase

  • SQL(Structured Query Language),結構化查詢語言,是一種特定目的程式語言,用於管理關聯式資料庫管理系統(RDBMS),而關聯式資料庫伺系統代表的有Oracle、Microsoft SQL
    Server、MySQL(Mariadb)、PostgresSQL。
  • NoSQL DataBase,不同於傳統的關聯式資料庫的資料庫管理系統的統稱,代表的有Redis、Cassandra、MongoDB。

SQL/NoSQL Server雲端如何規劃

如果使用雲端主機商建立SQL Server ,大概就是以下兩種方式

  • 自行建立
  • 使用雲端代管的服務

如果預算比較少的外包案件,會採取拉單台Virtual Machine(VM)(對應GCP上的服務為Google Compute Engine (GCE)) 建置SQL主機,但是一但自行架設,除了SQL主機本身事務外(服務設定、升級、備份策略..etc),還需要處理VM上的其他問題(OS版本Kenerl升級、主機防火牆組態設定…etc),但隨著專案成長,瀏覽人數越來越大,需要考慮的事情會越來越多(是否需要HA,有沒有辦法read&write分離…etc),所以我們這邊採取GCP Cloud SQL全代管關聯資料庫服務。

Cloud SQL全代管關聯資料庫服務

在前面段落中提到資料庫可以選擇SQL與NoSQL,且考量到以下兩個面向

  • 專案時間
  • 成員技能的成熟度

所以最後團員表決下選擇使用SQL。

CloudSQL選擇有三種MySQL、PostgreSQL 和 SQL Server, 在三套都非常優異的RDBS選擇上,團隊確實是面臨到了困難,在激烈討論後,最後由社群版最優異的PostgreSQL勝出。

Cloud SQL設定

不得不說,GCP在UI上面真的非常人性,只要動動手指敲敲鍵盤,幾分鐘內馬上就可以產生可以使用的資料庫 真的是非常方便,以下是我們在設定時會注意的地方。

Cloud SQL基本設定_基礎配置

可以選擇PostgreSQL的版本及託管的主機所在的Region,與初期的主機CPU/Memory/Disk配置,及一個馬上可以看到規格的Summary表格,非常的方便。
Cloud SQL基本設定_基礎配置

Cloud SQL基本設定_更細部的主機規格

再把網頁卷軸往下拉後,如果評估專案初期,不需要這麼強大的主機規格,可以在這邊進行修改(若後期要將主機加大規格,可以隨時停機調整,印象中幾分鐘內就會完成配備擴充的任務)。

Cloud SQL基本設定_更細部的主機規格

Cloud SQL基本設定_連線設定

目前專案所有的Infra都是建置在GCP同一個VPC上,所以記得把Private IP選項打勾,這樣走內部連線可以節省蠻多流量費用,因為我們專案需要有外部管理需求,有配置一個外部可以連線到的Public IP。

Cloud SQL基本設定_連線設定

Cloud SQL基本設定_認證安全連線網路

因為CloudSQL如果是配置PostgreSQL,服務是聽在預設5432 Port上 (目前沒有看到可以更改Port的設定),所以為了加強安全,務必要設定哪些IP(或是IP Range)才可以連線到CloudSQL。

Cloud SQL基本設定_認證安全連線網路

CloudSQL基本設定_開啟Audit Log設定

如果有開啟Audit Log,GCP就會將CloudSQL上的 Read/Write LOG導向Cloud Log上。後續如果要進一步產出稽核報表,再由Cloud Log做為中繼串聯其他GCP上的服務。

CloudSQL基本設定_開啟Audit Log設定

小結

GCP在使用Cloud SQL只要在UI介面上點一點,輕鬆又快速就可以建構一套立即可用,且隨時可以依據專案成長動態調整架構的SQL資料庫,有很多細節都需要注意,以前集團內部,有非常完善的網路攻擊防禦措施,用了雲端的服務,如果稍不注意設定,可能會讓自己的主機被外部駭客當成攻擊目標。另外也因為還是公司內部的產品服務,也很多內部的準則(EX:稽核資料),也要找解決方法符合規範,這些都是企業上雲為甚麼會有CCOE類似的內部組織存在的原因。

—此篇文章承蒙專案同仁StanleyLiu協助諮詢 特此感謝


上一篇
[Day 2] 雲原生與Iass選擇
下一篇
[Day4] Cloud CDN
系列文
Google商家大解密就靠網頁設計來加成30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言