LoginSignup
5
0

More than 5 years have passed since last update.

Serverless FrameworkにGo言語で入門してみた備忘録

Last updated at Posted at 2018-10-30

はじめに

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

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0