An unopinionated, scalable reporting application built on Google Cloud Platform and Data Studio for vendor co-op reporting.
Vendor co-op is a form of joint marketing where organizations pool together resources and expertise to acheive a joint goal. In the classic case, consider a retailer that sells vacuum cleaners from a specific manufacturer. The retailer and the manufacturer might pool together marketing budget, data and creative content to launch a joint marketing campaign to attract consumers to a retail location to purchase vacuums from the manufacturer - a win-win for retailer and manufacturer. In this context, the manufacturer, generally referred to as the vendor, provides resources to the retailer, where the retailer plans and executes the joint marketing campaign.
Zazu is an open-source application that can be used as scalable infrastructure to help facilitate reporting between organizations. In the case of the retailer and manufacturer, Zazu is an application that the retailer can deploy such that the retailer can share 1st party data directly to the manufacturer in a controlled, secure and private manner. As an example, the retailer may choose to report impressions, store visits or revenue as a metric to the manufacturer to show the business results driven by the joint marketing campaign.
Zazu integrates several popular production reliable web, data and analytics technologies:
Create a new project in GCP.
APIs & Services > Dashboard > If not already enabled, enable the Big Query, Google+ API and Google Container Registry.
Run git clone https://github.com/google/zazu.git
in a desired directory.
cd <directory_of_step_3>/zazu
mkdir <directory_of_step_3>/zazu/encryption
. Then add your key and certificate,
Note: If you do not have a key and certificate yet, you can generate a self signed key/certificate for testing purposes, by running the following commands.
cd <directory_of_step_3>/zazu/encryption
openssl genrsa -des3 -out <key_name>.key 1024
openssl req -new -key <key_name>.key -out <cert_name>.csr
openssl x509 -req -days 365 -in <cert_name>.csr -signkey <key_name>.key -out <cert_name>.crt
cd <directory_of_step_3>/zazu; docker build -t zazuimg .
Push your Docker image to the Google Container Registry.
gcloud auth configure-docker
docker tag zazuimg gcr.io/<project_id>/zazuimg
docker push gcr.io/<project_id>/zazuimg
Provision a service account on GCP. No checkbox is needed to be selected.
Create a set of OAuth credentials and keep note of the client ID/secret.
Set up firewall rules.
Create a new VM instance for the mongodb.
Create a global username and password for the mongoDB user used by the application.
docker exec -it zazu-db sh
mongo admin -u <select_root_username> -p <select_root_password>
(from step 11a.)use zazu
db.createUser({ user: "<select_app_username>", pwd: "<select_app_password>", roles: [ "readWrite" ] })
Create a new VM instance for the App
Deploy a container image
Note: MONGO_INITDB values come from step 12. The DNS_NAME looks like: zazu-db.c.PROJECTNAME.internal . Template: INSTANCENAME.c.PROJECTNAME.internal .
One time only: Create the first admin user of the application in mongodb.
docker exec -it zazu-db sh
mongo zazu -u <select_app_username> -p <select_app_password>
(from step 13)db.users.insert({ name: "<your_admin_name>", googleID: "<your_admin_google_id>", role: "admin" })
db.users.find()
One time only: Create the same first admin user of the application as in step 14, in Big Query.
INSERT INTO
(user_id, googleID, role) VALUES ('<_id_value_from_step_15>', '<your_admin_google_id>', 'admin')
This project is in alpha - for questions please contact the project owners amete@google.com & jmattarian@google.com. Note - while in alpha, select organizations will be approved to receive technical, analytical and engineering support from Google. If interested in the alpha, please send requests to amete@google.com. For bugs, comments or enhancements, please submit directly at our public repository. Note we are also interested in collaborators interested in contributing to the application - if you'd like to make a contribution to the code base, please make a pull request.