Mobile apps are cloud natives — if your company is building apps with on-premise back ends, you’re going to fail
If there’s one class of workload that stands out as ripe for cloud, it’s mobile. For start-ups and Fortune 500 companies alike, it’s the perfect use case for a full public cloud solution. Yet it’s surprising how many large companies still continue to develop apps as extensions of in-house architecture.
Today we’ll look at why this Failure Pattern is doomed from the start and how you can avoid making these mistakes in the first place. Contrary to what you might hear, it’s still true that everyone wants to build an app. It’s also true that many companies don’t have a clue about what’s happening with app platforms and lack the skills to be successful.
Mobile apps are different — really different
There are a few things to keep in mind when developing customer-facing mobile apps:
- Mobile apps are not like other software. You have little control of distribution once they are launched in the store, the ratings system will quickly highlight a dud, and the user’s expectations are sky-high in terms of performance and capabilities.
- Coding mobile apps is hard, debugging can be even harder since you never meet the end user, and for the most part the tools your developers need to be successful are mobile-specific and cloud-based.
- Mobile app users have been trained by the best Silicon Valley companies to expect a constant stream of high quality updates. This demands true agility in your development stack, without which the app will grow stale and wither away.
- You will have two dev teams because somebody in IT thought cross-mobile platform development systems were a bad idea. Now this is the only project in your company with two teams developing the exact same thing (one for Android and one for iOS). While many IT Managers think Xamarin is a stomach ulcer medication, it can really help here.
- You will have no idea what works in the app for your users until you release. This means the functionality will be changing rapidly and you’ll need a platform that can still function reliably while everything changes.
- Everyone you’ll meet thinks they’re an expert in mobile apps because they are in the sweet spot of the Venn diagram between ‘Owning a smartphone’ and ‘Having a son/daughter/nephew/friend who writes apps in their bedroom’. Just remember, when everyone you know gives you their 2 cents, that’s still only 68 cents.
So are you still building that mobile app with no cloud? Good luck on that big bucket of Fail.
Your bad IT is normally invisible to your customer
As companies get larger, their internal technology tends to resemble a tight ball of elastic bands as a critical part of a giant Rube Goldberg machine. It’s simultaneously laughable and terrifying watching decades of kluges jammed together powering the whole thing, waiting to get someone fired when they break it.
If you look at something as relatively simple as mobile ecommerce, it opens an infrastructural Pandora’s Box, which becomes especially obvious when you compare mobile ordering to non-mobile ordering from a customer perspective. For non-mobile…
Purchasing without mobile hides all your terrible technology
- A customer walks into the retail store and has no idea what a Frankensteinian disgrace the supporting technology really is. The customer buys a product and leaves happy. “I love this store,” she says.
- A customer calls an ordering hotline and has no idea the sales person has to log into 10 different systems to place an order and the fulfillment system only works when nobody uses the toaster in the break room. The sales person will talk about the weather, write down the order and credit card number on a piece of paper if there are any problems, and handle the problem after the customer hangs up… happy. “She was so helpful,” he says.
- A customer goes online and doesn’t realize the Shopify front-end sends an order via fax machine to a warehouse that isn’t even connected to the rest of the company. The customer places order and leaves, happy. “Wow, this website was fast,” they all think.
In this non-mobile landscape, it doesn’t really matter if the inventory isn’t real-time, nothing works reliably and systems don’t talk because the company internalizes the chaos and hides its technology shame. When it’s busy in the real world, the parking lot at the store and the size of the call center are the natural bottlenecks that tell customers to try again later.
When you introduce mobile — this all changes
- The customer opens your app, expects to browse inventory in real time, place an order and receive a confirmation instantly.
- The customer opens app to modify order, get tracking numbers and expects accurate ordering and delivery information throughout. They expects your app to provide timely notifications for relevant alerts about the order throughout
- A mobile customer goes to the website and expects all of the above functionality, plus completely in-sync performance, to the point where even the shopping carts across mobile and web need to have the same items at the same prices.
- The customer visits your mobile app on Black Friday and expects the same performance as any other day.
In each of these cases, previously hidden issues surface directly on the app if it’s just a bolt-on to the problematic infrastructure. I can’t stress enough how this approach creates a window into what’s wrong with your IT.
So when you wake up one day and find yourself facing a mobile app project, initially you might think it’s like the website but with a different front-end. But once you start thinking through the use cases from a customer perspective, that’s when you’ll break out in a cold sweat and realize the project is about fixing your company’s entire IT disaster. Then you’ll either start looking at the cloud or updating your LinkedIn profile.
Cloud To The Rescue
Describing mobile apps as complicated is like calling a drowning person ‘wet’. In many ways they represent the pinnacle of what can be delivered technically in an IT environment. So no pressure.
If I were writing an enterprise-scale customer-facing mobile app today, I would start with AWS Mobile or Google Firebase. Both of these extraordinarily rich platforms can solve many of the headaches in mobile development. Both have services that will let you solve:
- Authentication: let’s users log in seamlessly, integrate with social sign-ons and identify fraud detection along the way.
- Messaging: email, SMS, push notifications, integration with Google Now and other smart alerting systems.
- Cross-platform development: rich SDKs let you build identical functionality across iOS and Android (you knew about writing everything twice, right?).
- Analytics: collect app analytics across millions of device and process at cloud-scale into real-time dashboards.
- Scalability: fully managed services that provision and auto-scale underlying hardware when your users get busy and the install base explodes.
- Deployment pipelines: allows your developers to write, stage and deploy different parts of the application in a robust, repeatable way.
- Testing: device farms that run your apps on hundreds of real devices and collect bugs, crashes and performance issues.
… and the list goes on. Any one of these bullet points would be a nightmare to tackle using on-premise approaches and some would be flat-out impossible. I know, I know, if you had an unlimited budget and thousands of engineers, you could ultimately build all of this yourself. But why build a coal power plant for your toaster when you can just use a power outlet?
Who needs servers anyway?
Amazon Lambda and Google Cloud Functions are two examples of what’s called serverless computing and there is some really compelling goodness here. This is the flying car to your IT’s horse and cart and will likely soon be how all web and mobile development will be done in the future. It’s also impossible to do on-premise so for all the IT folks who think they’re doing private cloud by running VMware, bubble burst.
At a basic level, all any computer system really does is take some input, do something, and produce output. Servers and operating systems hide this fact and give us something to play with and maintain but from a business or application standpoint, they don’t create any actual value. When a user is putting his dog-face on in Snapchat, he doesn’t care if you just resized from a m1.medium instance to an m1.large, or if your dev team just updated their CentOS version. His primary concern is the AddDogface function provided uniquely by the service.
In the serverless world, we focus only writing those functions and nothing else. Serverless affords us the opportunity to complete ignore the infrastructure, pretend it doesn’t exist, and safely assume it will run when needed. What on earth does this mean for mobile? Let’s geek out for a second at this social message app example using AWS Lambda:
The beautiful things here might not be immediately apparent:
- Whether you have one user or one billion, this will work. The design focuses on functional flow and logic.
- You only pay for what you use so the cost scales with your app’s success (there are reported cases of infrastructure costs dropping by 90% with this model).
- It’s extremely simple and flexible. Simple and flexible work well for on-time agile mobile products. Complex and fragile do not.
- Developers are happiest when writing functionality related to their app and not troubleshooting infrastructure. Trust me on this one.
“We’ll never need a mobile app.”
Mobile apps are difficult, unavoidable, challenging, business-changing, enlightening, frustrating, remarkable, fragile and mercurial. Even if your company isn’t producing customer mobile software today, it will be tomorrow.
By any metric, customers are turning to mobile devices ever more often, and it’s only a matter of time before you’ll need a comprehensive mobile game plan. Mobile is profoundly changing the way customers (and employees) interact with companies and there are complex issues to handle.
Cloud solutions give you the best opportunity to deal with the most onerous problems here. It’s hard enough to build a useful, fast, good-looking and functional application that will delight your demanding customers without dealing with issues around scaling, security and agility that have been largely figured out for you. Now go build your awesome serverless mobile app!
Did you enjoy this? If so, click the heart icon! Do you have questions? Don’t be shy, send me a tweet or comment!
In the next installment, I’ll be looking at how cloud services can apply to some common business applications.