OK, that title sounds a bit weird, so let me explain.

If you live in Australia you may have seen that the national airline Qantas had a little stumble last week. I would log on to the mobile phone app, and normally it shows a brief summary of your frequent flyer membership

image

The problem there is .. if you refreshed the screen, then the app also would show you details of random members of the frequent flyer program.  I didn’t take any screenshots, so these are some example from those posted on Twitter, each time after someone hit refresh on their own app.

imageimageimage

Just random (but real) members details coming up on my app!

In isolation, that does not seem like such a big issue, but when presented with someone else’s details, you could also then click on the “My Bookings” and lo and behold, you could also get their boarding pass for upcoming flights!

image

That of course is a much bigger deal.

Anyway, Qantas had to roll out an emergency fix and after a day or so, things got back to normal (although apparently a lot of customers had to get boarding passes re-issued at the airport).

This post is not about dunking on Qantas – I use them regularly 🙂 but it does bring me back to the title of this post.

If the client facing part of your app is a 50 megabyte chunk of Javascript that does complex interactions and interpretations of data, then if that app has a bug like the Qantas app did, then that is a nightmare to resolve, because the smallest piece of the task to fix it is the software itself. The much larger challenge comes once the bug is fixed – you need to push the fix out to everyone running that app. Maybe some people have automatic updates turned on, maybe some people have that disabled. What if someone is using the app and never exits it – how do you force them to get the fresh update. It often seems in these days of ever larger apps on our phone that we have forgotten the lessons we learned (the hard way) in the days of client/server. The bigger the client, the harder it is to maintain.

Conversely, if your app is primarily just doing rendering of data, that is, it does not do a lot of complicated logic, then when a bug is reported your customers, there is a much higher probability of the issue lying with code that is running inside your data centre on an app server or in the database. Both of those things are much easier to fix than the millions of devices out there on the internet.

I’m a data centric app fan due to my long time use of APEX, and even in the conventional full code arena, I’ve always been a fan of putting logic within or near the database. But my motivations were about the common pain paints – better performance, reducing latency, etc. It was only when I experienced the Qantas issue that I realised another facet to this – Data Centric apps are easier to fix when they go wrong.

This is why I think there’s a much bigger future in PWAs on your phone. Not necessarily for the easier build/deployment model, but for the ability to rapidly address problems when they occur, because there is likely nothing needed to be fixed on the app.

One response to “Data Centric Apps are better when they do NOT work”

  1. iudithd5bf8e4d8d Avatar
    iudithd5bf8e4d8d

    Hi Connor,
    This specific case was kind of “funny”, but it could have easily become sad 😦
    Imagine that, instead of accessing the flying boarding pass of someone else, one could have been able to access his/her credit card data instead …

    All this craziness arrives from a single source, in which I see the essence of today’s software as a whole:
    The moment when you access a web site, in any way and from any device, you are literally overwhelmed with a lot of data that you HAVE NOT
    asked for !!! And, all this, just for potentially exploiting your becoming a future customer for something …

    I think that software should go back to where its original sense was, namely, to process and supply information ONLY ON DEMAND,
    and only to those authorized to make such a demand.
    Aka, back to the old good days of well-protected client/server applications that run inside specific environments, and not in the open-wilderness
    of everyone’s phone on this planet … including thieves and criminals of all kinds.

    For any service, be it a flying ticket or anything else, I would personally prefer to access an office and receive it directly from a credited and verified human, with all the security checks in place, rather than having all my data stolen, go figure out by whom and for what purpose …
    Even if it’s a bit more convenient to have an application open on your device and just tap a button …

    Looking at where this world is heading, I think that it will not be long before even food will only be supplied on demand, if accessible at all …

    Cheers & Best Regards,
    Iudith Mentzel

Got some thoughts? Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trending