OzBargain Architecture

This page will be about OzBargain website's hardware/software/system architecture. Note that this page might get updated once a year, while OzBargain itself is updated much more often so the info here might not be always up to date.


OzBargain is developed on

  • An old version of Drupal but with lots of things ripped apart and replaced with custom code in PHP.
  • A few Python processes handles front-end API calls and asynchronous calls.
  • A few micro-services developed in Golang.

Other software that OzBargain uses

  • Nginx for FastCGI front-end + static file serving
  • PHP 7 in FastCGI
  • MariaDB as database
  • Redis for in-memory caching, global variables and blocking queues
  • Chromium + PhantomJS server for taking the screenshots.
  • SphinxSearch for the search backend.


OzBargain is currently hosted on


Currently the whole OzBargain main site sits on a few KVM VPS at Binary Lane (4GB-8GB RAM, 60GB-100GB hard disk) – two running replicated MySQL & Redis, and the another one running the rest of stack. Nginx on port 80/443 handles all the HTTP requests, and then pass the requests to either Drupal/PHP via FastCGI, or to customised Python/Tornado based server via proxy. MySQL is the main database used, and Redis is used for session storage, in memory cache and blocking queues. Blocking queues are used to let front-end processes send asynchronous commands to backend processes, which is also implemented in Python.

RabbitMQ is also used as broker for micro-services.

See Also