Inside Bluecore's Tech Stack

 | 

This is the latest in our “Inside the Stack” series featuring Underdog.io customers. This week, we hear from Mahmoud Arram, the CTO & Co-Founder of Bluecore. Mahmoud and his team are hiring across a number of departments.

image

Describe Bluecore in 2-3 sentences.

Bluecore analyzes ecommerce customer and product behavior in real time, and intelligently triggers personalized communications based on this data.

Our clients include BCBG, Sur La Table, Ruelala, Ideeli, JackThreads, Express, Brooks Brothers, Tommy Hilfiger and many more (including ones we can’t talk about: a four-letter icoNik sports brand, and a three-letter multinational clothing brand). So we handle huge amounts of data every day.

We share office space with StackOverflow!

What are your primary programming languages?

The core of the platform is in python on Google App Engine. We also use python on Google Compute Engine for public key cryptography work.

We use Coffeescript and IcedCoffeeScript on the front end.

We chose python because it was a favorite of the founding team. We’re language agnostic though, and many of our engineers had no experience with python before coming to Bluecore.

We also created a domain specific functional language to express ecommerce personalization semantics as predicates of products and customers. We call it Yumli.

What are your primary web frameworks?

Here is a quick list: 1. We use webapp2, which is a very simple framework that is built into Google App Engine. 2. We have an internal library called Etro that provides semantics for RPC, parallel processing, caching and other useful things. Most of our internal projects are named after fashion designers. 3. On the frontend, we use React and sometimes Knockout, Knocback and Backbone.

image

What are your primary databases?

We use the Google Cloud Datastore and BigQuery. The datastore is a schemaless distributed key-value store. It uses a high-replication model, and gives us transactional isolation. It also supports namespacing, which is important for us because we need airtight isolation between our different enterprise ecommerce clients. We store all incoming events, and all outgoing communications in the datastore.

BigQuery is an append only database that can very quickly query large datasets.

We also have a 20 gb memcache cluster and a very large text search index with millions of ecommerce products in it.

Which DevOps tools do you use?

Since App Engine helps us scale, we actually do very little DevOps. Here are the tools we use:

  1. StackDriver: We use it to monitor error rates, api response times, memcache stats, etc.
  2. StatHat: An amazing tool for tracking custom stats. We use it to detect anomalies and graph all sorts of internal, and client specific stats.
  3. PagerDuty: Alerts triggered by StackDriver or StatHat go into PagerDuty.

But we’re looking into container orchestration tools such as Kubernetes as we scale up our infrastructure.

Which part of your stack are you most excited about?

Personally, I’m excited about:

  1. Leveraging our massive dataset of well structured ecommerce behavioral data.
  2. Continuing to scale Yumli: our domain specific language, as our client list grows.
  3. Scaling our infrastructure -and maintaining reasonable costs- as our incoming traffic grows and we push the vast boundaries of Google App Engine.

*****

Thanks to Mahmoud and the whole Bluecore team for a great post. Visit bluecore.com to read more about the company and to see their technology in action. Companies: email josh@underdog.io if you’d like to be featured in this series.