Ateam cyma Advent Calendar 2019、16日目です!
トップバッターに続いて本日は 株式会社エイチーム のエンジニア @u_minor3110 が務めさせていただきます。
今回はRuby on Jetsの紹介をします。
アプリの開発に時間を割いて、**サーバ運用は楽したい!**という人にオススメだと感じています。
Ruby on Jetsとは
Ruby on JetsはAWSサービスと連携し、serverlessなサービスを作ることができるRubyのフレームワークです。もちろん開発マシンではAWSサービスを使わずとも開発を行うことができます。
https://rubyonjets.com/
https://github.com/tongueroo/jets
Ruby on Jetsの個人的に感じた魅力
- severlessでサービスを運用することができるため、アプリの開発に集中ができる
- サーバのメンテナンスコストが発生しない!
- Ruby on Railsに似ているのでRailsを知っていれば学習コストがかからない
- 料金もEC2を使って運用するより安く済む可能性がある(料金計算自信なし)
- Lambdaは月100万リクエスト、128MBの
のメモリを割り当てた場合約37日実行時間分までは無料 - API Gatewayは月100万リクエストまでは無料だが、超えてくると100万リクエスト毎に$1以上かかるので高いか?
- S3は月100万リクエストで平均ファイルサイズも5KB程度あれば、$1未満程度
- CloudFormationは8リソースを使用しており、リリースに2分かかるとして、一日4回、20日リリースを行ったとしても、
- (8 * 4 * 20 - 1000) + 2 * 20 * 4 * 0.00008 ≒ $1未満
- 結論、小規模のサービスなら安くすみそうだが、デイリー100万リクエストを超えるようなサービスだと、高くなりそう(´・ω・`)
- AWS料金シミュレーター
- Lambdaは月100万リクエスト、128MBの
セットアップからAWSへのデプロイはとても簡単
# gemのインストール
$ gem install jets
# プロジェクトの作成(オプションもrails newと似ている)
$ jets new app --mode=api --no-database
# ディレクトリの移動
$ cd app
# コントローラの作成
$ jets g controller Hellos index
# rackサーバの起動(開発マシンで検証する場合)
$ jets serve
# awsへの本番deploy(IAMのアクセスキーを環境変数として指定する必要があり)
$ jets deploy production
サービスの運用にあたり
本番用カスタムドメインの指定
AWS Certificate Managerで証明書を作成し、API Gatewayでカスタムドメインの設定を行う。
デプロイ権限の管理について
検証環境は誰でも、本番環境にリリースできる人は制限したい。Lambda, S3等への権限がFullAccessでは検証も本番にもデプロイがされてしまう。
例えばS3に対してなら、以下のようにpolicyを指定し、本番用と開発用の権限を別々に作るのが良さそう。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::*-dev-*"
]
}
]
}
まとめ
時間が無くてきちんとした運用に乗せられていないですが、リリースまでが本当に簡単だったので、小規模なサービスには使ってみたいと考えています。
終わりに
Ateam cyma Advent Calendar 2019の16日目、いかがでしたか。
17日目は@ouka___さんがseo関連の話をしてくれますのでお楽しみに!
株式会社エイチームでは、一緒に働けるチャレンジ精神旺盛な仲間を募集しています。
エンジニアで興味を持った方はcymaのQiita Jobsをご覧ください。
そのほかの職種は、エイチームグループ採用サイトをご覧ください。