Solution: HiveMQ
BMW Mobility Services is a business group within BMW Group that is developing innovative new solutions for the changing mobility requirements of the urban population. By 2030, more than 60% of the world population is expected to live in cities, so BMW Mobility Services is focused on building mobility services that are integrated into urban lifestyles such as car-sharing and other mobility concepts.
One such service developed by BMW Mobility Services is a car-sharing product for fleet operators. This service provides fleet operators the ability to remotely manage a vehicle fleet, issue remote commands to individual vehicles (ex. lock/unlock) and collect data from each vehicle. The car-sharing service by BMW Group ‘DriveNow’ (since 22 February 2019 part of SHARE NOW) uses this car-sharing product and at that time is available in 12 European cities.
In 2014, BMW Mobility Services began using HiveMQ as the messaging platform for their car-sharing service. Now in production, the HiveMQ platform supports over 80,000 concurrent connected software clients generating over 90,000 messages per minute. The use of HiveMQ and MQTT has been so successful that BMW Mobility Services has extended their used HiveMQ to function as an internal messaging bus that moves data between back-end microservices.
Network Reliability Key Issue for Service Availability
A key criterion for car-sharing services is pervasive availability. Customers expect to be able to access a car in a timely and reliable manner. However, in many cities network connectivity can be unreliable due to coverage, weather and other factors. Addressing the issue of network latency and network reliability is a key challenge in the mobility industry.
The traditional automotive industry pattern for remote communication with a vehicle is based on a ‘trigger pull concept’. Vehicle communication is initiated with an SMS message that does a wake-up call to the onboard client system that then initiates an HTTP session to connect with a back-end cloud service. The challenge with this concept is that 1) SMS is unpredictable, and 2) HTTP is slow and network costs are high due to the message size and the number of messages required to establish an HTTP session.
To implement a successful car-sharing application an alternative messaging solution was needed. MQTT is an IoT protocol for establishing IP connections and moving data from remote devices. MQTT’s lightweight design, publish/subscribe approach and quality of service levels addresses the reliability and efficiency requirements for a car-sharing application.
In 2012, HiveMQ began developing with industry partners the HiveMQ MQTT platform. Their focus was to enable companies to connect millions of devices in a reliable and scalable manner using MQTT.
Close collaboration in Innovation
In 2014, embracing MQTT for their car-sharing service was an innovative approach for BMW Mobility Services and indeed the automotive industry. For this reason, BMW Mobility Services searched for an industry partner that would support them in their project. Based on a broad survey of the IoT and MQTT industry, BMW Mobility Services selected HiveMQ as the MQTT platform for their project.
“We were looking for more than a shrinkwrap MQTT broker, we wanted a partner that would be open to feedback and improvements to meet our needs,” explains Bernhard Stimpfle, senior end-to-end solution architect at BMW Mobility Services. “HiveMQ has been that partner. Over the last 4 years we have developed a truly collaborative partnership with them. They have been very responsive to our feedback and continue to improve HiveMQ so we can safely deploy our services on a global scale.”
BMW Mobility Services’ car-sharing service is now in production using HiveMQ. The service is made up of hundreds of dockerized microservices written in Java running on a Kubernetes cluster hosted on Amazon Web Services (AWS). The typical production load handled by HiveMQ is over 90,000 transactions per minute from over 80,000 simultaneous connected clients. Most importantly, BMW Mobility Services is delivering a reliable service to its customers and operates in areas of unreliable network service.
In addition to the car-sharing service, BMW Mobility Services has extended their use of HiveMQ as an internal data sharing platform for back-end systems. Using MQTT pub/sub, a back-end service can subscribe to the vehicle data that is passing through the HiveMQ broker. For instance, an analytics service has developed an MQTT client that feeds the MQTT messages into a Kafka instance which processes that data for further analysis. The benefit is that the vehicle data is immediately transformed by the back-end services that rely upon it. This makes the process of data integration more immediate and scalable.
Recommendations for Using HiveMQ and MQTT
BMW Mobility Services has been using HiveMQ and MQTT for over 4 years. This experience has given them some unique insight into building IoT solutions using this technology. They have some recommendations for others that are investigating MQTT and HiveMQ:
- If scalability is important to your solution, set up a cluster early in the process to understand how to scale MQTT systems.
- Talk to other people which have gone through the process of scaling MQTT to help you navigate the issues.
- Introducing MQTT into a development organization requires education and training. There are lots of online resources available to help but also reach out to the community to understand best practices and limitations of MQTT.