Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrating our UI and API to use Puma #62

Open
syphax-bouazzouni opened this issue Feb 7, 2025 · 0 comments
Open

Migrating our UI and API to use Puma #62

syphax-bouazzouni opened this issue Feb 7, 2025 · 0 comments
Labels
enhancement New feature or request

Comments

@syphax-bouazzouni
Copy link
Contributor

Description:

To improve performance and maintainability, we should migrate our Rails UI and Sinatra API from Passenger and Unicorn servers to Puma server.
Puma is now the standard for Rails and Sinatra apps due to its better concurrency handling, lower memory usage, and cloud compatibility.

Definitions:

  • Passenger: A web and application server known for its ease of use and integration with Nginx/Apache.
  • Unicorn: A forking web server optimized for Rails but limited to process-based concurrency.
  • Puma: A multi-threaded and multi-process web server designed for better performance and scalability.
Feature Unicorn Puma Passenger 5
Clustering Yes Yes Yes
Multithreaded No Yes Enterprise Only
Slow client buffering No Yes Yes
ActionCable Yes Yes Yes
Support Open Source Open Source Open Source / Paid
Installation Gem Gem Binary or Gem
Zero-Downtime Deploys Yes Yes Enterprise

Image

Reasons for Migration:

  • Performance & Scalability: Puma's hybrid model handles concurrency better.
  • Memory Efficiency: Uses fewer resources compared to Unicorn.
  • Active Development: Puma is actively maintained, unlike Unicorn.
  • Simplified Deployment: Less overhead compared to Passenger.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants