Django’s role in a polyglot world

David Gouldin @dgouldin slides - https://django-ployglot.herokuapp.com

  • Django is 10 years old
  • it is not a CMS (but was built to make one)
  • used to be LAMP - one (relational) datastore, all on one server
  • now much more service orientated - can even treat the web browser as a service that runs stuff
  • expectations for responsiveness, “app-like”

Django strengths

  • python
  • “perfectionists with deadlines”
  • orm & migrations (though doesn’t cover entire SQL standard)
  • the admin
  • django rest framework (for REST API)
  • celery (async work queue)

Django weaknesses

  • c10k - 10000 concurrent connections to web service - alternatives async.io, twisted, but lose library support

JS client integration

  • community then expect JS on the server

Push to web clients

  • no good solution in Django - long connections - but kills server
  • polyglot can use socket.io, websocketd, golang

async task results

  • add task ids to initial response
  • then have client poll other endpoint to get status of task id
  • OR can use pubsub/async to subscribe to task, and then result gets pushed to client
  • react.js - but then need js running on the server
  • run node on server - React.renderToString(BaseElement)
  • can have node on separate subdomain - have node to initial web page, then have Django as a service provider

Shared auth across services

  • django.contrib.auth
  • have node proxy auth to django
  • access token, check with django
  • have separate auth service that django and others use - but more heavyweight

Take away points

  • Say no to full stack python - not feasible for the web
  • HTTP is your friend (and pubsub is the back up)
  • Think about web browsers as service consumers

Questions

  • when is it worth the effort? When it seems like a webapp - plain webpage (eg blog) doesn’t need it
  • testing? service contracts are really important - can test each service in isolation, and then just do a few integration tests

Table Of Contents

Previous topic

Give your pony wings

Next topic

Local Development with Docker

This Page