Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby on Jeeeeeeeeets!!✨🚀✨

F33a34a8976ab50f8a2050cc407f64a4?s=47 Aqualamp
December 14, 2019

Ruby on Jeeeeeeeeets!!✨🚀✨

2019/12/14 平成ruby会議で発表しました。

jets で作ったもの→ https://lambda-bird-dev.aqualamp.org/
(※ GPUを使うのでバッテリーを急速に消費する可能性があります)

F33a34a8976ab50f8a2050cc407f64a4?s=128

Aqualamp

December 14, 2019
Tweet

Transcript

  1. 自己紹介 Ruby on Jeeeets!! 令和元年 12月14日平成ruby会議 @AquaLamp

  2. サーバーレスアプリケーションを作れる Ruby on Jets を使ってみたら めっちゃ楽しかったから紹介します。 この発表 is なに? ※わかりやすさを優先し正確でない

    表現を用いている場合があります。
  3. インフラとフロント とバックエンド をやる管理栄養士 自己紹介

  4. Jets 初手謝罪 • 内容の正しさは最大限努力をしてい ますが、誤った内容がありましたら ご容赦ください。 • 平成生まれの栄養士の個人見解です。

  5. Railsの書き味でサーバーレス! デプロイまで全部おまかせ! インフラから フロントエンド ざっくり言うと

  6. そもそも サーバーレスってなに? What is the serverless?

  7. サーバーが立ち上がってる間は常に コンピュートリソースが確保されている IaaS/インスタンス

  8. FaaS/サーバーレス

  9. FaaS/サーバーレス

  10. FaaS/サーバーレス

  11. FaaS/サーバーレス 処理が必要なときだけ コンピュートリソースが確保される

  12. サーバーレスとは? 処理実行時にコンピュート リソースが自動割り当てられる 広義・狭義 の差はあれど 具体的に 言うと AWS で言うなら Lambda

    を活用する! ら む だ
  13. Lambda EC2 • メンテナンスコストが低い • コードが実行されていない ときには料金は発生しない。 • コードさえアップロードす れば、勝手にスケーリング

    • メンテナンスに手がかかる • インスタンスが稼働していれば 課金される • 冗長化/オートスケールなど考え ることは割とある RailsでLambdaが使えたらいいのにな…
  14. EC2 • メンテナンスに手がかかる • インスタンスが稼働していれば 課金される • 冗長化/オートスケールなど考え ることは割とある Lambda

    • メンテナンスコストが低い • コードが実行されていない ときには料金は発生しない。 • コードさえアップロードす れば、勝手にスケーリング RailsでLambdaが使えたらいいのにな…
  15. Jets

  16. Jets サーバーレスアプリケーション を作れるフレームワーク

  17. jets new cron --mode job 一定時間ごとに処理実行 $ gem install jets

    json等を返すAPI jets new api --mode api HTMLをLambdaから返す jets new demo --mode html
  18. HTMLをLambdaから返す jets new demo --mode html

  19. app javascript controllers models views …….. sample_jets_app config routes.rb

  20. app javascript controllers models views …….. sample_jets_app config routes.rb ((´∀`*))

    ハハーン
  21. javascript models views …….. config routes.rb ((´∀`*)) ハハーン

  22. 「これ Rails じゃん…」 個人の感想です 体感には個人差があります

  23. $ jets generate scaffold post title:string body:text published:boolean

  24. None
  25. config/routes.rb Jets.application.routes.draw do resources :posts end

  26. class Post < ApplicationRecord end models/post.rb

  27. class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update,

    :delete] # GET /posts def index @posts = Post.all end # GET /posts/1 def show end # GET /posts/new def new @post = Post.new controllers/posts_controller.rb
  28. class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update,

    :delete] # GET /posts def index @posts = Post.all end # GET /posts/1 def show end # GET /posts/new def new @post = Post.new controllers/posts_controller.rb private def set_post @post = Post.find(params[:id]) end
  29. def edit end # POST /posts def create @post =

    Post.new(post_params) if @post.save if request.xhr? render json: {success: true, location: url_for(@post)} else redirect_to post_path(@post) end else render :new end end controllers/posts_controller.rb
  30. 「これ Rails じゃん…」 個人の感想です 体感には個人差があります

  31. $ jets server ローカルサーバー起動

  32. $ jets console rails console同様にデバックもできる

  33. 「これ Rails じゃん…」 個人の感想です 体感には個人差があります

  34. None
  35. $ jets deploy AWSに全自動デプロイを行う

  36. AWS Cloud $ jets deploy ※データベースへの操作 db:create db:migrate は deploy

    とは別途必要
  37. posts#index posts#new posts#show posts#create posts#delete Lambda RDS DynamoDB S3 API

    Gateway CloudFormation
  38. S3 *.js *.css *.jpg/png webpacker

  39. webpacker

  40. まとめに かかる

  41. Railsの書き味でサーバーレス! デプロイまで全部おまかせ! インフラから フロントエンド ざっくり言うと

  42. • Railsの知見がそのまま使える! • サーバーレスでメンテ不要&&管理 はjetsにお任せ • AWSのサービスの連携も容易! もっと言うと!

  43. Railsの知見がそのまま使える フロントからインフラまでお任せ さらに言うと RailsとRubyの知見を持ったまま サーバーレスに異世界転生! クラウド無双!

  44. Q. RDSとLambdaって相性が 悪いって聞きましたが… RDS

  45. Q. RDSとLambdaって相性が 悪いって聞きましたが… RDS A. Jetsには Lambda実行コンテキストにより DBの接続を再利用する仕組みが あります。 (ただし同時に起動したLambda関数間で

    接続を共有できるわけではなさそう)
  46. Database proxy for Amazon RDS > It handles the connection

    pooling necessary for scaling many simultaneous connections created by concurrent Lambda functions.
  47. Q. Lambdaって起動が遅いのでは? A. JetsのPrewarming(予熱) 機能により回避できます。 また、VPC内で発生していたコールドスタートが撤廃される ことが今年の2019/9/3に発表されました。

  48. Q. 既存railsアプリケーションを jetsに書き換えるのがだるい Jets Afterburner Mode

  49. Railsの書き味でサーバーレス! Ruby on Jets 覚えて 帰って!

  50. Railsの書き味でサーバレス! Ruby on Jets fin