Freunde, am Vorabend der Mai-Feiertage haben wir beschlossen, Sie nicht mit komplizierten technischen Artikeln zu bombardieren. Deshalb fanden wir ziemlich interessantes und vor allem einfach zu lesendes Material, dessen Übersetzung wir gerne mit Ihnen teilen. Dieses Material möchten wir mit dem Start des Kurses
"Webentwickler in Python" zusammenfallen lassen.Das Original finden Sie
hier .

Die Übernahme von
Vivendi dailymotion vor drei Jahren war ein Wendepunkt für unsere Organisation. Dies ermöglichte es uns, den Vektor unserer Arbeit zu überdenken, unsere Arbeit selbst von Anfang bis Ende zu überdenken. Wir haben die Gelegenheit genutzt, um
Dailymotion im Allgemeinen zu bewerten, unsere Infrastruktur und vor allem die Architektur unserer Produkte zu überdenken.
Am Ende bestätigte die Selbstanalyse, was wir bereits wussten: Wir wollten unsere Plattform geografisch verteilen und
APIs , Mobil- und TV-Anwendungen entwickeln. Dies bedeutete die Aufgabe der gegenwärtigen monolithischen Struktur und die Annahme eines API-orientierten Ansatzes. Dieser Artikel beschreibt den Pfad, dem wir gefolgt sind.
Kriterien und ValidierungskonzepteWir haben das Projekt mit der Definition von API-Kriterien begonnen, die sich letztendlich auf vier Punkte beschränkten:
- Bereitstellung von gutem DX (Entwicklererfahrung), einfacher Verwendung und Implementierung;
- Die Pflege einer soliden und wachsenden Gemeinschaft , die die Aggregation und Nutzung weit verbreiteter Technologien ermöglichen würde;
- Ähnliches Verhalten wie das Gateway in Bezug auf die Softwarearchitektur , um die Transformation unserer Systemintegration von Monolith zu SOA (serviceorientierte Architektur) zu vereinfachen.
- Möglichkeit zur Implementierung von API-Verwaltungstools, nämlich API-Verwaltung, Dokumentation und Datenzugriff.
Als Nächstes haben wir mehrere API-Modelle ausgewählt und verschiedene Konzepte getestet, um ihre Angemessenheit zu verstehen:
- Rest API mit Swagger
- GraphQL API mit Graphen
- API mit Falcor

Nach strengen Tests haben wir festgestellt, dass
GraphQL und seine Graphen-Implementierungen unsere Kriterien im Vergleich zu anderen Modellen am besten erfüllen. Dies ermöglichte unseren Front-End-Entwicklern, unsere API einfacher zu verwenden und gleichzeitig die Verwendung in Clientanwendungen (z. B. React JS und Apollo Client) zu vereinfachen. In unserer Architektur ist GraphQL auch als Pattern-Gateway einfacher und effizienter. Am Ende haben wir uns schließlich entschlossen, mit GraphQL und Graphen fortzufahren.
Weg zur ProduktionIm April 2017 haben wir nach einer intensiven sechsmonatigen Entwicklung mit unserer API die Produktion aufgenommen. Bis zum Sommer haben wir alle
Dailymotion- Produkte (Web, Mobile und TV) auf unsere GraphQL-API umgestellt.

Als wir uns vor drei Jahren für GraphQL entschieden haben, befand es sich noch in der Beta-Phase und erreichte nicht die Popularität, die es heute hat. Wir waren die ersten großen Akteure in dieser Arena und dies machte unseren internen Wiederaufbau noch angenehmer.
Geburt von TartifletteIn den ersten Monaten des Jahres 2018, nach mehr als sechs Monaten mit Graphen, haben wir beschlossen, einen Schritt weiter zu gehen und unsere eigene GraphQL-Engine zu schreiben. Dadurch konnten wir einige Anforderungen implementieren, die von Graphen nicht erfüllt wurden. Wir haben Kriterien für unseren eigenen Motor entwickelt. Er muss:
- Stellen Sie Python-Entwicklern das am besten denkende DX zur Verfügung.
- Verwenden Sie SDL (Schema Definition Language).
- Verwenden Sie asyncio als eigenständige ausführende Engine.
Nach fast einem Jahr Entwicklungszeit und vielen Wochen des Testens unserer Infrastruktur (durchschnittlich wurden mehr als 100 Millionen Anrufe pro Tag verarbeitet) sind wir stolz darauf, der GraphQL-Community unsere eigene Open-Source-Tartiflette-Engine anbieten zu können.
Tartiflette DNATartiflette ist eine GraphQL Server-Implementierung, die auf
Python 3.6+ basiertDas
GraphQL- Schema
wird mit der neuen
SDL (Schema Definition Language) beschrieben .
Leistung ist ein Schlüsselelement unserer Arbeit und dies spiegelt sich in
Tartiflette wider.
Gebaut mit Blick auf
Zen of Python . Nicht allzu kompliziert.
Hallo Welt auf Tartiflette
import asyncio from tartiflette import Engine, Resolver @Resolver("Query.hello") async def resolver_hello(parent, args, ctx, info): return "hello " + args["name"] async def run(): ttftt = Engine(""" type Query { hello(name: String): String } """) result = await ttftt.execute( query='query { hello(name: "Chuck") }' ) print(result)
Informationen zu den neuen Funktionen finden Sie im Handbuch auf
tartiflette.io .
Was wird als nächstes mit Tartiflette passieren?Das Open Source Tartiflette ist nur der erste Schritt. Hier einige Ideen und Pläne für die Zukunft für die Entwicklung von Tartiflette:
- "Polieren" -Dokumentation für Benutzer und die Community;
- Bereitstellung weiterer Beispiele und Erweiterung der Anwendungsfälle , um Sie zum Experimentieren mit den Funktionen von Tartiflette zu inspirieren;
- Erhöhte Produktivität , hauptsächlich auf der Ebene der Ausführungsengine.
Und wir brauchen dich auch!
Sie können unser Projekt für fast jeden Zweck nutzen und uns bei der Entwicklung von Tartiflette helfen! Bitte überprüfen Sie die Haltbarkeit, zögern Sie nicht, nach Fehlern oder Unstimmigkeiten im Code zu suchen, und geben Sie Feedback, um das Produkt zu verbessern. Wir glauben fest daran, dass Tartiflette durch die enge Zusammenarbeit mit der Community besser wird.
Wie kann ich zum Projekt beitragen?Tartiflette auf Github ;
Lesen Sie die Dokumentation unter
tartiflette.io ;
Senden Sie Feedback und Vorschläge an
Slack .
Treten Sie der Community auf
Twitter bei .