[[ozbargain_architecture]]

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 often so the info here might not be always up to date.

Software

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.

Hosting

OzBargain is currently hosted on

  • Amazon S3 for thumbnail and uploaded files storage.
  • Binary Lane VPS in Sydney for the main site.
  • Vultr VPS in Sydney for front-end caching for Amazon S3.

Architecture

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. RabbitMQ cluster is hosted on a pair of VPS at Vultr in Sydney.

See Also