Drivy

Drivy is a startup creating a better alternative to car ownership. We are already the leading car rental marketplace in Europe, and we believe the adoption will only keep increasing in the coming years.

This is the blog where every member of the Drivy engineering team shares what they’ve been learning while building the website, APIs and native mobile apps.

Our Tech Stack

While Drivy was historically in PHP, we migrated to Ruby on Rails in 2013 and never looked back. We’re now running Rails 4.2 and working to migrate to Rails 5. On the mobile side, we have native iOS and Android apps. Overall we value solid quality code with a lot of specs that we can ship to production multiple times a day.

This means we use Rspec, Capybara, Phantomjs and integrate it into CircleCI. We also monitor the production environment closely with dashboards built using Telegraf, InfluxDB and Grafana to make sure everything is running smoothly. We use Logmatic (an ELK alternative) to parse and analyze our logs and check Bugsnag to see if any 500 are causing issues for our users.

For the frontend we use ES6 with Babel and a solid internal bootstrap to avoid redesigning forms every week. We also use Webpack instead of the classic Rails asset pipeline and Yarn to manage dependencies.

On the data side, we use MySQL on RDS with multiple slaves and a dozen Redis instances to store things. We also pull data from multiple sources, clean them all and update their schemas before they end up in our columnar database, Redshift. We create, schedule and run data pipelines with Apache Airflow, where tasks are written in Python, Ruby or Bash. We heavily use Embulk to move data between various datasources: CSV, MySQL, PostgreSQL, Amazon S3 and Redshift mainly. Finally, we make sense of all this data with Redash for dashboards and Superset as our drill down tool.

Processes

We also have simple processes and tools, like our homemade toolbelt connected to Slack, to remove headaches, avoid bugs in production and move fast.