Rails on Jets vs. "Plain Jets"

question

#1

Hi everyone,

I am currently investigating Jets for current and future projects.

Now I have seen that Jets is very similar to Rails (also because it seems to borrow some dependencies).
So my question would be why would I chose plain Jets over a Rails on Jets solution? I mean would I not be more flexible in using Rails? Because I could deploy Rails also on Heroku, via Docker etc. . Jets would “just be another” deployment method.
It seems I would be more limited in using “plain Jets”.

Could you help me to understand why I would favor “plain Jets”? Maybe Gem-layer size?

Thanks
Andreas


#2

With Rails on Jets, what’s happening is Jets starts up a rack subprocess that runs the Rails app. A wrapper Jets app is generated and deployed. Finally, the wrapper Jets app proxies to the rack subprocess. So Jets Afterburner is really just a proxy to a Rails Rack app.

Generally, running a Jets application will give you the full power of Jets. Some examples: Jobs, Events, and IAM Policies. Though Afterburner mode is mostly transparent from a user perspective, there’s the obfuscation with the rack subprocess. This Mega Mode Post may be interesting to you also.

If you really need a full Rails application, you may be better off running Rails on traditional ECS just in case you run into AWS Lambda limits. I cover some of the Lambda considerations/limits in a presentation in Belarus: RubyConfBY 2019: Ruby Serverless Framework FWIW, am the author of a tool that helps with ECS Deployments: UFO ECS is a fine solution also. Think that serverless limits will fade over time.

Generally, recommend going with just Jets if the application can work with serverless. Decided to note on the Jets docs that Jets Afterburner is an experimental feature. Actually ended up fixing an issue in answering this question. Also, added some docs on this at the bottom “Rails with Jets vs Straight Jets” http://rubyonjets.com/docs/rails-support/

Hope that helps.


#3

Hi @tung,

thanks a lot for the comprehensive answer. Seems I need to dig a bit deeper and check for myself what the best solution in our case is. Thanks also for pointing me to UFO and ECS. Have not looked into this possibility either.
The reason behind asking is mainly cost cutting and using lambda seemed to be a good option.
We’ll see how it goes.

Thanks again for your time and effort
Andreas


#4

Sure. Np. Would also consider EC2 Spot as an option if you end up going with ECS. Here’s a Pricing Comparison Article I wrote that may be helpful: On-Demand vs Reserved vs Spot AWS EC2 Pricing Comparison


Support for Devise?