go言語で作るアドサーバー1 広告を配信する
go言語の勉強も兼ねてgo言語でAD(アド)サーバー(広告配信サーバー)を作っていくことにする。
広告配信サーバーの肝は、大量の広告へのアクセス(インプレッション)をさばくことであるから、そういう意味では、非同期IOのHTTPサーバーを簡単に作れるgo言語は、良く見る以下のようなHTTPサーバーのサンプルで、広告配信という意味では目的を達していると言える。実は大変なのは、広告管理側だったりする。
package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World!") } func main() { http.HandleFunc("/",handler) http.ListenAndServe(":80",nil) }
....とはいえ、これではただ単に広告を配信するだけになってしまって、広告の最適化なんかできないので、そこのところを実装していく。実装はネット広告の進化の過程を辿って行く
まずは、単なる単一広告の配信から、ローテーション広告へ
これは単純にRandで広告を配信するだけ
package main import( "fmt" "math/rand" "time" "net/http" "runtime" ) var ( ad = []string{"[AD]広告1","[AD]広告2","[AD]広告3"} ) func handler(w http.ResponseWriter, r *http.Request) { rand.Seed(time.Now().UnixNano()) fmt.Fprintf(w,ad[rand.Intn(3)]) } func main(){ runtime.GOMAXPROCS(runtime.NumCPU()) http.HandleFunc("/",handler) http.ListenAndServe(":8080",nil) }