taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

Elastic Beanstalkのsqsdの劣化コピーみたいなのを書いてみた

github.com

 そろそろいい加減golangはちゃんと勉強しないとと思っていたところ、たまたまElastic Beanstalkのsqsdの話を見つけた。
 本家のsqsdはちょっと探してみる限りossとして公開されてるものがなさそうだったのと、課題としてそんなに大きすぎない規模だと思ったのでいい練習になると思い、書いてみることにした。
 golangについては、大昔にusbドライバー的なものやcgoを使ったものはちょっと書いてみたことがあったが、やっつけみたいな勢いだったので、今回はcontextを使ったりテストをちゃんと書いてみようと思ってそのあたりは気を付けてみた。sqsにただロングポールするだけでは使い勝手が悪そうに思ったので、一緒にHTTP Serverを立てるようにし、稼働中のjob一覧の取得やロングポールの一時停止・再開の操作もできるようにしてみた。
 とりあえず「go test -race」や「go vet」では特に何も出てなさそうという状態にしてあるが、当然ながら実戦に持ち込んだことはないので、メモリリークがどこまでおきるかや、実際の使い勝手についてはまだわからない。今後ちゃんと検証していく必要はある。現状では僕の自己満だが、本当にいい勉強になった。