6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on Jetsでserverlessなサービスの運用環境を作ってみた

Last updated at Posted at 2019-12-15

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料金シミュレーター

セットアップから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をご覧ください。

そのほかの職種は、エイチームグループ採用サイトをご覧ください。

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?