Tech Tuesday: What We Have Learnt On Our First Blockchain Project
11 July 2017 |
About a 4 minute read
So far in our blockchain blog series we have focussed on explaining what the blockchain is and how we might use it, what blockchain actually means and the different platforms an agile team can use to develop blockchain solutions. In this post we will highlight some of the challenges we have experienced with our blockchain project. In order for you to think about your potential blockchain solution in a wider context, we will end with questions we wished we had asked at the start.
AND Digital started working on a blockchain product for a client three months ago and it has gone as smoothly as can be expected when working with new and esoteric technology. The world is still trying to figure out what blockchain is and how we can make full use of its potential. Google trends shows just how much the interest in blockchain has increased over the past five years with interest currently being the highest it has ever been. As a development team it has meant we have had to think outside of our usual paradigm of building apps in order to maximise the benefits of blockchain.
Choosing the right platform was one of the biggest challenges we faced because the team was unfamiliar with blockchain. It was difficult to know what would fit our needs. After some research we decided to use Hyperledger Fabric not least because it is a permissioned network and offers smart contracts but also because it was built for modular architecture, which would fit our needs.
Building out our solution had its challenges but overall we are about to complete the solution we set out to deliver, which means a happy client and a happy development team. But one area that we did not anticipate being a friction point was the deployment and integration testing of a blockchain app.
Deploying a blockchain product requires you to think about your current deployment strategy and if it’s useful in this type of application. Most crucially, how you are going to package the app so that potential users can join the network and get your blockchain code on their computers. We are still working through an appropriate solution for this problem.
Because we have not fully deployed the blockchain codebase we have not able to run full integration tests. A new deployment strategy is being worked on as I type which will hopefully allow us to move forward with full integration testing.
As discussed above, there have been challenges, and not simply because blockchain is so new but also because it requires you to approach your design and solution a bit differently to conventional app development. On reflection there are a number of key questions that we wished we had asked ourselves before starting as the answers would have helped in our overall delivery. Therefore, we advise you ask yourselves the following eight questions prior to kicking off your project:
How do the nodes communicate?
- Do you have enough knowledge about chaincode, and how that interacts with the other parts of the service?
- Can we achieve cross platform communication between the ledgers of different networks?
- What are all the configuration options in the fabric peer and membership services (Hyperledger)?
- How do we deploy the chaincode?
- How will we package the chaincode in order for it to be installed on other nodes?
- How do we perform integration testing?
- Is there any blockchain specific tooling available for deploying blockchain code?
We hope that by answering these questions at the start of your project it will help you to ask even more questions and make better estimations, which can only increase your chances of delivering a successful product.
Senior Full Stack Developer (London)
Champion software quality and technical vision for AND and our clients, work on large-scale projects and help junior and mid developers grow in their roles.I'm Interested
Full Stack Developer (London)
Put your development expertise to work, building remarkable, digital products in Agile environments using a variety of languages and frameworks.I'm Interested
Tech Lead (Reading)
Bring your expert tech knowledge to the table to influence the direction of projects, whilst coaching and your team through engineering best practices.I'm Interested