A key success factor for our development teams working on the Bosch IoT Suite has been the adoption of new infrastructure technology. One of these new technologies is Kubernetes, a popular open source project that has enabled us to meet the demands of IoT applications.
Meeting customer requirements with a microservices architecture
What is the Bosch IoT Suite?
Bosch’s IoT platform, the Bosch IoT Suite, provides all key middleware capabilities needed to build sophisticated IoT applications from top to bottom.Learn more about the Bosch IoT Suite
Early in the development process of the Bosch IoT Suite, we made the decision to create a microservices architecture for our IoT platform. This new architecture was in response to customer requirements. They demanded a cloud-native IoT platform to meet the scalability and reliability requirements of their IoT applications. A microservices architecture also allowed us to be much more agile and quicker to deliver new services and new feature updates to existing customers.
Another important customer requirement was the ability to deploy the Bosch IoT Suite on different cloud providers, including an option for a private on-prem cloud. Our customers, and indeed the industry, were adopting a multi-cloud strategy to avoid vendor lock-in and allow for the flexibility of choosing cloud-hosting providers. Therefore, we wanted to create an architecture that allowed the Bosch IoT Suite to be deployed on-prem or on a popular cloud provider, such as AWS, Bosch IoT Cloud, and MS Azure.
To implement a microservice architecture and a multi-cloud strategy, we made the decision to adopt Kubernetes as the key enabling technology for the Bosch IoT Suite. We first made the decision to use Docker as the platform for creating microservices. The next step was to investigate orchestration technologies to assist with the deployment and management of the Docker containers and microservices. We considered Cloud Foundry and Docker Swarm as potential solutions but soon realized Kubernetes was going to be the best solution to meet our needs. Kubernetes provided the features we required to deploy and manage the Bosch IoT Suite in a multi-cloud environment.
Drivers for adopting Kubernetes
The decision to select Kubernetes was made by the Bosch IoT Suite product owners and developers. There were a number of drivers that led to the decision of adopting Kubernetes as the solution for container orchestration.
I hold a diploma degree of business computer science and work for Bosch Software Innovations since 2001. After more than two decades of working in the fields of enterprise software, I became a change agent in a big agile transformation initiative. The resulting organization now develops and operates the Open Source based Bosch IoT Suite for which I am the product owner. In this role I represent Bosch in the Eclipse IoT working group steering committee.
- Bosch needed a consistent deployment model for each of their Bosch IoT Suite services. Our product development organization had recently migrated to an agile development process and a DevOps culture of development and deployment. Small agile development teams were now creating each individual service. The deployment of each service needed to be consistent so they could be integrated and used as a common IoT platform. Kubernetes provides this common deployment model. It allowed the development teams to be independent but deploy their services into an integrated platform.
- As mentioned previously, we were adopting a multi-cloud strategy for the Bosch IoT Suite. This meant that each service needed to run on different cloud providers, such as AWS, MS Azure, Bosch IoT Cloud and even on-prem. Kubernetes is available on all major cloud platforms. It became the common orchestration tool that allows the Bosch IoT Suite services to be consistently deployed and managed.
- Customers require the Bosch IoT Suite to be deployed in different global regions. Data privacy, network latency often require the IoT platform to be deployed close to the devices – either on-prem or in country. Kubernetes makes it possible to deploy different services in different locations.
- Scalability and high availability are critical for Bosch’s customers building mission-critical solutions. A key benefit of Kubernetes is the ability to easily scale services across network clusters. Additionally, workloads can run independently and automatically restart with no impact on the end user. Kubernetes makes it easy for developers to build services that are scalable and reliable.
Gerald Glocker started working at Bosch in 2008. Since 2012, he has been responsible in different roles for components of the Bosch IoT platform. In 2015, he took over the product ownership of the Bosch IoT Things cloud service and since 2017, he is project lead of the Eclipse Ditto project. He likes to work with innovative technology and use it to create real use for people. Gerald holds a degree in computer science from the University of Ulm, Germany.
- Kubernetes lowers the cost of hosting IoT applications due to its efficient use of cloud resources. Kubernetes provides an abstraction layer on top of cloud-hosted virtual machines. Thus, administrators can focus on the deployment of services across the optimal number of virtual machines. This reduces the total cost of running VMs for an IoT application.
- The Kubernetes ecosystem continues to innovate and create new tools that Bosch can use now and in the future. We are already making use of the breadth of training material and add-on tools, like Helm and KOps. We are also encouraged to see the open source community collaborating on the use of Kubernetes at the edge of IoT. This will likely be an important architecture for a federation of IoT services. A vibrant open source community is something we see as an advantage. It ensures key infrastructure technology continues to be relevant to the industry and customer’s needs.