In theory, this article makes a lot of sense. But in practice, I can't see at all how a product manager or development team would ever be able to ship anything using this mindset of keeping applications cloud-neutral, modular and portable.
Building applications and elements to be modular adds hours – even days, weeks, or more – of extra developer time up-front to code, pushing your time to market way out into the future. And after all of that extra work, the only thing you have to show for it is that you're prepared for the possibility of your company or product being sold, in which case you'll be prepared to more easily integrate or remove pieces of an application.
Even then, with all that prep work and additional dev effort, there is no guarantee that any of that extra up-front work would even pay off at the end. Developers should be focused on the minimum viable product, and not on the what-ifs of the future.
One point from the article that I do think is beneficial and sound advice: Avoid reliance on third-party services and vendor lock-in as much as possible. This strategy makes it easier to pivot when business requirements change, or when vendors end-of-life or change the services you rely on for your app's core functionality.
The flurry of interest in acquiring TikTok shows the value of a popular social network with vast troves of consumer data. The deal also holds an important lesson about technology use that other businesses can learn from: the need to design applications in a flexible, portable way.
One challenge for any company that buys TikTok will be how to carve up its technical infrastructure outside of China without destroying its value in the process. The impetus for the deal is that the US doesn’t want China “spying” on its citizens through the app. That will require untangling the data and application code on the back end.
TikTok owner ByteDance also runs a similar app called Douyin, available only in China, and the apps reportedly share technical resources including user data, server code, and the algorithms that determine which content and ads a user sees. ByteDance needs to separate those elements in the narrow timeframe it’s been given, and its ability to do that effectively will be a factor in how much a suitor is willing to pay — and perhaps whether a deal happens at all.
There are lessons here for other businesses. It’s not uncommon to sell or spin off a product or company division for strategic reasons, and how those assets are architected can impact their value and the ease with which they can be sold.
The days of building giant monolithic applications are long gone. Most new apps are built in the cloud using smaller microservices that can be scaled up and down as needed and updated independently. That’s good for introducing new features quickly but it can be hard to disentangle apps if they’re not designed carefully using open standards and technologies.
There are three main areas to consider: the cloud infrastructure, the application code, and the data. Here’s how to design each in a way that makes them portable and flexible enough that they can be separated cleanly if needed.
Keep it cloud-neutral
Most businesses have a preferred cloud provider, and any app being acquired may need to be moved onto a different service. In TikTok’s case, ByteDance recently signed an $800 million deal to run the app in Google’s cloud. Certainly, Microsoft or Oracle would want to move the app to their own cloud as soon as possible to collect the revenue.
One way to get locked into a cloud is using high-level managed services, like Amazon Redshift or Google Cloud Big Table. These services are alluringly simple to deploy but notorious for locking customers into proprietary formats. Even the managed versions of popular open source products like MongoDB and Elasticsearch can have subtle differences depending on the cloud provider, making it hard to port apps when you need to.
Think of the public cloud as an infrastructure service, not the basis for architectural decisions. If you’re building the next TikTok, select services that aren’t specific to one public cloud and don’t limit your options by going all in on one provider.
Make apps modular and portable
Applications should be developed as microservices and deployed in containers based on a widely used standard like Docker. Containers package everything an app needs to run into a self-contained bundle, including the application code and any dependencies or configuration files it requires. That makes it easier to move or copy an app onto a different cloud or hardware platform.
Because containerized apps are modular by nature, each application service can be dealt with individually as needed. For example, maybe the user interface code is copied over while the security services are rewritten. Or a business could sell off specific functionality and retain other parts of an app. The algorithms themselves can be updated for each country or region, depending on local market needs.
Keep the data independent
ByteDance has a trove of data about its users around the world. Given the US’s privacy and security concerns, it will need to unbundle the data associated with its international users and ensure ByteDance has no way of accessing that information after the deal is complete.
Managing data in the event of a sale starts with knowing where all your data lives, including any backups. Data should be architected intentionally and segmented by country or zone of operation. This is a good practice in any event, for compliance with regulations like GDPR or nation-specific data sovereignty laws, but may also be essential in the event of a sale.
In addition, data shouldn’t be hard-wired to the underlying storage system. Cloud native technologies like Kubernetes and containers allow data to reside anywhere and connect to an app as needed. In the event of a sale, data can be moved to a different cloud, data center, or region without having to rewrite the application or rip out the storage hardware. In short, data should be kept highly portable and there are standards-based cloud technologies that make that possible.
It’s unclear who will acquire TikTok but the deal could be a lucrative one. Facebook paid $1 billion for Instagram and the service generated $20 billion in ad revenue last year. TikTok has about 80 million users in the US and it is still growing fast. But these deals can be complex when data and applications have to be disentangled on the back end. How you architect your infrastructure can have a big impact when it comes to a sale.
So let this deal serve as a lesson. Design for maximum flexibility, because you never know what the future holds.
Murli Thirumale is co-founder and CEO of Portworx, provider of cloud-native storage and data management solutions for Kubernetes.
New Tech Forum provides a venue to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all inquiries to firstname.lastname@example.org.