When comparing cellular IoT software development with previous classic development scenarios, developers in today's IoT era are faced with new and complex technical and methodological challenges that can be difficult to recognize at first glance. Ensuring software quality can quickly become a hurdle. Incorrect architecture decisions lead to software and security risks that can be difficult to maintain. The consequences: high costs and reduced competitiveness.
In this technical article, we look at what aspects must be considered in order to make cellular IoT application development successful. The development methods are very different to traditional development. It is therefore important to understand what makes up these differences and which errors must be avoided to achieve smart IoT application development.
1 – Over-the-air updates function as a competitive advantage in IoT application development
With an ever-increasing number of devices, it's nearly impossible to keep an overview and carry out updates manually in an IoT scenario. Devices can often only be kept up-to-date by means of an over-the-air update (OTA update). This has to be considered in the development phase at the very start – and with regard to the entire application lifestyle itself. A device that has security holes, but no update mechanism must be disposed of.
Another advantage: an update mechanism enables new business models. At the start of a project, the customer often doesn't know which functions to implement in their future development; however, an integrated update mechanism enables the later sale of software functions that do not yet exist.
2 – Cellular IoT application development – Planned security right from the start!
An IoT environment is extremely complex as numerous components have to communicate with each other and exchange data. In the short term, IoT security gaps can often only be solved on the gateway side of things, or by directly fixing the vulnerability. At the same time, there are special requirements on the device side, such as special microcontrollers or limited memory, which means that fixing such issues is not straightforward. Therefore, a patch option for devices must be planned from the start – with over-the-air update functionality. It also helps in the case of a breach if the software architecture is designed with corresponding hurdles and restrictions for accessing gateways or the app server.
3 – Comprehensive logging for fault diagnosis in IoT application development
Things look a little different in the world of cellular IoT: there are a large number of devices and possible gateways. In the event of a fault, finding the cause is much more complex than in a classic software environment. Logs must therefore be made available centrally, among other things, as there may be restrictions with storage space on the devices’ side.
A central log database (or Syslog-ng) is a possible solution to dealing with the large number of devices. Battery operation is another problem that can be solved by sending status information to the cloud every time the device goes online.
4 – Flexibility in application development through agile development methods
Customer experience is not only a decisive criterion for success during the frontend phase – i.e. in apps and websites – but also when considering user-friendliness in devices. For many customers, user-friendliness is of little interest at first, which is a mistake as it is extremely important for the long-term success of solutions. During the development stage, it should be considered what the setup process of an IoT gateway should look like. In particular, since IoT projects are often innovation projects, it is a primary goal for customers to achieve some sort of business impact with them – for example, by reducing maintenance costs or selling software functions.
Since the desired business impact is difficult to assess, particularly in the early phases, it is important to adopt an agile approach. The business case can be developed in parallel. The only challenge is to then keep the focus and not get lost in unnecessary features.
5 – IoT application development – Cloud Native, Kubernetes & Co. offer flexibility
Cloud native IoT hubs and their set ups have the necessary functionalities integrated as an out-of-the-box standard with little effort. Therefore, upscaling to large numbers of devices is relatively easy to implement. Even SDKs that work for a number of device software versions are offered to help accelerate software development.
The alternative to cloud native IoT hubs is self-developed cellular IoT hubs (based on Kubernetes, open source products and individual software). In-house developed IoT hubs can be designed to enable them to run on different cloud environments (e.g. AWS or Azure). This makes the customer independent of cloud providers.
6 – Early test phases of the IoT application development with device simulations
The frontend of the client and the backend of the server are joined together by the edge software on the IoT gateway, which is responsible for Internet connection and easy data processing, plus the “thing software” on the actual device itself, such as the sensor. This increases the system complexity.
The set of states (which depend on the physical environment) and possible interactions, among other things, result in system complexity meaning more testing is required. Since the actual devices are usually not available in the early project phases, device simulators are indispensable tools. This is because they help with automated testing in the cloud, but also simplify load testing.
Of course, existing devices can also be integrated into the test automation, but this makes testing in the cloud more difficult, as the devices in most cases are behind a firewall in the company network. Therefore, a complex test infrastructure must be created that differs from so-called classic test infrastructures.
7 – Do not use embedded components in isolation in IoT application development
In application development, issues such as energy efficiency, availability, and performance are all in conflict. For example, covering a long range is a requirement that demands a strong transmission power from the device, yet this can only be maintained temporarily due to high power consumption.
However, the dimensioning of a hardware component is based on specific requirements that leave little space for the flexibility required to meet all of the above criteria (energy efficiency, availability, and performance). Therefore planning in advance is important. The main question here is: Can requirements be implemented with planned hardware in the future and how much flexibility is required for this?
The future of cellular IoT requires new development methods and strategies
If cellular IoT projects are tackled correctly alongside a competent development partner, the software quality is increased, iterations avoided, (further) development costs reduced, along with reduced maintenance costs and overall increased customer satisfaction.
If you have questions about the topics discussed in this blog or about cellular IoT connectivity in general and what it can offer your business, please do not hesitate to contact a member of the EMnify team via our homepage or chatbot.