Keep the Monolith, but Split the Workloads

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Scout Monitoring - Free Django app performance insights with Scout Monitoring
Get Scout setup in minutes, and let us sweat the small stuff. A couple lines in settings.py is all you need to start monitoring your apps. Sign up for our free tier today.
www.scoutapm.com
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
  • packwerk

    Good things come in small packages.

  • Yep, that article is about very similar concepts but grounded in Spring as the framework.

    I like what they do around package imports and it looks a lot like what we do at incident.io, with some rules about which packages can import what.

    For people in the Ruby world who want a similar solution, Shopify provide an open-source framework called packwerk that is designed just for this:

    https://github.com/Shopify/packwerk

  • Scout Monitoring

    Free Django app performance insights with Scout Monitoring. Get Scout setup in minutes, and let us sweat the small stuff. A couple lines in settings.py is all you need to start monitoring your apps. Sign up for our free tier today.

    Scout Monitoring logo
  • oban

    💎 Robust job processing in Elixir, backed by modern PostgreSQL and SQLite3

  • > Bad code in a specific part of the codebase bringing down the whole app, as in our November incident.

    This is a non-issue if you're using a Elixir/Erlang monolith given its fault tolerant nature.

    The noisy neighbour issue (resource hogging) is still something you need to manage though. If you use something like Oban[1] (for background job queues and cron jobs), you can set both local and global limits. Local being the current node, and global the cluster.

    Operating in a shared cluster (vs split workload deployments) give you the benefit of being much more efficient with your hardware. I've heard many stories of massive infra savings due to moving to an Elixir/Erlang system.

    1. https://github.com/sorentwo/oban

  • Gin

    Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

  • CustomRecoveryWithWriter returns a middleware for a given writer that recovers from any panics and calls the provided handle func to handle it.

    (https://github.com/gin-gonic/gin/blob/master/recovery.go)

  • django-rq

    A simple app that provides django integration for RQ (Redis Queue)

  • rq

    Simple job queues for Python

  • We use RQ[0], it has Redis as a dependency. It’s pretty straightforward and we’re very happy with it. If you are using Django you may want to look at Django RQ[1] as well. RQ has built in scheduling capabilities these days, but historically it did not so we used (and still use) RQ Scheduler[2] which I think still has some advantages over the built in stuff.

    [0] https://python-rq.org/

  • rq-scheduler

    A lightweight library that adds job scheduling capabilities to RQ (Redis Queue)

  • django-postgres-queue

    A task queue for django

  • If you're using PostgreSQL, then

    django-postgres-queue: https://github.com/gavinwahl/django-postgres-queue

    procrastinate: https://github.com/procrastinate-org/procrastinate/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • procrastinate

    PostgreSQL-based Task Queue for Python

  • If you're using PostgreSQL, then

    django-postgres-queue: https://github.com/gavinwahl/django-postgres-queue

    procrastinate: https://github.com/procrastinate-org/procrastinate/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Background jobs with Django

    4 projects | /r/django | 30 May 2023
  • The Many Problems with Celery

    5 projects | /r/Python | 22 May 2023
  • Ask HN: Redis Queue Hacks and Questions

    1 project | news.ycombinator.com | 22 Feb 2023
  • Recommendations other than celery to send an API processing in background, which would only take 5 mins to process and API usage would be once a month or so.

    2 projects | /r/django | 12 Dec 2022
  • GPU instance crashes when two python processes use the same pt file

    1 project | /r/aws | 6 Dec 2022