Skip to content
This repository has been archived by the owner on Dec 5, 2024. It is now read-only.
/ phoenix Public archive

🔥 delivery recommendation system

License

Notifications You must be signed in to change notification settings

rtlnl/phoenix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Go Report Card

Phoenix

gopher-phoenix

Phoenix is the delivery recommendation systems that is used at RTL Nederland. These APIs are able to deliver millions of recommendations per day. We use Phoenix for powering Videoland and RTL Nieuws. Our data science team works very hard to generate tailored recommendations to each user and we, as the platform team, make sure that these recommendations are actually delivered.

Simple, yet powerful API for delivery recommendations

  • Easy to understand - push and get data from Redis very quickly
  • Fast in deliverying - the combination of Go, Redis and Allegro cache makes the project blazing fast
  • Smart in storing - the APIs avoid the overload of the Redis database by using a worker for bulk uplaod

We have being used in production since December 2019 and we haven't had a single downtime since. So far, we have delivered more than 350M recommendations to our users. The average request latency is 35ms.

Quick start

Assuming that you have go, docker and docker-compose installed in your machine, you need to have 3 terminals open that points to the directory where the project is. Do the following

  1. In terminal number 1, run docker-compose up -d to spin up Redis and localstack (for local S3)
  2. In terminal number 1 run go run main.go worker for the Worker service
  3. In terminal number 2 run go run main.go internal for the Internal APIs
  4. In terminal number 3 run go run main.go public for the Public APIs

Now you are ready to go 🚀

Docs

The documentation for developing and using Phoenix is available in the wiki

Join the Phoenix Community

In order to contribute to Phoenix, see the CONTRIBUTING file for how to go get started. If your company or your product is using Phoenix, please let us know by adding yourself to the Phoenix users file.

License

Phoenix is licensed under MIT license as found in the LICENSE file.