はじめに
serverlessを使ってGo言語のAPIサーバを立ててみました。
簡単な動作を確認しただけですが、その時の備考録としてまとめました。
こんな人が読んで意味があるかと思います。
・とりあえず動かしてみたい
・使用するか検討している
構築手順
1.GO関連の設定
GOをインストールし、GOPATHを通しましょう。
2.AWS関連の設定
AWS CLIを落としてaws configureの設定を行いましょう。
3.serverless関連のインストール
npm install -g serverless
4.serverlessでプロジェクトを生成
serverless create -t aws-go-dep -p <destination>
雛形が以下のリポジトリに乗っています。
https://github.com/serverless/serverless-golang/
作成された雛形は以下のような感じです。
.
├── Gopkg.toml
├── Makefile
├── hello
│ └── main.go
├── serverless.yml
└── world
└── main.go
5.ビルドする
makeファイルにビルドなどのタスクは定義されているので、
make build
でビルドします。
6.デプロイ
これだけでcloudforamtionを使ったデプロイが実施されます。
serverless deploy -v
使い終わったら
serverless remove -v
他の人が作った設定ファイルを使ってみる。
1~6を他の人が作った設定ファイルを使って動かしてみましょう。
私が動作確認の際に活用させていただいた記事を添付します。
http://undersourcecode.hatenablog.com/entry/2018/02/07/200403
ローカル環境で開発するには?
ここまでで簡単に動作を確認するこは出来たかと思います。
次に毎回デプロイしてから動作を確認しては遅いので、ローカルで開発する方法をみていきます。
以下のライブラリを使えば出来そう。
https://github.com/dherault/serverless-offline
使用している記事を発見。
https://noop.co.jp/blog/post/4
実施してみた結果。。。。
Serverless: Warning: found unsupported runtime 'go1.x'
なんとGoではサポートされていない。。。README.mdにも書いてありました。。。
Node.jsだけは可能なようです。
もし使うならテストコードを書いてローカルで簡単に動作確認するか、
cloudwatch logsをみて問題を特定するなど面倒臭そうです。
懸念事項
・DBはMongoDBに縛られる
NoSQLを使うことになるので、どのようなデータの持ち方をするのかなど検討する必要がありそうです。
・ローカルで開発できない
これは本当に痛い。
開発速度が結構落ちてしまいそうだなという印象です。
感想
簡単にですが、serverlessを使ってみた備考録を感想を踏まえて書いてみました。
簡単にデプロイが出来、設定ファイルで管理することができるのですごくお手軽でした。
Node.jsを使って使用する場合は、かなりお勧めできると思いました。
AWS SAMならGOでのローカル開発をサポートされているようなので、
次はそちらを調べてみようと思います。
参考資料
・設定ファイルの書き方は以下を参照
https://serverless.com/framework/docs/providers/aws/guide/serverless.yml/
・Go言語でTODOのCRUD APIを動かしてみるなら
※日本人の方の参考資料がありますが、こちらが元ネタなように感じました。
https://yos.io/2018/02/08/getting-started-with-serverless-go/
・同上(日本語)
http://undersourcecode.hatenablog.com/entry/2018/02/07/200403
・Go言語でとりあえず動くものを構築したいなら
https://ewanvalentine.io/serverless-start-ups-in-golang-part-1/
・Node.jsでローカル開発をしたいなら
https://noop.co.jp/blog/post/4