Introducing Tartiflette: Dailymotion's Open Source GraphQL Implementation for Python 3.6+

Stan Chollet
Mar 12, 2019 · 4 min read
Image for post
Image for post

Vivendi’s acquisition of Dailymotion three years ago proved to be an important turning point for our organization, that allowed us to rethink how we were working — rethink our whole way of working — from top to bottom. We used that opportunity to evaluate Dailymotion as a whole, our infrastructure, and, more importantly, the core of how we were building our products.

In the end, this introspection confirmed what we already knew: our desire to geo-distribute our platform and build API-driven web, mobile and TV applications. That meant ditching our current monolithic structure and adopting an API-centric approach. This article chronicles the path we took to get there.

Criteria and POCs

We started by kicking-off this project by identifying our API criteria, which we narrowed down to four points:

  • Provides a good DX (developer experience), easy to use and implement
  • Cultivates a substantial and growing community, one that enables us to recruit and capitalize on widespread technologies
  • Acts as a gateway in terms of software architecture, simplifying the transformation of our system integration from a monolith to an SOA (service-oriented architecture)
  • Allows for the implementation of API management tools, namely API interface management, documentation, and access to data

Next, we chose the following API models and performed several POCs to determine feasibility:

  • Rest API with Swagger
  • GraphQL API with Graphene
  • API with Falcor
Image for post
Image for post

After rigorous testing, GraphQL and its Graphene implementation met our criteria more closely than the other two models. It enabled our front-end engineers to consume our API more easily and simplified its use in client applications (e.g., React JS and Apollo Client). GraphQL also proved easier and more efficient as a pattern gateway in our architecture. We collectively agreed to move forward with GraphQL and Graphene.

The road to production

In April 2017, after an intensive six-month development phase, we went into production with our API. By summer we had moved all Dailymotion products (web, mobile, and TV) to our GraphQL API.

Image for post
Image for post

When we chose GraphQL three years ago it was still in beta and had not yet reached the popularity it has today. We were one of the first big players, and this made our revamp even more gratifying.

The birth of Tartiflette

In the early months of 2018, after more than half a year of using Graphene, we decided to go a step further and build our own GraphQL engine. This would allow us to meet certain requirements that weren’t being met with Graphene. The criteria for our custom engine:

  • Offers a better developer experience that respects the Python mindset
  • Uses SDL (Schema Definition Language)
  • Uses asyncio as the sole execution engine

After almost a year of development and many weeks of testing on our infrastructure (averaging more than 100 million calls processed per day), we are proud to offer our open-source Tartiflette engine to the GraphQL community.

Tartiflette’s DNA

  • Tartiflette is a GraphQL Server implementation built with Python 3.6+
  • The GraphQL schema is defined with the brand new SDL (Schema Definition Language).
  • Performance is the core of our work and this is obvious with Tartiflette.
  • Built with the Zen of Python in mind. No over-engineering.

Hello world, from Tartiflette

Image for post
Image for post

Discover some other features through our tutorial on tartiflette.io.

What’s next for Tartiflette?

The open-sourcing of Tartiflette is the starting of our second milestone and exciting things to come. Here are some of the ideas and plans we have for the future of Tartiflette:

  • Polish the documentation for our users and community
  • Provide more examples and advanced use-cases to encourage you to experiment with the flexibility and powers of Tartiflette
  • Improve performance, mainly on the execution engine

And now… we need you!

Image for post
Image for post

You can use our project for nearly any purpose and help us build the next version of Tartiflette! Please, give it a spin, feel free to inspect errors or inconsistencies in our code and give us feedback to improve our product. We truly believe that Tartiflette will become even better with the collaboration of the community.

How to contribute?

Dailymotion

The home for videos that matter

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store