Tip of the Iceberg

If you’re reading this, that means we finally got to tell the world about Brava. And what a nice splash! Men’s Health. Wired. The Spoon. Well+Good. ABC7 came to our showroom ribbon cutting.

For those of us working on the preorder website launch day looked something like: Oops, sharing isn’t working for some people on Facebook. Uh-oh, the URL we gave the showroom doesn’t work. Woohoo another presale! Why do our stats say that page load is taking 500ms?! Why isn’t our stats dashboard refreshing? Why are the ovens disconnecting when we deploy code to the Ecommerce site?

It is not obvious from what you see today on brava.com, but we have been working on our user-facing software and infrastructure that doesn’t run on the oven since March 2017. And all they let us launch was a (beautiful, reactive, fast, scalable) preorder site!

Iceberg.jpg

Yes, mom, I helped with that web site. No, mom, that isn’t all we’ve been doing for over a year. — Me, on launch day

During the first week of March 2017, after years of development on the oven itself, Brava got serious about software that didn’t run on the oven. Min Kim, Jack Tihon and I were brought on to build, well, everything else. At that time the infrastructure was made up of Google Apps, a website hosted at Squarespace, and an internal Django app for oven recipe data.

Min and I had worked at Playdom and Disney with the CEO (John Pleasants), one of the cofounders (Dan Yue), and VP of Product/Growth (Taylor Adams). These guys are not known to dilly dally. They have big plans and expect big things from engineering. We knew going in we’d have to produce world class software, quickly.

By the end of that week we had a rough list of systems:

  1. Ecommerce, with some advanced requirements
    1. Preorders
    2. Multiple vendors in one cart
    3. Ship one order from multiple warehouses
    4. Integration with our Third Party Logistics (3PL) partner
    5. Referral system
    6. An API for use by the ovens and mobile app
  2. Mobile app
    1. For iOS and Android
    2. Full Ecommerce support, including ordering food packaged and delivered by our partners
    3. A secured real-time connection to the oven that works over the internet
  3. A secured real-time always-on connection service
    1. Usable by ovens, apps, and internal tools
    2. Handling live telemetry data, cooking status, camera, and command/control
  4. Content management, usable by non-engineers
    1. Recipes displayed to customers in-app and on our web presence
    2. Recipe procedures (code) created by our culinary team that the oven software can interpret
    3. Marketing website
    4. eCommerce website
    5. With builtin multivariate testing support across all platforms
    6. With the ability to deploy content to different environments, review changes, and deploy/rollback to a specific version.
  5. Integrations with food partners
    1. Stock levels
    2. Shipping updates
    3. Customer service
  6. Over the air update services
  7. Typical infrastructure spanning web, mobile, backend, and oven
    1. Analytics
    2. Logging
    3. Alerting
    4. Authentication and authorization
    5. Continuous integration
    6. Automated, 0 downtime, deployments
  8. Internal tools we wouldn’t see coming
  9. And more…

Maybe we should decide what to build first. Oh, wait, we have to put shared passwords somewhere. Oh, yeah, my laptop needs encrypting. Hmmm, what technologies should we use in the long term? Whoa, we have to choose a cloud provider. Lunch.

Luckily we were comfortable building big consumer facing apps and services from scratch and agreed on a few key things off the bat.

We would:

  1. not get locked into a cloud vendor
  2. leverage open source technologies
  3. take our customers’ privacy and security seriously
  4. put metrics and logging on all of the things
  5. automate everything, especially server operations and builds
  6. forbid a constant crunch time culture (we spent time in the game industry)
  7. never depend on someone’s workstation to build or deploy to any environment

Fast forward to now. Those loose requirements have turned into a myriad of tech. In no particular order: Terraform, Jenkins, NodeJS, Python, Django, Saleor, PostgreSQL, Kubernetes, Nginx, Kong, Docker, Kafka, Fluentd, Redshift, S3, git, Grafana, InfluxDB, Redis, and probably a dozen tools I’m forgetting. It’s amazing what you can quickly piece together these days.

Our engineering team has more than doubled in size and we have built most of what we originally set out to build! Beta customers, employees of Brava, random people in our showroom, and the occasional journalist are using our products every day. And, to top it off, we got to show the world a tiny piece of what our team has been working on! I can’t wait to get into the nitty gritty of how our technology ticks behind the scenes. Stay tuned…

Here is the obligatory careers page link, because what would a Silicon Valley blog post be without that?

 

Article Written By: JD Conley, Staff Engineer at Brava

Date: 7/25/18