In fact, you might remain unsure whether blockchain technology is just hype that will fade away, or is actually something you’ll have to support in the future as an IT professional. Increasingly, evidence suggests that the latter outcome is likelier. Not only are thousands of startups eagerly building (or claiming to be building, at least) blockchain-based apps that they promise will change the world, but established companies like IBM are launching sober-minded, enterprise-focused “app stores” for software that runs on the blockchain.
This trend suggests that, sooner or later, a blockchain application will be coming to a workplace near you. And you’ll need to help develop, deploy, manage and/or support it just as you do any other type of application.
That’s why now is a good time to start learning about the unique software management and support challenges that arise from blockchain applications.
What Is a Blockchain App?
When I say “blockchain app,” I’m referring to an application of any type that interacts with the blockchain in some way.
The best-known blockchain apps created so far fall into two categories: The first is decentralized applications, or dapps, which are executed using the decentralized compute resources of a blockchain. Second, there are so-called smart contracts, which enforce agreements automatically without the intervention of a central authority. The blockchain is a central feature of these types of applications.
But there are other ways for an application to use the blockchain without falling into these categories. For example, a traditional app that is hosted on a centralized server--as opposed to the decentralized environment of a blockchain like Ethereum--could use a blockchain for the purposes of data storage, even though it doesn’t do anything blockchain-related in other ways.
Blockchain Support Challenges
No matter ho your application interacts with a blockchain, and whether the blockchain it uses is public or private (also called permissioned), there are special blockchain support challenges you’ll need to be prepared to handle, including the following:
One of the key selling points of a blockchain is that, in theory, no single group is in charge, and everything is done by consensus.
Yet that architecture is not foolproof. Malicious parties can undermine the decentralized consensus mechanisms of blockchains via exploits like so-called 51 percent attacks.
If your job is to write or manage a blockchain app, there’s only so much you can do to prepare for this risk, unless you have control over the blockchain itself and can help secure the network (which is only the case if you’re working with a permissioned blockchain). But one useful strategy is to have a process in place for moving your app--along with any relevant data--to a different blockchain in the event that its original blockchain is compromised.
One of the greatest challenges facing most public blockchains today is limitations on the number of transactions they can process at once. This limitation can easily translate into performance issues for your blockchain app: If the app can’t write data to the blockchain quickly enough, or can’t gain access to enough compute resources, performance can break down.
Here again, there’s not much that you can do to solve the underlying problem unless you control the blockchain itself. But you can make sure that you perform sufficient testing and monitoring to catch application slowdowns when they occur. You can also take steps to address performance problems by paying for more resources in order to speed transactions, as long as your blockchain supports this approach.
The amount of data that you can read and write from a blockchain, and the size of the compute resources available for running dapps on it, is determined in large part by the size of the blockchain itself, as well as by how many people are trying to use the resources at the same time. If insufficient resources are available, your blockchain application may not be able to scale.
This is an area in which blockchain poses special challenges. On traditional infrastructure, you could simply expand your infrastructure when you run into scalability limitations. In other words, you could add new servers, storage, memory or whatever you need. But on a decentralized blockchain, you can’t simply throw more resources at your problem. The blockchain network itself is your infrastructure, and you can’t do much on your own to expand it.
Perhaps the best way to avoid scalability issues is to address them at the design stage of your app. Be strategic about the ways in which your application interacts with the blockchain. For example, minimize unnecessary transactions. And choose a blockchain that is well positioned to meet your needs. Some blockchains scale better than others.
Although there is no single, universal way for exchanging data or other resources between blockchains, a variety of cross-chain communication protocols are appearing. This means that your blockchain app may interact with multiple blockchains at once, adding even more complexity to the task of supporting and managing blockchain apps.
The key factor to keep in mind here is the importance of ensuring that you have the tools and capacity to monitor multiple blockchains at once. Don’t lock yourself into processes or platforms that can only monitor a certain blockchain. In addition, ensure that you can monitor the cross-chain protocols themselves, because a failure or oversight within these protocols could derail your app.
As applications that depend on the blockchain in one way or another grow in popularity, so does the need to support and manage those apps just as you would any other type of software. Blockchain apps not only require you to do everything from a support perspective that you would for any other type of application, but also pose some novel challenges in areas like scalability and performance. Meeting these challenges will likely prove important for IT professionals in the future.