How to separate frontend from a highload python project with no problems

By Oleksandr Tarasenko

Elevator Pitch

Everybody knows that it is hard to scale old highload monolithic projects that use pythonic templates for frontend. I am gonna tell how we transformed our product using trending and proper technologies like GraphQL, Apollo, Node.js with limited developer resources in a short period of time.

Description

Introduction. Huston we have a problem. Old monolithic python(2.7) project without async features and monolithic frontent (mako templates), monolithic database, long deploy, REST API, templates context, frontend dependence on backend

  1. Our goals:

    • SEO (we needed to save all our positions in google)
    • Independent frontend
    • good user experience within our product
    • documentation, type validation
  2. Tools and expertise:

    • good expertise in ReactJS/Redux and frontend infrastructure
    • own GraphQL server implementation
    • well-established CI system and container system with logs/metrics
    • experience from our previous experiments and failures
  3. Step by step implementation.

    • Some metrics and numbers from prom.ua

    • GraphQL server.
      • two-level graph
      • auto documentation
      • some perfomence metrics
    • Apollo client
      • stateless ReactJS with routing
      • frontend can be improved only by frontend developers
      • dependencies only on data layer
      • some performance metrics
    • Node.js
      • simple express app with routing
      • SSR
      • Apollo client for server
    • Some metrics and numbers from prom.ua after implementation
  4. Problems
  5. Plans for the future