The Road to Integration: Part 2 — Application Development
The full article was originally published by Michele Nati, PhD on Medium. Read the full article here.
The next step is to build your IOTA-powered solution.
Remember that we are always happy to help if you need assistance with the technical integration of IOTA technology. This might be as simple as explaining how to use existing APIs to deploying your own node or Private Tangle, as well as integrating IOTA into your enterprise stack and application ecosystem. Also, do not forget that our application blueprints, like the IOTA Data Marketplace or the IOTA Industry Marketplace, already demonstrate DLT-specific scenarios and provide well-defined APIs which simplify the integration and accelerate your own research and solution building.
You should carefully evaluate integrating those designs if your solution is drafted to provide data integrity, machine-to-machine contract agreements, and payments for data and services.
However, in the case you are designing something completely novel you might want to consider taking one step back and start with an ideation or innovation workshop to get a better understanding of your as-is situation. Strategic consulting through the IOTA Foundation (IF) or integration partners is always an option to support and accelerate the development and implementation of new digital business models.
The figure below provides the methodology of our innovation process.
For the sake of this article (and as a natural continuation from its part 1), we assume that this innovation process has already been completed and the value of your solution is understood.
With that done, the solution development and integration phase can start (right part of the figure above).
Let’s dive into how a solution development with IOTA will look like.
We have clustered the different stages of solution development into three categories:
- Prototyping and Proof of Concept (PoC phase): here the aim is to develop a stand-alone software component built on the IOTA devnet or on a Private Tangle. This PoC will implement the business logic of the solution and will integrate with the IOTA network but provide limited UX/UI functionalities.
- Minimum Viable Product and Real World Testing (MVP phase): here we create more refined software components, fully integrated with your existing systems and well-tested to work on the IOTA network. More advanced UI and UX features are also developed.
- Product launch and solution Scale (Scale-up phase): here we develop a fully functional production-ready solution, with advanced UI/UX features and dedicated resources on the IOTA network, e.g., a consortium-based Private Tangle or dedicated IOTA IRI and chronicle permanodes.
The figure below summarises the different phases and the recommended IOTA networks.
Each of the above phases is usually developed in a dedicated environment, to ease the deployment of prototype solutions, enhance control during the testing phase or consider other corporate development policies.
Depending on your Tangle selection the first step is to set up the necessary infrastructure. A common recommendation is to move from an initial private development in a Single-Node Private Tangle to a private production testing in a Multi-Node Private Tangle, when working with multiple parties. Or from the public devnet towards the final production-ready solution running on the IOTA mainnet.
The following graphic shows the underlying infrastructure of each Tangle:
With this clear, let’s see what a development and integration journey looks like.
The PoC phase: Be agile, build a PoC first!
During this phase, we start discussing/reviewing your idea. Often, before we start sharing ideas, we sign a bilateral NDA.
After that, we need to derive the technical requirements in order to design the architecture of your solution. An IF technical analyst can support you in this phase.
Usually, we identify two possible integration patterns:
1) Integrating IOTA directly at the device level, when a device running an IOTA client can directly issue transactions to an IOTA node and interact with the network. IOTA is already available on many devices, such as the X-CUBE-IOTA1, ESP32, the Riddle & Code Secure Module and others
2) Integrating IOTA as part of your existing cloud solution, when we develop a proxy server that deals with devices’ requests to generate IOTA transactions and send them to the IOTA network. EVRYTHNG, IBCS, Primority and many others have chosen this type of integration, as it natively ties into the already existing infrastructure and enhances them with IOTA’s immutability and security features.
There are different use cases for each option. Technical components and required skills also vary between the two options. A well-specified architecture helps us to make the right choice and identify the right resources to assign to your project.
Once the overall architecture and resources are confirmed, the development phase starts. A guided or self-learning developer training of your team can be offered. The training provides an overview of the different software tools (e.g., client libraries, MAM libraries, PoW proxy, etc) that will be used in your project and enables developers to work autonomously during the software solution design and development phases.
Our developer handbook and documentation portal are the best starting points to navigate these resources. Once the know-how is acquired consider demonstrating your new skills by achieving the IOTA Developer Certification.
In close cooperation with the IOT1 Academy, a deep tech academy located in Berlin and Shanghai, we have developed a targeted IOTA training for corporates. All courses come with hands-on experience and a practical approach integrating many use cases. This training is available for purchase on https://training.iota.org.
Once properly trained, your team will be able to carry out the implementation work required for the PoC development, with limited support of IF developers. Support through a joint or dedicated Slack channel is available through the IOTA Foundation when support is needed.
In case you see a demand regarding the direct involvement of IF developers as part of your project, we usually aim to create a proper PoC initiation document that clearly identifies what the involved tasks are and who is responsible for what.
When the solution is designed and all the required skills and support are acquired, the development phase can start.
For ease of deployment, in this phase, it is usually recommended to build the initial PoC using the IOTA devnet. This ensures speed in debugging your implementation (e.g., Proof of Work as the requirements to send transactions to the IOTA network are very low and can be fine-tuned without any security risk).
If you want to test value transfers with IOTA tokens, this is also possible on both devnet (faucet) and Private Tangle. On a devnet, like in the mainnet, when you want to protect the privacy and confidentiality of your data, you should consider using “private” MAM channels for your data transactions.
As described previously, it is also possible to run your own test network. You can do this by deploying a Private Tangle, using our Tangle-in-a-box or AWS marketplace template for this. The overall setup takes around 10 minutes.
To debug your application, this set of IOTA utils will come handy to check the status of your transactions. The current instance of IOTA utils works with transactions stored onto the IOTA mainnet or one of our already deployed devnets. If you are building your own private testnet, you will have to deploy your own instance of these tools. To do that, please find the required software in this open source repository.
The MVP phase: The best way to trust your solution, is to test it!
Once the PoC is built, you need to test it in a production near environment and with representative users. You want to be sure that the software is reliable, the solution scales well and that your customers have a good user experience.
What usually happens in this phase is:
- We review the current PoC and help to fix any performance issues.
- We assist you with our UX experts to create an attractive solution that provides users with a seamless experience and helps you to capture useful feedback.
- We advise on how to best integrate the solution with existing systems e.g., proprietary databases, ERPs, Identity Management, etc. that might require the development of dedicated new IOTA Bridges (or what we call systems to IOTA, S2IOTA, bridges). Examples of those are our IOTA2IPFS or IOTA2HL bridges.
- We help you to deploy your solution on the selected IOTA network (permissionless mainnet or permissioned multi-node Private Tangle) in order to guarantee the required scalability.
IOTA software is based on standard APIs that make it easy to move your solution from an IOTA devnet to the IOTA mainnet, or a purposely deployed Private Tangle.
An IOTA client always needs to connect to an IOTA provider, i.e., an IRI node accepting its transactions. And it does this by simply communicating through the IOTA node API.
By changing the selected IOTA provider utilized in your application, you can connect to any available node in the IOTA mainnet or to a selected IOTA node in your Private Tangle.
At the end of this phase, you are now ready to launch your “product”.
The Scale-Up phase: Go out, go big!
To be sure your solution performs as expected, there is one more thing to consider: What Service Level Agreement (SLA) you want to offer to your customers? Do not forget that like any other DLT or blockchain network, the IOTA mainnet is a best-effort network.
Having this in mind, you need to be sure to have an adequate number of nodes connected to the mainnet or in your Private Tangle, the right number of permanodes and that you have the resources and the skills to maintain their operation in a smooth and reliable way.
When your solution is deployed and being used, there are a few things you should consider in order to guarantee its smooth operations.
Bear in mind that sending IOTA transactions currently requires a small amount of PoW to be done to prevent spam. (PoW will be deprecated in the future.) If the IRI node you are connecting to does not do that for you (i.e. does not support the attachToTangle API) your device client needs to have enough computation capacity to do this locally. Alternatively deploy a PoW proxy to speed up creation of transactions by your clients, especially useful for any low-powered SBC devices not using any dedicated accelerated IOTA HW.
The graphic below shows the architecture setup for a PoW Server/Proxy. The company PoWSrv also offers a hardware-accelerated outsourcing of PoW-as-a-service.
For production scenarios, we recommend to deploy two or more full IOTA nodes, eventually behind a hardware or software load balancer). Besides the IOTA reference IRI, the Hornet node software is available as a feature parity lightweight alternative. These nodes can be used exclusively to send your transactions to the IOTA networks. For more information around best practices, please refer to our best practices for running an IOTA node documentation.
One more thing: Governance
The best technology is useless when it’s not being maintained, innovated and adjusted towards the industry’s needs. With IOTA becoming bigger than the IOTA Foundation, IOTA’s governance is provided through Tangle EE. Tangle EE is a working group collaboration with the Eclipse Foundation. It provides a governed environment for organizations and contributors to develop new ideas and applications using IOTA technologies and is open for participation for anyone building on IOTA. More information about Tangle EE is available at https://tangle.ee.
Let’s get in touch!
Still need some more inspiration on what type of IOTA solution you are building? Then look at our blueprint library, describing use cases and reference architectures for a number of IOTA solutions we built with our partners. All blueprints are of course open source and can be used as basis for your own PoC, Demo or any other integration.
If you are ready to build your new IOTA-powered solution and want to collaborate with IF please get in touch at firstname.lastname@example.org. We are happy to hear from you.