際際滷

際際滷Share a Scribd company logo
息 2019  The symbIoTe Consortium
Building IoT Middleware with Microservices
Mario Ku邸ek, University of Zagreb, FER
Javantura v6, 23 Feb 2019, Zagreb
Grant Agreement No 688156
息 2019  The symbIoTe Consortium2
Who am I?
@MarioKusek
mario.kusek@fer.hr
University of Zagreb
Faculty of Electrical Engineering and Computing
Department of Telecommunications
IoT Laboratory
息 2019  The symbIoTe Consortium3
 What is a thing?
 Object from physical world (physical object with
build in sensors and/or actuators) or virtual object
 Internet Connected Object (ICO)
 Has unique identifier and is connected to the Internet
 Communicates and generate data (reading from
environment)
 Can receive data/commands from network
 Can execute commands  actuate (electrical or
mechanical)
 Can receive data from other ICO, process them and
send for processing to cloud
Internet of Things - IoT
息 2019  The symbIoTe Consortium4
 IoT platforms integrate things and continuously
acquire data
 Large distributed system
 Processing large amount of data (often in real time)
 Integrates and saves data from different sources
 For application developers offer:
 Searching for things (sensors/actuators)
 Access to data
 There are more then 400 platforms
 Mostly specialised for one area
How to integrate things and provide user applications?
息 2019  The symbIoTe Consortium5
Architecture of IoT System
User
IoT
Platform
Gateway
IoT
Application
Smart spaceCloudUser
息 2019  The symbIoTe Consortium6
 Can not easily create cross domain applications!
 Interoperability:
 Data structures are different
 Different measurement units
 Vertical domain specific platforms
 Project: symbIoTe
 Symbiosis of smart objects across IoT environments
 H2020 project: 2016-2018 (3 years)
 15 EU partners (universities, institutes, SMEs)
Some Challenges
息 2019  The symbIoTe Consortium7
The symbIoTe approach
Core Services
IoT
Platform A
IoT
Platform B
AdaptorAdaptor
Domain
Enabler
Application
Adaptor
IoT
Platform A
IoT
Platform C
Adaptor
Adaptor
IoT
Platform D
Adaptor
IoT
Platform B
Adaptor
Application
Agent
IoT
Gateway A
IoT
Gateway B Smart
Device
Smart Space Gateway
Agent Agent
L1
L2
L3L4
roaming
Smart Space A
Core Services
Smart Device
Smart Space B
Smart Space GatewaySmart Space Gateway
Smart Device
息 2019  The symbIoTe Consortium8
 Development
 Agile process (iterations)  planned 4 week releases
 Weekly meetings of all developers (video conference)
 One or two weeks for internal component releases
 Programming language is Java
 Unit testing: >70% code coverage
 Tools:
 Attlasian Jira as the feature planning tool
 github.com as code repository tool
 Git as versioning and code revisioning tool
 Travis CI as Continuous Integration server
Project organisation
息 2019  The symbIoTe Consortium9
High-level Architecture
息 2019  The symbIoTe Consortium10
Putting it all together: L1 compliance
Components for
semantic and
syntactic
interoperability +
security
息 2019  The symbIoTe Consortium11
 Each component is one microservice
 Has a component owner
 One microservice  mostly implemented by one
organisation
 One repository
 Frameworks:
 SpringBoot, Spring Cloud
 Communication between microservices:
RabbitMQ
Microservices  Decisions
息 2019  The symbIoTe Consortium12
 Spring Cloud Config  configuration
 Zipkin  distributed tracing system
 Spring Cloud Gateway  did not exist then
 We used NGINX
 Spring Cloud Netflix:
 Eureka  service registration
 Ribbon  REST client that uses Eureka
 Feign  declarative HTTP client
 For accessing core services
Spring Cloud
息 2019  The symbIoTe Consortium13
 Microservices were not divided by domains
 Frequent changing of messages
 Hard integration testing, lots of communication
between teams
 RabbitMQ
 Most of communication is request/response
 Design not appropriate for messaging
 No message (API) versioning
 Late arrival of Spring Cloud Contract (v1.0.0 Sep
2016)
 Not so good support for messages (documentation and
examples)
Problems
息 2019  The symbIoTe Consortium14
 Lots of microservices need to implement the
same data objects:
 Put data objects in library: SymbIoTeLibraries
 Put all libraries in Jitpack (https://jitpack.io)
 Problems with versions of library:
 Start using semantic versioning (https://semver.org)
 All components need to contact AAM
(Authentication Authorization Manager)
component
 Created SymbIoTeSecurity library
 SymbIoTeLibraries has dependency to it
Problems/decisions
息 2019  The symbIoTe Consortium15
 Each IoT platform needs to deploy cloud
components
 No automatic deployment
 3 stages/ways of deployment:
 1. From sources:
 Support web page (github wiki)
 Problems:
 Complex  automatization
 Slow  automatization
 Hard to configure  configuration generator (web page
similar to https://start.spring.io)
Deployment (1)
息 2019  The symbIoTe Consortium16
 2. From jars:
 Created a script for downloading, configuring,
starting and stopping
 Problems:
 Microservices have startup dependencies
 Solved by putting small class in main method to wait for some
service (host:port)
 If it doesnt work first time you need to dive into details
 Similar to SpringBoot
 Bash script - problem on windows if someone just want
to try it
Deployment (2)
息 2019  The symbIoTe Consortium17
 3. From dockers
 Easy startup
 Starting with docker-compose or docker swarm
 Config git repo is in docker image
 Problem of custom configuration
 Putting config in volume
 Different documentation for using docker directly
(linux) or in docker machine
 Problems with port mapping
Deployment (3)
息 2019  The symbIoTe Consortium18
 For testing, hackathons you run components
on machine that is in local network
 Cloud components need to have public IP,
DNS, and certificate (for https)
 Workaround is ngrok tunnelling
 Different NGINX configuration
Cloud components on dev machine
息 2019  The symbIoTe Consortium19
Memory Consumption  Problem
 1.5GB on startup
 2-3GB when working
 Future work:
 Java 11: new GC, String internals, netty, ACDS, 
 Problem: late release of SpringBoot 2.1 (Oct 2018)
and Spring Cloud (Greenwich)(Jan 2019)
息 2019  The symbIoTe Consortium20
 Distributed teams require lots of
communication
 Be careful in choosing technologies
 Divide features to microservices that are
independent and scalable (up/down)
 Versioning of API is important
 Dedicate time for building/testing automation
 Do it in the beginning of the project and maintain
Conclusions
息 2019  The symbIoTe Consortium
www.symbiote-h2020.eu
middleware.symbiote-h2020.eu
info@symbiote-h2020.eu
@symbiote_h2020
H2020 symbIoTe
github.com/symbiote-h2020
Member of
Thank you!
Questions?
@MarioKusek
mario.kusek@fer.hr

More Related Content

What's hot (7)

Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Christian Posta
Vlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa - Final PhD Thesis Defense at ETH ZurichVlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa
An open-source testbed for IoT systems
An open-source testbed for IoT systemsAn open-source testbed for IoT systems
An open-source testbed for IoT systems
Augusto Ciuffoletti
Web of Things Book Launch
Web of Things Book LaunchWeb of Things Book Launch
Web of Things Book Launch
Vlad Trifa
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
Daniel Bryant
O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"
Daniel Bryant
DevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon Singapore 2019: Preventative Security for KubernetesDevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Christian Posta
Vlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa - Final PhD Thesis Defense at ETH ZurichVlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa - Final PhD Thesis Defense at ETH Zurich
Vlad Trifa
An open-source testbed for IoT systems
An open-source testbed for IoT systemsAn open-source testbed for IoT systems
An open-source testbed for IoT systems
Augusto Ciuffoletti
Web of Things Book Launch
Web of Things Book LaunchWeb of Things Book Launch
Web of Things Book Launch
Vlad Trifa
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
Daniel Bryant
O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"O'Reilly 2017: "Introduction to Service Meshes"
O'Reilly 2017: "Introduction to Service Meshes"
Daniel Bryant
DevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon Singapore 2019: Preventative Security for KubernetesDevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon Singapore 2019: Preventative Security for Kubernetes
DevSecCon

Similar to Building IoT Middleware with Microservices (20)

Webinar on 1st Open Call - slideset
Webinar on 1st Open Call - slidesetWebinar on 1st Open Call - slideset
Webinar on 1st Open Call - slideset
symbiote-h2020
Webinar on 2nd Open Call - Platforms - slideset
Webinar on 2nd Open Call - Platforms - slidesetWebinar on 2nd Open Call - Platforms - slideset
Webinar on 2nd Open Call - Platforms - slideset
symbiote-h2020
Distributed Development of IoT Middleware with Microservices
Distributed Development of IoT Middleware with MicroservicesDistributed Development of IoT Middleware with Microservices
Distributed Development of IoT Middleware with Microservices
Mario Ku邸ek
CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017
Stacy V辿ronneau
CPaaS.io - FIWARE-based Toolbox
CPaaS.io - FIWARE-based ToolboxCPaaS.io - FIWARE-based Toolbox
CPaaS.io - FIWARE-based Toolbox
Stephan Haller
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
Takashi Yamanoue
webthing-iotjs-20181027rzr
webthing-iotjs-20181027rzrwebthing-iotjs-20181027rzr
webthing-iotjs-20181027rzr
Phil www.rzr.online.fr
Rishabh bhatagar cv
Rishabh bhatagar cvRishabh bhatagar cv
Rishabh bhatagar cv
RishabhBhatnagar16
Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
Christian Posta
ATMOSPHERE at HPC2018 Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE at HPC2018  Fogbow: Middleware for the Federation of IaaS Cloud P...ATMOSPHERE at HPC2018  Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE at HPC2018 Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE .
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and LinkerdNavigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Christian Posta
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on Containers
Anton Whalley
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
PhuocNT (Fresher.VN)
Internet of Things: state of the art
Internet of Things: state of the artInternet of Things: state of the art
Internet of Things: state of the art
Mario Ku邸ek
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
Phil www.rzr.online.fr
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Codemotion
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
Kai W辰hner
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMeshService-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Christian Posta
Webinar on 2nd Open Call - Applications and Trials - slideset
Webinar on 2nd Open Call - Applications and Trials - slidesetWebinar on 2nd Open Call - Applications and Trials - slideset
Webinar on 2nd Open Call - Applications and Trials - slideset
symbiote-h2020
E2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation PlatformsE2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation Platforms
Tokyo University of Science
Webinar on 1st Open Call - slideset
Webinar on 1st Open Call - slidesetWebinar on 1st Open Call - slideset
Webinar on 1st Open Call - slideset
symbiote-h2020
Webinar on 2nd Open Call - Platforms - slideset
Webinar on 2nd Open Call - Platforms - slidesetWebinar on 2nd Open Call - Platforms - slideset
Webinar on 2nd Open Call - Platforms - slideset
symbiote-h2020
Distributed Development of IoT Middleware with Microservices
Distributed Development of IoT Middleware with MicroservicesDistributed Development of IoT Middleware with Microservices
Distributed Development of IoT Middleware with Microservices
Mario Ku邸ek
CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017
Stacy V辿ronneau
CPaaS.io - FIWARE-based Toolbox
CPaaS.io - FIWARE-based ToolboxCPaaS.io - FIWARE-based Toolbox
CPaaS.io - FIWARE-based Toolbox
Stephan Haller
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
An IoT System with Remote Reconfigurable Wireless Sensor Network Nodes and it...
Takashi Yamanoue
Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
Christian Posta
ATMOSPHERE at HPC2018 Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE at HPC2018  Fogbow: Middleware for the Federation of IaaS Cloud P...ATMOSPHERE at HPC2018  Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE at HPC2018 Fogbow: Middleware for the Federation of IaaS Cloud P...
ATMOSPHERE .
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and LinkerdNavigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Christian Posta
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on Containers
Anton Whalley
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
PhuocNT (Fresher.VN)
Internet of Things: state of the art
Internet of Things: state of the artInternet of Things: state of the art
Internet of Things: state of the art
Mario Ku邸ek
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
Phil www.rzr.online.fr
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Luciano Resende - Scaling Big Data Interactive Workloads across Kubernetes Cl...
Codemotion
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
Kai W辰hner
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMeshService-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Christian Posta
Webinar on 2nd Open Call - Applications and Trials - slideset
Webinar on 2nd Open Call - Applications and Trials - slidesetWebinar on 2nd Open Call - Applications and Trials - slideset
Webinar on 2nd Open Call - Applications and Trials - slideset
symbiote-h2020
E2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation PlatformsE2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation Platforms
Tokyo University of Science

Recently uploaded (20)

Wondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free DownloadWondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free Download
arshadkhokher01
Hire Odoo Developer OnestopDA Experts.
Hire Odoo Developer  OnestopDA Experts.Hire Odoo Developer  OnestopDA Experts.
Hire Odoo Developer OnestopDA Experts.
OnestopDA
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP SolutionsWhy Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Absolute ERP
Adobe Illustrator Crack Free Download 2025 latest version
Adobe Illustrator Crack Free Download 2025 latest versionAdobe Illustrator Crack Free Download 2025 latest version
Adobe Illustrator Crack Free Download 2025 latest version
saniasabbba
SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?
kiran10101khan
Why Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your BusinessWhy Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your Business
Mypcot Infotech
Carousel - Five Key FinTech Trends for 2025
Carousel - Five Key FinTech Trends for 2025Carousel - Five Key FinTech Trends for 2025
Carousel - Five Key FinTech Trends for 2025
Anadea
SolidWorks 2025 Crack free Download updated
SolidWorks 2025 Crack  free Download updatedSolidWorks 2025 Crack  free Download updated
SolidWorks 2025 Crack free Download updated
sanasabaa73
salesforce development services - Alt digital
salesforce development services - Alt digitalsalesforce development services - Alt digital
salesforce development services - Alt digital
Alt Digital Technologies
A Brief Introduction About Raman Bhaumik
A Brief Introduction About Raman BhaumikA Brief Introduction About Raman Bhaumik
A Brief Introduction About Raman Bhaumik
Raman Bhaumik
Data Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - WebinarData Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - Webinar
OnePlan Solutions
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
Ava Isley
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio: Preprocessing, ...
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio:  Preprocessing, ...AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio:  Preprocessing, ...
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio: Preprocessing, ...
Alluxio, Inc.
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
haroonsaeed605
Computer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .pptComputer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .ppt
jaysen110
Code or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose BothCode or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose Both
Applitools
AI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI AssistansAI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI Assistans
HusseinMalikMammadli
EASEUS Partition Master Crack with License Code [Latest]
EASEUS Partition Master Crack with License Code [Latest]EASEUS Partition Master Crack with License Code [Latest]
EASEUS Partition Master Crack with License Code [Latest]
bhagasufyan
DevOpsDays LA - Platform Engineers are Product Managers.pdf
DevOpsDays LA - Platform Engineers are Product Managers.pdfDevOpsDays LA - Platform Engineers are Product Managers.pdf
DevOpsDays LA - Platform Engineers are Product Managers.pdf
Justin Reock
Minitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free DownloadMinitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free Download
v3r2eptd2q
Wondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free DownloadWondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free Download
arshadkhokher01
Hire Odoo Developer OnestopDA Experts.
Hire Odoo Developer  OnestopDA Experts.Hire Odoo Developer  OnestopDA Experts.
Hire Odoo Developer OnestopDA Experts.
OnestopDA
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP SolutionsWhy Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Absolute ERP
Adobe Illustrator Crack Free Download 2025 latest version
Adobe Illustrator Crack Free Download 2025 latest versionAdobe Illustrator Crack Free Download 2025 latest version
Adobe Illustrator Crack Free Download 2025 latest version
saniasabbba
SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?
kiran10101khan
Why Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your BusinessWhy Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your Business
Mypcot Infotech
Carousel - Five Key FinTech Trends for 2025
Carousel - Five Key FinTech Trends for 2025Carousel - Five Key FinTech Trends for 2025
Carousel - Five Key FinTech Trends for 2025
Anadea
SolidWorks 2025 Crack free Download updated
SolidWorks 2025 Crack  free Download updatedSolidWorks 2025 Crack  free Download updated
SolidWorks 2025 Crack free Download updated
sanasabaa73
salesforce development services - Alt digital
salesforce development services - Alt digitalsalesforce development services - Alt digital
salesforce development services - Alt digital
Alt Digital Technologies
A Brief Introduction About Raman Bhaumik
A Brief Introduction About Raman BhaumikA Brief Introduction About Raman Bhaumik
A Brief Introduction About Raman Bhaumik
Raman Bhaumik
Data Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - WebinarData Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - Webinar
OnePlan Solutions
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
ChatGPT and DeepSeek: Which AI Tool Delivers Better User Experience?
Ava Isley
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio: Preprocessing, ...
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio:  Preprocessing, ...AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio:  Preprocessing, ...
AI/ML Infra Meetup | Optimizing ML Data Access with Alluxio: Preprocessing, ...
Alluxio, Inc.
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
AnyDesk Pro 3.7.0 Crack License Key Free Download 2025 [Latest]
haroonsaeed605
Computer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .pptComputer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .ppt
jaysen110
Code or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose BothCode or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose Both
Applitools
AI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI AssistansAI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI Assistans
HusseinMalikMammadli
EASEUS Partition Master Crack with License Code [Latest]
EASEUS Partition Master Crack with License Code [Latest]EASEUS Partition Master Crack with License Code [Latest]
EASEUS Partition Master Crack with License Code [Latest]
bhagasufyan
DevOpsDays LA - Platform Engineers are Product Managers.pdf
DevOpsDays LA - Platform Engineers are Product Managers.pdfDevOpsDays LA - Platform Engineers are Product Managers.pdf
DevOpsDays LA - Platform Engineers are Product Managers.pdf
Justin Reock
Minitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free DownloadMinitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free Download
v3r2eptd2q

Building IoT Middleware with Microservices

  • 1. 息 2019 The symbIoTe Consortium Building IoT Middleware with Microservices Mario Ku邸ek, University of Zagreb, FER Javantura v6, 23 Feb 2019, Zagreb Grant Agreement No 688156
  • 2. 息 2019 The symbIoTe Consortium2 Who am I? @MarioKusek mario.kusek@fer.hr University of Zagreb Faculty of Electrical Engineering and Computing Department of Telecommunications IoT Laboratory
  • 3. 息 2019 The symbIoTe Consortium3 What is a thing? Object from physical world (physical object with build in sensors and/or actuators) or virtual object Internet Connected Object (ICO) Has unique identifier and is connected to the Internet Communicates and generate data (reading from environment) Can receive data/commands from network Can execute commands actuate (electrical or mechanical) Can receive data from other ICO, process them and send for processing to cloud Internet of Things - IoT
  • 4. 息 2019 The symbIoTe Consortium4 IoT platforms integrate things and continuously acquire data Large distributed system Processing large amount of data (often in real time) Integrates and saves data from different sources For application developers offer: Searching for things (sensors/actuators) Access to data There are more then 400 platforms Mostly specialised for one area How to integrate things and provide user applications?
  • 5. 息 2019 The symbIoTe Consortium5 Architecture of IoT System User IoT Platform Gateway IoT Application Smart spaceCloudUser
  • 6. 息 2019 The symbIoTe Consortium6 Can not easily create cross domain applications! Interoperability: Data structures are different Different measurement units Vertical domain specific platforms Project: symbIoTe Symbiosis of smart objects across IoT environments H2020 project: 2016-2018 (3 years) 15 EU partners (universities, institutes, SMEs) Some Challenges
  • 7. 息 2019 The symbIoTe Consortium7 The symbIoTe approach Core Services IoT Platform A IoT Platform B AdaptorAdaptor Domain Enabler Application Adaptor IoT Platform A IoT Platform C Adaptor Adaptor IoT Platform D Adaptor IoT Platform B Adaptor Application Agent IoT Gateway A IoT Gateway B Smart Device Smart Space Gateway Agent Agent L1 L2 L3L4 roaming Smart Space A Core Services Smart Device Smart Space B Smart Space GatewaySmart Space Gateway Smart Device
  • 8. 息 2019 The symbIoTe Consortium8 Development Agile process (iterations) planned 4 week releases Weekly meetings of all developers (video conference) One or two weeks for internal component releases Programming language is Java Unit testing: >70% code coverage Tools: Attlasian Jira as the feature planning tool github.com as code repository tool Git as versioning and code revisioning tool Travis CI as Continuous Integration server Project organisation
  • 9. 息 2019 The symbIoTe Consortium9 High-level Architecture
  • 10. 息 2019 The symbIoTe Consortium10 Putting it all together: L1 compliance Components for semantic and syntactic interoperability + security
  • 11. 息 2019 The symbIoTe Consortium11 Each component is one microservice Has a component owner One microservice mostly implemented by one organisation One repository Frameworks: SpringBoot, Spring Cloud Communication between microservices: RabbitMQ Microservices Decisions
  • 12. 息 2019 The symbIoTe Consortium12 Spring Cloud Config configuration Zipkin distributed tracing system Spring Cloud Gateway did not exist then We used NGINX Spring Cloud Netflix: Eureka service registration Ribbon REST client that uses Eureka Feign declarative HTTP client For accessing core services Spring Cloud
  • 13. 息 2019 The symbIoTe Consortium13 Microservices were not divided by domains Frequent changing of messages Hard integration testing, lots of communication between teams RabbitMQ Most of communication is request/response Design not appropriate for messaging No message (API) versioning Late arrival of Spring Cloud Contract (v1.0.0 Sep 2016) Not so good support for messages (documentation and examples) Problems
  • 14. 息 2019 The symbIoTe Consortium14 Lots of microservices need to implement the same data objects: Put data objects in library: SymbIoTeLibraries Put all libraries in Jitpack (https://jitpack.io) Problems with versions of library: Start using semantic versioning (https://semver.org) All components need to contact AAM (Authentication Authorization Manager) component Created SymbIoTeSecurity library SymbIoTeLibraries has dependency to it Problems/decisions
  • 15. 息 2019 The symbIoTe Consortium15 Each IoT platform needs to deploy cloud components No automatic deployment 3 stages/ways of deployment: 1. From sources: Support web page (github wiki) Problems: Complex automatization Slow automatization Hard to configure configuration generator (web page similar to https://start.spring.io) Deployment (1)
  • 16. 息 2019 The symbIoTe Consortium16 2. From jars: Created a script for downloading, configuring, starting and stopping Problems: Microservices have startup dependencies Solved by putting small class in main method to wait for some service (host:port) If it doesnt work first time you need to dive into details Similar to SpringBoot Bash script - problem on windows if someone just want to try it Deployment (2)
  • 17. 息 2019 The symbIoTe Consortium17 3. From dockers Easy startup Starting with docker-compose or docker swarm Config git repo is in docker image Problem of custom configuration Putting config in volume Different documentation for using docker directly (linux) or in docker machine Problems with port mapping Deployment (3)
  • 18. 息 2019 The symbIoTe Consortium18 For testing, hackathons you run components on machine that is in local network Cloud components need to have public IP, DNS, and certificate (for https) Workaround is ngrok tunnelling Different NGINX configuration Cloud components on dev machine
  • 19. 息 2019 The symbIoTe Consortium19 Memory Consumption Problem 1.5GB on startup 2-3GB when working Future work: Java 11: new GC, String internals, netty, ACDS, Problem: late release of SpringBoot 2.1 (Oct 2018) and Spring Cloud (Greenwich)(Jan 2019)
  • 20. 息 2019 The symbIoTe Consortium20 Distributed teams require lots of communication Be careful in choosing technologies Divide features to microservices that are independent and scalable (up/down) Versioning of API is important Dedicate time for building/testing automation Do it in the beginning of the project and maintain Conclusions
  • 21. 息 2019 The symbIoTe Consortium www.symbiote-h2020.eu middleware.symbiote-h2020.eu info@symbiote-h2020.eu @symbiote_h2020 H2020 symbIoTe github.com/symbiote-h2020 Member of Thank you! Questions? @MarioKusek mario.kusek@fer.hr