Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GraphQL - Un gran paso adelante

Syrus Akbary
September 25, 2018

GraphQL - Un gran paso adelante

Slides de la presentación para Python Madrid en las oficinas de Paradigma Digital

Syrus Akbary

September 25, 2018
Tweet

More Decks by Syrus Akbary

Other Decks in Technology

Transcript

  1. syrusakbary Graphene.tools
    GraphQL
    Un gran paso adelante

    View Slide

  2. syrusakbary Graphene.tools
    @syrusakbary
    MADRID SAN FRANCISCO

    View Slide

  3. syrusakbary Graphene.tools
    #GraphQLMadrid

    View Slide

  4. syrusakbary Graphene.tools
    GraphQL

    View Slide

  5. syrusakbary Graphene.tools
    REST
    • https://api.twitter.com/timeline
    • https://api.twitter.com/tweet
    • https://api.twitter.com/user

    View Slide

  6. syrusakbary Graphene.tools
    GraphQL es un lenguaje de
    consulta para tu API

    View Slide

  7. syrusakbary Graphene.tools
    GraphQL
    • https://api.twitter.com/graphql

    View Slide

  8. syrusakbary Graphene.tools
    • https://api.twitter.com/graphql

    View Slide

  9. syrusakbary Graphene.tools
    • https://api.twitter.com/graphql

    View Slide

  10. syrusakbary Graphene.tools
    • https://api.twitter.com/timeline
    • https://api.twitter.com/tweet
    • https://api.twitter.com/person
    REST?

    View Slide

  11. syrusakbary Graphene.tools
    REST?
    { }

    View Slide

  12. syrusakbary Graphene.tools
    • https://api.twitter.com/graphql
    { }

    View Slide

  13. syrusakbary Graphene.tools
    GraphQL
    Introspección
    Tipado
    Validación
    Flexible
    Universal
    Simple

    View Slide

  14. syrusakbary Graphene.tools
    >

    View Slide

  15. syrusakbary Graphene.tools
    GraphQL es mejor
    que REST

    View Slide

  16. syrusakbary Graphene.tools
    Ummm…

    View Slide

  17. syrusakbary Graphene.tools

    View Slide

  18. syrusakbary Graphene.tools
    Cómo puedo empezar a
    usar GraphQL?

    View Slide

  19. syrusakbary Graphene.tools

    View Slide

  20. syrusakbary Graphene.tools
    GraphQL es sólo una
    especificación

    View Slide

  21. syrusakbary Graphene.tools
    GraphQL en Python con

    View Slide

  22. syrusakbary Graphene.tools
    • 3 añitos desde el primer commit

    3700 ⭐ en Github
    • Enorme Comunidad detrás
    • El framework GraphQL más usado - 500.000
    instalaciones mensuales*
    • Usado por más de 5.000 compañías en producción



    Graphene
    Python

    View Slide

  23. syrusakbary Graphene.tools
    Integraciones con Servidores
    • Django
    • Flask
    • WebOb (Pylons, Pyramid)
    • Sanic
    • Aiohttp

    View Slide

  24. syrusakbary Graphene.tools
    Mapeo
    automático de
    ORMs

    View Slide

  25. syrusakbary Graphene.tools
    Integraciones con ORMs
    • Django
    • SQLAlchemy
    • Mongoengine
    • Google App Engine (GAE)
    • Peewee

    View Slide

  26. syrusakbary Graphene.tools
    Ejemplo de uso con Django

    View Slide

  27. syrusakbary Graphene.tools
    Demo Time

    View Slide

  28. syrusakbary Graphene.tools
    https://github.com/
    syrusakbary/
    graphqlmadrid

    View Slide

  29. syrusakbary Graphene.tools
    Buenas Prácticas

    View Slide

  30. syrusakbary Graphene.tools
    Versionado con GraphQL
    • No existe versionado en GraphQL
    • Estructura de sólo adición (append-only schema)
    • Fuerza que no haya cambios drásticos (breaking-changes)
    • Los campos se pueden marcar como “deprecados” (obsoletos),
    advirtiendo al cliente cuando los use.

    (mientras haya campos obsoletos que son utilizados por los
    clientes, tendrán que ser mantenidos)
    • Eliminar los campos deprecados una vez no tengan ningún uso

    View Slide

  31. syrusakbary Graphene.tools
    Relay
    Relay es una especificación que extiende GraphQL y añade dos
    nuevas prácticas en los servidores:
    • Nodos (Nodes)
    • Permiten que se pueda acceder a ellos desde la Query
    principal
    • Fuerza que haya id’s globalmente únicos
    • Conexiones (Connections)
    • Ayudan de forma significativa a paginar listas de elementos

    View Slide

  32. syrusakbary Graphene.tools
    Cómo empezar* un
    proyecto open-source
    *y poder vivir de ello

    View Slide

  33. syrusakbary Graphene.tools
    Pasos
    • Crea un README detallado y bonito *en inglés, si es posible
    • Se claro/a con el problema que la librería resuelve
    • Pregunta por feedback a la comunidad
    • Marketing, mucho marketing:
    • Envía emails a gente que pueda estar interesada
    • Difúndelo en Hacker News, Reddit…
    • GitHub Trending

    View Slide

  34. syrusakbary Graphene.tools
    Como empezó Graphene
    • Ya existía una librería para usar GraphQL en Python,
    pero era difícil de utilizar (graphql-core)
    • Resolvía un problema - usar GraphQL en Python
    fácilmente
    • Código muy básico (y feo ) - API first
    • Contacto directo (via email) a gente que pudiera
    estar interesada, para que lo utilizaran y dieran
    feedback

    View Slide

  35. syrusakbary Graphene.tools
    …y cómo vivir de ello
    • Ofrecer soporte comercial a empresas
    • Utiliza Patreon / OpenCollective para recibir
    ayuda de la comunidad
    • Lanza features adicionales de pago
    • Aplicar a fondos: MOSS, Stripe Open Source

    View Slide