Wellfire Interactive // Expertise for established Django SaaS applications

The Old Pony: "You're locked in here with me!"

Maybe in another life Rorschach, from Watchmen, was a software vendor.

Software lock-in is, in simplest terms, what happens when you pick a piece of software and are stuck with that decision, locked-in. What usually comes to mind is proprietary software - vendor lock-in by method of proprietary data formats, that ensure customers use the vendor’s software for eternity. Working with open source software like Django we’re immune to this issue though, right?

Image

Close! But not quite.

As a framework, Django offers a lot of features designed to avoid lock-in. As a WSGI-compliant library you can use any WSGI application you want to serve your app. The ORM supports multiple databases, with first class support for PostgreSQL and MySQL. You can take the same app and run it against different databases and largely expect it to work exactly the same using each. Of course your app will be “locked-in” to Django, but let’s take a few things as given here. However, once you start using backend-specific features or unique backing systems, you give up some optionality and the switching costs start to increase. That sounds bad, right?

If you’ve had your morning coffee you’re probably asking some questions now:

  1. What are the lock-in costs?
  2. What kinds of choices represent lock-in?
  3. Why does lock-in matter?
  4. Are these costs always bad?
  5. What is the solution? And the answers are:
  6. The cost of reworking your software to switch to an alternative, including potential urgency and the cost of finding or creating an alternative
  7. Several different kinds (see below)
  8. The switching costs are real in and of themselves, will slow other feature development, and absent an alternative the given choice may be a liability
  9. They’re never good, but often they’re worth while
  10. It depends! Over the next few weeks, we’re going to explore some of the lock-in scenarios you’ll encounter, working with Django apps or any other web framework. These include databases and other data services like search engines, Python libraries, front-end frameworks, and third-party APIs. For each we’ll identify what the choice looks like, why it matters, when to stick with a choice with expensive switching costs, and how to address the switch when you need to. 

Forever yours because no other formats work the same way,
Ben

Learn from more articles like this how to make the most out of your existing Django site.