2019年2月20日 星期三

Google Cloud Load Balancing 將要針對 user-define request header 收費



今天早上收到這封信,腦中浮現出了幾個字養套殺使用者付費...XD
原本是一個Google 佛心來著的免費加值服務,現在卻變成要收費了,所以現在得好好算一下是不是要繼續使用這個服務。



 Google Cloud Load Balancing user-define request header

user-define request header 有什麼用途嗎?主要就是讓Load balanacer 後面的應用程式可以透過google 預先定義好的 user-define header 取得一些有價值的資訊,其中最實用的用途就是可以透過 google 強大的資訊力,可以從 ip 得到 request 詳細的地理資訊位置。



取得地理資訊


只要再Load balancer 的設定頁面加上 google 定義好的header


就可以讓處於load balancer 後端的應用程式透過 http request header 得到相關資訊,以go 的程式為例:

func parserGeo(req *http.Request) (Geo, GLBInfo) {

   ip := parserIp(req.Header.Get("X-Forwarded-For"))
   geoString := req.Header.Get("X-Client-Geo-Location")
   rttString := req.Header.Get("X-Client-RTT")
   var glbInfo GLBInfo   if rttString != "" {
      rtt, _ := strconv.ParseInt(rttString, 10, 64)
      glbInfo = GLBInfo{
         RTT: rtt,
      }
   }

   var geo Geo   if geoString != "" {
      data := strings.Split(geoString, ",")
      geo = Geo{
         Ip:          ip,
         Country:     data[0],
         City:        data[1],
         Subdivision: data[2],
      }

   }

   return geo, glbInfo
}


如何衡量價值


新的收費標準是每一百萬次 request 收費 0.75 USD,對於每天至少是千萬甚至億等級的request 量來說,一天會增加75 USD,一個月就 2250 USD....囧rz...

對比的收費,可以參考 maxmind 的地理資料庫 (要自行安裝在每個應用程式前的 nginx )



結論


如果你需要知道ip 地理位置的服務 request 量沒有到每日千萬等級,然後你又需要精確到城市等級的資料,也許可以繼續考慮使用 Google 的這個服務,但是如果你的服務到千萬甚至億的等級,也許還是得考慮使用買地理資料庫另外解決這個問題。


附註: 如果你有使用到 Google Cloud Armor Policy 則不會針對這個 user define header 另外收錢,因為他有另外的價錢~XD







沒有留言 :