Goでserverlessの夢を見る(Go言語serverlessの紹介)
最近よく聞くserverlessですが、今回紹介する、serverlessはAWSのlambdaに関するserverless frameworkについて紹介します。
serverlessについて
serverlessは何がいいのかと言いますと。サーバーを保有しないのでサーバーの管理コストを大幅にカットし、さらには、serverlessfraeworkで、開発環境にも依存性が低く、チーム開発にも向いていると考えられます。
今回は
僕のバイト先では、node + serverless フレームワークで使っています。他のbotを作ったりする時は、pythonを使うときもあります。 だが、最近というかここ一年ほど、Go言語を趣味書いています。 が、awsにはgolangは採用されていないため。golangをlambdaで扱うことはできないですし、ましてや、serverless frameworkを使用することもそのままでは難しいです。 が、どうしても使いたい人がいると思います(僕みたいに) そんな人のために紹介したいと思います。。
どうやって?
それ用のライブラリはいくつか存在します。
- apex
- eawsy
この二つはとても有名で、serverlessでGoを使う方法のうちの一つですが、僕が両方使ってみて思ったことは以下になります。
apex
- CLIだから作成・デプロイ・実行が簡単
- apigatewayが手動?接続方法がわからん!
eawsy
- logが出せる!・書くだけ!・フレームワーク対応
- zipの後手動?厳しい、、、
という点で自分はしんどいなと思っています。 そこで、serverless-golangを使っています。
serverless-golang
これはeawsyを拡張してできたフレームワークで、makeでコマンドが用意されていてとても使いやすいです。
どのようになっているかと言いますと、
この流れをserverless-golangはやってくれます。
さらにチュートリアルを見ると、
速度はやファイルサイズは以下の表にまとめました。 (eawsyはserverless-golangです)
速度はpythonのserverless frameworekと遜色なく動きます。 (まぁCのライブラリとして読み込んでいるので当然かもしれないですが、)
ただ、Goを触ったことある方はわかるかもしれないですが、バイナリサイズが大きいので、lambdaにのっせてもそれは変わらないため、サイズだけは大きくなってしまいます。 普通のserverlessと同様にserverless.ymlを使用するので細かな設定なども行えるので、とても便利です。
今年の夏に調べたことがここまでで、この記事を作ということで久しぶりに触ってみたところ、開発もちゃんと行われていて、exampleも増えていましたし、serverlessのバージョンアップにも対応しているのでありがたいです。何と言っても、Gopherの画像が追加されていたので、これはいいと思います。
Iron-functionsとかで記事を書かれている方をみて、遅いとか見ることもありますが、自分はこっちの方がserverlessを使っている身としては扱いやすいのでおすすめです。 github.com
最後に
急遽書くことになったので、特になにか新しいこととか自分が作ったものの話でなくて申し訳ないです。。。。。 ただ、awsを全面的に採用されていてGoを使いたいけど、awsだからec2やecsでしか使えないな〜とおっしゃっている方に少しでも届けばいいなと思ったので書きました。
小ネタで申し訳ないですが、これで終わります。