An Approach to Build e-Health IoT Reactive Multi-Services Based on Technologies around Cloud Computing for Elderly Care in Smart City Homes †
Abstract
:1. Introduction
- An approach to build cloud-based e-health IoT reactive multi-services as a feasible solution;
- The implementation of the system built on an emerging fast data architecture is proposed with open-source components. This architecture incorporates a big data subsystem for data analytics in batch and near-real-time modes;
- Based on the proposed architecture, an e-health system prototype is deployed in a public cloud incorporating a continuous integration and continuous deployment (CI/CD) pipeline, and several experiments are conducted to evaluate the performance.
2. Related Works
3. Methodology
3.1. IEEE 1471
3.2. Architecture Patterns
3.2.1. Layered Architecture Pattern
3.2.2. Message-Oriented Broker Pattern
3.2.3. Microservice Architecture Pattern
3.2.4. Model-View-Controller Architecture Pattern
3.2.5. Cloud Computing Paradigm
3.3. Reactive Principles
- Responsive: Response times must be consistent with the needs of the applications with a certain quality of service;
- Resilient: Some features, such as replication, containment, isolation, and delegation, should be system objectives to maintain response even in the case of any failure;
- Elastic: Requests to the system must be addressed with replicated components to prevent bottlenecks or containment points;
- Message Driven: The use of asynchronous messaging queue systems and the design of some form of back pressure facilitate load management, elasticity, and flow control, which provides low coupling, isolation, and location transparency.
3.4. Fast Data Architecture and Big Data Architecture
3.5. Domain-Driven Design (DDD)
3.6. DevOps and Containerization Ecosystem
3.7. Kubernetes Patterns
4. System Architecture
4.1. Scope and Context
4.1.1. Scenario 1: Basic Services for the Management of the System, Monitoring Services, and Services for Alerts and Emergency Management
4.1.2. Scenario 2: Services for the Management of Diets
- Digitized Diet Catalog. The art of designing diets, types of food, and nutritional components is beyond the scope of this article, so the diet catalog is based on the design of nutritional intakes provided by the healthy Mediterranean-style eating pattern and healthy US-style eating pattern. These patterns are described in the dietary guidelines for Americans 2015–2020 [39]. The healthy US-style pattern includes 12 calorie levels to meet the needs of individuals across the lifespan. The pattern is used for the creation of a digitized catalog of diets by building schedules of daily intakes during each week, following the distribution of the recommended daily calories for a person;
- Prediction of the diet. The diet prediction uses the dietary reference intakes (DRIs) that are published by the Food and Nutrition Board of the Institute of Medicine, and they are intended for healthy people in the United States and Canada. Thus, the prediction of diets is based on the estimated energy requirement (EER). The EER is defined as the average dietary intake that is predicted to maintain energy balance in a healthy adult of a defined age, gender, weight, height, and physical activity level (PAL) consistent with health [40];
- Diet planning. The catalog and its basic plans help the nutritionist to plan a diet for a person by making minimal changes in the proportions of food. Through the system, the nutritionist can assign a weekly plan and meal schedules to dieters;
- Monitoring and control of the diet. The monitoring and control cycle is as follows: the housekeeper chooses the diet and prepares it every day. The system provides services such as consultation of recipes and videos for the preparation of meals. Once the person completes the food intake, the housekeeper confirms the completion of the intake to the system by sending two quick response codes (QR codes), ingested food and elderly person ID, and the value of the amount ingested through the mobile crowd sensing components. Finally, automatic alerts are sent to users if dietary plans are not carried out.
4.1.3. Definition of System Requirements
4.2. Architecture Description
4.2.1. Context View
- A doctor could immediately carry out medical follow-up and report the vital signs of a specific patient who is at home;
- Pharmacies may know if certain products should be provided if there are people in the area who use specific medications;
- The food stores could offer products oriented to the needs of the diets followed by elderly people;
- Medical research institutes can use the data collected by the system to develop plans that contribute to research results in the science and medicine field.
4.2.2. Functional View
- The Core System: It consists mainly of:
- Elderly People Manager: Allows managing the personal data of elderly people;
- User and User Groups Manager: Its main functions are to create profiles and security levels, create user-type profiles, and create users or groups of users of the system. It is only managed by the system administrator;
- Home Manager: Allows creating data related to the elderly person’s home such as location, number of rooms, types of rooms, free zones, and dimensions;
- Sensors Manager: Permits recording of the data about features of the sensors.
- Monitor and Control Manager: It consists mainly of:
- The sensor monitoring and control subsystem to collect the vital signs and the temperature status of the room inside the home;
- The input/output transporter whose function is to transport the sensing data in near real time (real-time ingestion);
- The functional elements of the system that allow the parameterization and configuration of the input/output transporter, such as the creation of topics in distributed publish/subscribe systems;
- The system elements for near real-time data analytics (real-time analytics).
- Data Storage Manager: The functional component that stores the data used by the system. It is a conventional database management system. Its goal is to keep the data in a secure repository.
- Diet Manager: It consists of the following components:
- Diet Catalog Manager: Used to manage all the data in the digitized catalog;
- Diet Prediction Service: A set of operations for updating the physical data of an individual. These data are age, weight, height, and physical activity level (personal physical data). It also contains the functional element that performs the predictor role based on the EER of elderly people;
- Diet Prescription Service: Helps the nutritionist to assign a diet label to a person based on the diet proposed by the EER predictor and establishes the periods of the diet;
- Diet Preparation Service: The group of operations that are specially designed for the housekeeper, who is the person in charge of preparing meals in the elderly person’s house. It also provides videos and the steps for preparing menus through recipes to help prepare meals of the day;
- Service for Food Intake Monitoring: A set of operations used to record in the system the start and end of food intake. These data are sent from a mobile application to a system using the IoT messaging system. The start of food intake is recorded by sending the QR code of the diet menu stored in the catalog. Finally, the end of food intake is indicated by sending the elderly individual ID and the approximate percentage value of the food ingested. During the assignment and follow-up of a diet, the services execute functionalities that help keep records of the actions performed, as summarized in Figure 5.
- Alert Manager: Helps create and maintain all kinds of system alerts related to the status of vital signs or the incidents that could occur in the follow-up of the diet plan. It consists of a component (alert engine) in continuous operation with the ability to trigger alerts within the system based on the analysis of the various data received from the home.
4.2.3. Information View
4.2.4. Development View
4.2.5. Deployment View
5. Implementation Details
5.1. Google Cloud Platform and Kubernetes
5.2. Health Applications of the System
5.3. Data Storage Infrastructure
5.4. EMQ Cluster
5.5. Confluent Platform
5.6. Apache Spark
5.7. Connectors
5.7.1. MQTT–Kafka Connector
5.7.2. Kafka–MongoDB Connector
5.7.3. Spark–Kafka Connector
5.7.4. MongoDB Connector for Spark
5.8. Mobile Technologies
5.9. Technological Resources for Software Construction and Version Control
5.10. Security
6. Experiment and Result
6.1. Data
6.2. Core Services and Specialized Services
6.3. Monitoring Service
6.3.1. EMQ Cluster Services
6.3.2. Kafka Cluster Services
6.3.3. Dashboard for Monitoring Vital Signs
6.4. Emergency Service
- Alert manager 1: Can be placed on the patient’s smartphone as an additional lightweight module within the app that collects vital sign data;
- Alert manager 2: Can be placed as a Spark app in the cloud computing environment. It is a streaming service that continuously and dynamically monitors the vital signs in near real time.
- A simulator of multiple patient vital sign messages. It is a JMeter–K8s cluster that publishes messages to the EMQ cluster to create various types of workloads on the messaging subsystem. The data generated by the JMeter–K8s cluster only include data from patients in normal health;
- A simulator of vital signs of a patient in critical condition. It is a Ptolemy simulator supported by a MacBook that sends the simulation data to the patient’s real smartphone via Bluetooth. The simulator is capable of generating messages with normal conditions of the patient’s vital signs and messages with abnormal conditions;
- A real smartphone with an app that collects data from the simulator of vital signs with the topic “vitalSingsTopic/s1”. This smartphone forwards the patient data to the EMQ cluster with the same topic “vitalSingsTopic/s1”. Additionally, in case the alert manager 1 installed on this smartphone detects abnormal conditions in the patient’s vital signs, it generates emergency messages to the EMQ cluster with the topic “emergencyTopic”;
- The messaging subsystem in the cloud computing environment consists of the EMQ cluster, MQTT–Kafka bridge, and the Kafka cluster;
- A Spark application that was implemented as alert manager 2. It is a rules engine that uses near-real-time analytics processing based on Apache Spark. Additionally, in case this Spark application detects abnormal conditions in the patient’s vital signs, this application sends emergency messages to the EMQ cluster with the topic “emergencyTopic”;
- A real smartphone belonging to medical personnel with an app that collects the emergency message from the EMQ cluster. The mobile app is an MQTT client subscribed to the topic “emergencyTopic”. The routes for sending the emergency message to the paramedics due to the two possible locations of the alert manager are a–b and c–d (see Figure 20).
- The time when the patient monitor simulator performs data sampling;
- The moment when the alert notification message (generated in alert manager 1) reaches the smartphone of the paramedic;
- The moment when the alert notification message (generated in alert manager 2) reaches the smartphone of the paramedic.
- The message with the patient’s vital signs and the moment in which the data were sampled. The timestamp is “Wednesday, 25 November 2020, 20:41:55.607000000” (see Figure 21a);
- The alert message generated by alert manager 1 and received on the paramedic’s smartphone. The arrival timestamp is “Wednesday, 25 November 2020, 20:41:58.569000000” (see Figure 21b);
- The alert message generated by alert manager 2 and received on the paramedic’s smartphone. The arrival timestamp is “Wednesday, 25 November 2020, 20:41:59.593000000” (see Figure 21c).
- System response time to produce the alert using alert manager 1 = 20:41:58.569000000 − 20:41:55.607000000 = 2.962 s;
- System response time to produce the alert using alert manager 2 = 20:41:59.593000000 − 20:41:55.607000000 = 3.986 s.
- An average system response time and a standard deviation of 2.3016 s and 0.503399378 s using alert manager 1, respectively;
- An average system response time and a standard deviation of 2.9726 s and 0.7731912519 s using alert manager 2, respectively.
- The average system response time increased (Test 10 and Test 18);
- The messaging subsystem service completely stopped the data flow toward Kafka (Test 6) due to bridge failure;
- The messaging subsystem service partially stopped the data flow toward Kafka due to the failure of some bridges (Tests 10, 14, and 18) with loss of messages (% lost of Test 18 = ([60,000 − 40,068]/60,000] × 100 = 33%).
7. Conclusions and Future Work
Supplementary Materials
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Acknowledgments
Conflicts of Interest
Appendix A
Entity | Description |
---|---|
elderlyPeople | It includes any information related to the personal data of all elderly people. |
healthCarePersonnel | It includes medical staff data. |
familyMemberContacts | It is the information of family members who have responsibility for the care of the elderly person. |
appointments | It contains the data of appointments made for regular check-ups by the medical staff |
homes | It contains a set of features related to where elderly people live. |
homeSpaces | It saves a set of features related to each of the rooms in the home. |
sensors | This table defines the data of all the sensors used in the home. |
vitalSignsTracks | It stores the data from the process of monitoring vital signs. |
roomTemperatureTracks | It stores the data from the process of monitoring the room temperature. |
diets | It is the catalog of diets with a set of digitized diets. It contains basic diet plans with daily schedules per week. |
patientDiets | It contains the diet information assigned to each individual with the type of diet, the schedule, and the duration. |
foodProgramIngest | It stores information about diet meals prepared by the housekeeper. |
dailyIntake | This table stores information about the daily intake data. |
primaryPhysicalData | It maintains the physical information of the individuals, such as age, weight, height, and the PAL. These data are necessary each time a prediction of a diet is made through the EER. |
Appendix B
- Developing applications are shown as a set of subapplications that are implemented as microservices (Sub-App1 = {uServices} and Sub-App2 = {uServices});
- There is a set of libraries necessary for the operation of microservices (such as MongoDB, Apache Spark, EMQ, Apache Kafka, and Apache Zookeeper libraries);
- The third-party software in Docker containers (for instance, MQTT broker and Apache Kafka) can be used to create an agile development and testing environment for subapplications on the same computer. In addition, the subapplication microservice versions can be updated using a distributed version control system such as GitLab;
- Finally, there is a platform used to support the development, integration, and versioning of subapplications. Some of the main elements of the platform are the following: simple build tool (SBT), software development kit (SDK), Scala-SDK, Play Framework support, IntelliJ IDEA with Git integration plugin, Maven integration plugin, and GitLab project plugin.
Appendix C
Characteristic | Value |
---|---|
Master version | 1.16.13-gke.401 |
Total size | 7 nodes |
Node zones | Node Pool 1:
|
Pod address range | 10.4.0.0/14 |
Characteristic | Value |
---|---|
Image type | Ubuntu |
Cores | 2 vCPUs |
Memory | 7.5 GB/Node |
Architecture | amd64 |
Machine Type | n1-standard-2 |
Boot disk type | Standard persistent disk |
Boot disk size (per node) | 100 GB |
Characteristic | Value |
---|---|
Master version | 1.16.13-gke.401 |
Total size | 4 nodes (1 JMeter master y 3 JMeter slaves) |
Node zones | europe-west2-b (Node 1, Node 2, Node 3, Node 4) |
Pod address range | 10.48.0.0/14 |
Appendix D
Kubernetes Patterns | Description |
---|---|
Multiple Availability Zone Design [78,79] | This pattern provides independent power, network, security, and isolation from failures in other availability zones. Availability zones within the same region have low latency network connectivity between them. It provides sufficient configuration within the scope of our system testing. |
Single Container [80] | A single container per pod is the simplest and most common Kubernetes use case. Each pod is used to run a single instance of a given application. It is a basic pattern for the placement of the components of the system applications. All system components were deployed under this pattern as there are no components that must work together in a single pod. |
Automated Placement [81] | It helps influence the placement of pods in the cluster to control the impact on the availability, performance, and capacity of the distributed systems. We use the following strategies: Node-Name: The simplest way to place a pod on a specific node. It was used to deploy the MQTT–Kafka bridge and scale it on a single and exclusive node. Pod-Anti-affinity: Spread the pods of a service across nodes or availability zones, e.g., to reduce correlated failures. It was applied in the deployment of the three messaging brokers of the EMQ cluster in different nodes. |
Stateful Service [82,83] | The stateful service pattern provides building blocks through the Kubernetes StatefulSet resource for the management of distributed stateful applications. It provides persistent identity, networking through services resources, storage (persistent disks), and ordinality (instantiation order/position of pods). In this paper, this pattern was suitable for implementing clusters of ZooKeeper, Kafka, MongoDB, and MQTT that required unique and persistent identities. |
Service Discovery [30] | The Service Discovery pattern provides a stable endpoint to provide access to system services. We use the following mechanisms: Internal Service Discovery: It is the implicit mechanism for accessing the pods from inside the Kubernetes cluster that contains them. In this paper, the MQTT–Kafka bridge uses the internal services of the MQTT and Kafka clusters to connect to them. Load Balancer Service Discovery: It provides access to system components that facilitate its use via a cloud provider’s load balancer. In this work, a load balancer is used to publish the patient’s vital sign data in the EMQ cluster. Application Layer Service Discovery: The advantage of this mechanism is that the HTTP request contains the host and path to address multiple services under the same IP address. It is implemented through a Kubernetes Ingress. In this paper, access to microservices was carried out via K8s Ingress. |
Environment Variable Configuration [30] | It provides mechanisms to parameterize the operation of system components. The simplest mechanism is the use of a reduced set of environment variables to store configuration data. Another strategy used is the use of Kubernetes configuration resources (ConfigMap and Secret) to provide storage and management of key–value pairs. |
Fixed Deployment [30] | It is the way to update the system components. In this paper, the only strategy used is the one that ensures the deployment and existence of a single version of the component in the cluster. The blue–green and canary release strategies are not used because they are used in production to maintain several versions coexisting in the cluster. |
Elastic Scale [30] | Scaling strategies help the system not break down and react to heavy loads. In this research, horizontal scaling was used by increasing pods and increasing nodes in the cluster. |
Appendix E
Appendix F
Appendix G
Vital Sign | Mean | Standard Deviation |
---|---|---|
Body temperature | 36 °C | 0.01 °C |
Diastolic pressure | 80 mm Hg | 0.01 mm Hg |
Systolic pressure | 120 mm Hg | 0.01 mm Hg |
Cardiac rhythm | 70 beats per minute | 0.01 beats per minute |
Appendix H
Microservice Operation | HTTP Method | Request (Bytes) | Response Header (Bytes) | Response Body (Bytes) | Response Total (Bytes) |
---|---|---|---|---|---|
Insert One Document (12 fields/document) | Post | 452 | 758 | 77 | 835 |
Read One Document (12 fields/document) | Get | 152 | 934 | 7696 | 8630 |
Read Many (20 Documents) (7 fields/document) | Get | 132 | 935 | 11,777 | 12,712 |
Update One Document (12 fields/document) | Put | 554 | 758 | 32 | 790 |
Delete One Document | Delete | 186 | 758 | 73 | 831 |
References
- World Health Organization. Ageing. Available online: https://www.who.int/news-room/facts-in-pictures/detail/ageing (accessed on 30 March 2021).
- Casale, G.; Chesta, C.; Deussen, P.; Di Nitto, E.; Gouvas, P.; Koussouris, S.; Stankovski, V.; Symeonidis, A.; Vlassiou, V.; Zafeiropoulos, A.; et al. Current and future challenges of software engineering for services and applications. Procedia Comput. Sci. 2016, 97, 34–42. [Google Scholar] [CrossRef] [Green Version]
- Gubbi, J.; Buyya, R.; Marusic, S.; Palaniswami, M. Internet of Things (IoT): A vision, architectural elements, and future directions. Future Gener. Comp. S 2013, 29, 1645–1660. [Google Scholar] [CrossRef] [Green Version]
- Riazul, I.S.M.; Kwak, D.; Kabir, M.H.; Hossain, M.; Kwak, K. The Internet of Things for health care: A comprehensive survey. IEEE Access 2015, 3, 678–708. [Google Scholar] [CrossRef]
- Ganti, R.K.; Ye, F.; Lei, H. Mobile crowdsensing: Current state and future challenges. IEEE Commun. Mag. 2011, 49, 32–39. [Google Scholar] [CrossRef]
- Oussous, A.; Benjelloun, F.; Ait, L.A.; Belfkih, S. Big Data technologies: A survey. J. King Saud Univ. Comp. Info. Sci. 2018, 30, 431–448. [Google Scholar] [CrossRef]
- Ud, D.I.; Guizani, M.; Hassan, S.; Kim, B.; Khurram, K.M.; Atiquzzaman, M.; Hassan, S. The Internet of Things: A review of enabled technologies and future challenges. IEEE Access 2019, 7, 7606–7640. [Google Scholar] [CrossRef]
- Reactive Manifesto. Available online: http://www.reactivemanifesto.org (accessed on 30 March 2021).
- Wampler, D. Fast Data Architectures for Streaming Applications, 2nd ed.; O’Reilly Media Inc.: Sebastopol, CA, USA, 2018. [Google Scholar]
- What Are Containers and Their Benefits-Google Cloud. Available online: https://cloud.google.com/containers (accessed on 30 March 2021).
- Jurado, L.; Salvachúa, J. e-Health IoT reactive services for elderly care at home in Smart City built on an emerging Fast Data Architecture. In Proceedings of the 2018 International Conference on Parallel and Distributed Processing Techniques & Applications (2018 PDPTA), Las Vegas, NV, USA, 30 July–2 August 2018; pp. 35–41. Available online: https://csce.ucmss.com/cr/books/2018/LFS/CSREA2018/PDP3615.pdf (accessed on 30 March 2021).
- Hemairy, M.A.; Serhani, M.A.; Amin, S.; Ahmed, M.A. Integrated and scalable architecture for providing cost-effective remote health monitoring. In Proceedings of the 2016 9th International Conference on Developments in eSystems Engineering (DeSE), Liverpool, UK, 31 August–2 September 2016; pp. 74–80. [Google Scholar] [CrossRef]
- Gahlot, S.; Reddy, S.R.N.; Kumar, D. Review of smart health monitoring approaches with survey analysis and proposed framework. IEEE Internet Things J. 2019, 6, 2116–2127. [Google Scholar] [CrossRef]
- Kirtana, R.N.; Lokeswari, Y.V. An IoT based remote HRV monitoring system for hypertensive patients. In Proceedings of the 2017 International Conference on Computer, Communication and Signal Processing (ICCCSP), Chennai, India, 10–11 January 2017; pp. 1–6. [Google Scholar] [CrossRef]
- Pescosolido, L.; Berta, R.; Scalise, L.; Revel, G.M.; De Gloria, A.; Orlandi, G. An IoT-inspired cloud-based web service architecture for e-Health applications. In Proceedings of the 2016 IEEE International Smart Cities Conference (ISC2), Trento, Italy, 12–15 September 2016; pp. 1–4. [Google Scholar] [CrossRef] [Green Version]
- Raji, A.; Kanchana Devi, P.; Golda Jeyaseeli, P.; Balaganesh, N. Respiratory monitoring system for asthma patients based on IoT. In Proceedings of the 2016 Online International Conference on Green Engineering and Technologies (IC-GET), Coimbatore, India, 19 November 2016; pp. 1–6. [Google Scholar] [CrossRef]
- Abawajy, J.H.; Hassan, M.M. Federated Internet of Things and Cloud Computing pervasive patient health monitoring system. IEEE Commun. Mag. 2017, 55, 48–53. [Google Scholar] [CrossRef]
- Vuppalapati, C.; Ilapakurti, A.; Kedari, S. The role of Big Data in creating sense EHR, an integrated approach to create next generation mobile sensor and wearable data driven Electronic Health Record (EHR). In Proceedings of the 2016 IEEE Second International Conference on Big Data Computing Service and Applications (BigDataService), Oxford, UK, 29 March–1 April 2016; pp. 293–296. [Google Scholar] [CrossRef]
- Zhang, Y.; Qiu, M.; Tsai, C.; Hassan, M.M.; Alamri, A. Health-CPS: Healthcare Cyber-Physical System assisted by Cloud and Big Data. IEEE Syst. J. 2017, 11, 88–95. [Google Scholar] [CrossRef]
- Ma’arif, M.R.; Priyanto, A.; Setiawan, C.B.; Winar Cahyo, P. The design of cost efficient health monitoring system based on Internet of Things and Big Data. In Proceedings of the 2018 International Conference on Information and Communication Technology Convergence (ICTC), Jeju, Korea, 17–19 October 2018; pp. 52–57. [Google Scholar] [CrossRef]
- Taher, N.C.; Mallat, I.; Agoulmine, N.; El-Mawass, N. An IoT-cloud based solution for real-time and batch processing of Big Data: Application in healthcare. In Proceedings of the 2019 3rd International Conference on Bio-Engineering for Smart Technologies (BioSMART), Paris, France, 24–26 April 2019; pp. 1–8. [Google Scholar] [CrossRef]
- Cioara, T.; Anghel, I.; Salomie, I.; Barakat, L.; Miles, S.; Reidlinger, D.; Taweel, A.; Dobre, C.; Pop, F. Expert system for nutrition care process of older adults. Future Gener. Comp. S 2018, 80, 368–383. [Google Scholar] [CrossRef] [Green Version]
- Wickramasinghe, M.P.N.; Perera, D.M.; Kahandawaarachchi, K.A.D. Dietary prediction for persons with Chronic Kidney Disease (CKD) by considering blood potassium level using ML algorithms. In Proceedings of the 2017 IEEE Life Sciences Conference (LSC), Sydney, NSW, Australia, 13–15 December 2017; pp. 300–303. [Google Scholar] [CrossRef]
- Alloghani, M.; Hussain, A.; Al-Jumeily, D.; Fergus, P.; Abuelmaatti, O.; Hamden, H. A mobile health monitoring application for obesity management and control using the internet-of-things. In Proceedings of the 2016 Sixth International Conference on Digital Information Processing and Communications (ICDIPC), Beirut, Lebanon, 21–23 April 2016; pp. 19–24. [Google Scholar] [CrossRef]
- Harous, S.; Serhani, M.A.; El Menshawy, M.; Benharref, A. Hybrid obesity monitoring model using sensors and community engagement. In Proceedings of the 2017 13th International Wireless Communications and Mobile Computing Conference (IWCMC), Valencia, Spain, 26–30 June 2017; pp. 888–893. [Google Scholar] [CrossRef]
- Dutta, J.; Gazi, F.; Roy, S.; Chowdhury, C. AirSense: Opportunistic crowd-sensing based air quality monitoring system for smart city. In Proceedings of the 2016 IEEE SENSORS, Orlando, FL, USA, 30 October–3 November 2016; pp. 1–3. [Google Scholar] [CrossRef]
- Rozanski, N.; Woods, E. Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives, 2nd ed.; Addison Wesley: Boston, MA, USA, 2012. [Google Scholar]
- Wolff, E. Microservices: Flexible Software Architecture; Addison-Wesley: Boston, MA, USA, 2016. [Google Scholar]
- Bass, L.; Weber, I.; Zhu, L. DevOps: A Software Architect’s Perspective; Addison Wesley: Boston, MA, USA, 2015. [Google Scholar]
- Ibryam, B.; Huß, R. Kubernetes Patterns; O’Reilly Media Inc.: Boston, MA, USA, 2019. [Google Scholar]
- Qian, K.; Fu, X.; Tao, L.; Xu, C.; Diaz-Herrera, J. Software Architecture and Design Illuminated; Jones and Bartlett Publishers: Burlington, MA, USA, 2009. [Google Scholar]
- Richards, M. Software Architecture Patterns: Understanding Common Architecture Patterns and When to Use Them; O’Reilly Media Inc.: Sebastopol, CA, USA, 2015. [Google Scholar]
- Amundsen, M.; McLarty, M.; Mitra, R.; Nadareishvili, I. Microservice Architecture; O’Reilly Media Inc.: Sebastopol, CA, USA, 2016. [Google Scholar]
- Hwang, K.; Dongarra, J.; Fox, G.C. Distributed and Cloud Computing: From Parallel Processing to the Internet of Things; Morgan Kaufmann Publishers Inc.: San Francisco, CA, USA, 2012. [Google Scholar]
- Marinescu, D.C. Cloud Computing: Theory and Practice, 2nd ed.; Morgan Kaufmann Publishers Inc.: San Francisco, CA, USA, 2017. [Google Scholar]
- GitLab: The Entire DevOps Lifecycle in One Application. Available online: https://about.gitlab.com/stages-devops-lifecycle/ (accessed on 30 March 2021).
- Docker: What Is a Container? Available online: https://www.docker.com/resources/what-container (accessed on 30 March 2021).
- Docker Hub Quickstart. Available online: https://docs.docker.com/docker-hub/ (accessed on 30 March 2021).
- U.S. Department of Health and Human Services; U.S. Department of Agriculture. 2015–2020 Dietary Guidelines for Americans, 8th ed.; U.S. Department of Health and Human Services: Washington, DC, USA, 2015. Available online: https://health.gov/dietaryguidelines/2015/resources/2015–2020_Dietary_Guidelines.pdf (accessed on 30 March 2021).
- Catharine, R.A.; Caballero, B.H.; Cousins, R.J.; Tucker, K.L.; Ziegler, T.R. Modern Nutrition in Health and Disease, 11th ed.; Wolters Kluwer Health Adis (ESP): Philadelphia, PA, USA, 2014. [Google Scholar]
- Google Cloud: Products & Services. Available online: https://cloud.google.com/products/ (accessed on 30 March 2021).
- Kubernetes: What Is Kubernetes. Available online: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ (accessed on 30 March 2021).
- Play Framework. Available online: https://www.playframework.com/ (accessed on 30 March 2021).
- MongoDB: The Database for Modern Applications. Available online: https://www.mongodb.com/ (accessed on 30 March 2021).
- MySQL-MySQL 8.0 Reference Manual-1.2.1 What Is MySQL? Available online: https://dev.mysql.com/doc/refman/8.0/en/what-is-mysql.html (accessed on 30 March 2021).
- EMQ: The Massively Scalable MQTT Broker for IoT and Mobile Applications. Available online: http://emqtt.io/ (accessed on 30 March 2021).
- Confluent Platform. Available online: https://www.confluent.io/product/confluent-platform/ (accessed on 30 March 2021).
- Confluent Platform: Kubernetes Helm Charts. Available online: https://docs.confluent.io/5.1.0/installation/installing_cp/cp-helm-charts/docs/index.html (accessed on 30 March 2021).
- Apache Spark: Lightning-Fast Unified Analytics Engine. Available online: https://spark.apache.org/ (accessed on 30 March 2021).
- Spark 2.4.0: Running Spark on Kubernetes. Available online: https://spark.apache.org/docs/2.4.0/running-on-kubernetes.html (accessed on 30 March 2021).
- Akka Streams Kafka. Available online: https://doc.akka.io/docs/alpakka-kafka/0.11/home.html (accessed on 30 March 2021).
- Maven Repository: Paho Akka. Available online: https://mvnrepository.com/artifact/com.sandinh/paho-akka_2.11/1.3.0 (accessed on 30 March 2021).
- MongoDB Sink. Available online: https://docs.lenses.io/connectors/sink/mongo.html#kubernetes (accessed on 30 March 2021).
- Spark 2.4.0 Documentation: Spark Streaming + Kafka Integration Guide. Available online: https://spark.apache.org/docs/2.4.0/streaming-kafka-integration.html (accessed on 30 March 2021).
- MongoDB Documentation: MongoDB Connector for Spark. Available online: https://docs.mongodb.com/spark-connector/master/ (accessed on 30 March 2021).
- Android Developers: Platform Architecture. Available online: https://developer.android.com/guide/platform (accessed on 30 March 2021).
- EMQ 2.2-Erlang MQTT Broker: User Guide. Available online: https://emq-docs-en.readthedocs.io/en/latest/guide.html (accessed on 30 March 2021).
- Confluent: Security. Available online: https://docs.confluent.io/current/security/index.html (accessed on 30 March 2021).
- Silhouette. Available online: https://www.silhouette.rocks/ (accessed on 30 March 2021).
- MongoDB Documentation: Security. Available online: https://docs.mongodb.com/manual/security/ (accessed on 30 March 2021).
- Spark 2.4.0 Documentation: Security. Available online: https://spark.apache.org/docs/2.4.0/security.html (accessed on 30 March 2021).
- Google Cloud: Google Infrastructure Security Design Overview. Available online: https://cloud.google.com/security/infrastructure/design/?hl=es-419 (accessed on 30 March 2021).
- Kubernetes: Overview of Cloud Native Security. Available online: https://kubernetes.io/docs/concepts/security/overview/ (accessed on 30 March 2021).
- Selvaraj, P.; Doraikannan, S. Privacy and Security Issues on Wireless Body Area and IoT for Remote Healthcare Monitoring. In Intelligent Pervasive Computing Systems for Smarter Healthcare; Sangaiah, A.K., Shantharajah, S., Theagarajan, P., Eds.; JohnWiley & Sons Inc.: Hoboken, NJ, USA, 2019; pp. 227–253. [Google Scholar]
- Li, Y.; Jeong, Y.; Shin, B.; Park, J.H. Crowdsensing Multimedia Data: Security and Privacy Issues. IEEE MultiMedia 2017, 24, 58–66. [Google Scholar] [CrossRef]
- Google Cloud–Compliance. HIPAA. Available online: https://cloud.google.com/security/compliance/hipaa-compliance (accessed on 30 March 2021).
- HIPAA Compliance-Amazon Web Services (AWS). Available online: https://aws.amazon.com/compliance/hipaa-compliance/ (accessed on 30 March 2021).
- Al-Marsy, A.; Chaudhary, P.; Rodger, J.A. A Model for Examining Challenges and Opportunities in Use of Cloud Computing for Health Information Systems. Appl. Syst. Innov. 2021, 4, 15. [Google Scholar] [CrossRef]
- Apache JMeter: Apache JMeter Distributed Testing Step-by-Step. Available online: https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html (accessed on 30 March 2021).
- Load Testing as a Service (LTaaS) with Apache Jmeter on kubernetes. Available online: https://github.com/kubernauts/jmeter-kubernetes (accessed on 30 March 2021).
- Understanding Blood Pressure Readings-American Heart Association. Available online: https://www.heart.org/en/health-topics/high-blood-pressure/understanding-blood-pressure-readings (accessed on 30 March 2021).
- Body Temperature Norms: MedlinePlus Medical Encyclopedia. Available online: https://medlineplus.gov/ency/article/001982.htm (accessed on 30 March 2021).
- All About Heart Rate (Pulse)-American Heart Association. Available online: https://www.heart.org/en/health-topics/high-blood-pressure/the-facts-about-high-blood-pressure/all-about-heart-rate-pulse (accessed on 30 March 2021).
- Montgomery, D.C.; Runger, G.C. Applied Statistics and Probability for Engineers, 6th ed.; John Wiley & Sons: New York, NY, USA, 2014. [Google Scholar]
- Ptolemy II Home Page. Available online: http://ptolemy.eecs.berkeley.edu/ptolemyII/ (accessed on 30 March 2021).
- Majumder, S.; Mondal, T.; Deen, M.J. Wearable Sensors for Remote Health Monitoring. Sensors 2017, 17, 130. [Google Scholar] [CrossRef] [PubMed]
- Measure Performance with the RAIL Model. Available online: https://web.dev/rail/#goals-and-guidelines (accessed on 30 March 2021).
- Vohra, D. Kubernetes Management Design Patterns: With Docker, CoreOS Linux, and Other Platforms, 1st ed.; Apress: New York, NY, USA, 2017. [Google Scholar]
- Types of Clusters-Kubernetes Engine Documentation-Google Cloud. Available online: https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters (accessed on 30 March 2021).
- Pod-Kubernetes Engine Documentation-Google Cloud. Available online: https://cloud.google.com/kubernetes-engine/docs/concepts/pod (accessed on 30 March 2021).
- Assigning Pods to Nodes-Kubernetes. Available online: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ (accessed on 30 March 2021).
- Overview of Deploying Workloads-Kubernetes Engine Documentation. Available online: https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-workloads-overview (accessed on 30 March 2021).
- StatefulSets-Kubernetes. Available online: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/ (accessed on 30 March 2021).
Reference Number | Monitoring (Sensors) | Emergency Situations | Monitoring: WSAN/Wireless/ 3G/4G/Bluetooth or Others | Near Real-Time Communication | Scale for Smart City | Characteristics Related to Big Data | Near-Real-Time Analytics | Architecture Implementation | Services Implementation | CI/CD of DevOps Practices | Container as a Service |
---|---|---|---|---|---|---|---|---|---|---|---|
[12] | Y1 | Y | Wearable sensors, 3G | Y | N2 | N | Y | Y | Web services (JSP, servlet, EJB, MDB, and JDBC) | N | N |
[13] | Y | Y | ZigBee-based WSN, Bluetooth, Wi-Fi | Y | N | N | N | N | N/A | N | N |
[14] | Y | Y | IEEE 802.11 Wi-Fi and IEEE 802.15.4 Zigbee | Y | N | N | N | Y | JAVA web application | N | N |
[15] | Y | Y | Bluetooth, CoAP, 3G | N | N | N | N | Y | RESTful web services | N | N |
[16] | Y | Y | Ethernet Shield, Wi-Fi, IEEE 802.15 | Y | N | N | Y | Y | Web server (PHP, Apache), HTML Code | N | N |
[17] | Y | Y | BSN/Wi-Fi/LTE, Bluetooth | Y | N | N | N | Y | N/A | N | N |
[18] | Y | Y | Bluetooth, 3G | Y | N | Y | Y | Y | RESTful API, JSON, HTLM5 | N | N |
[19] | Y | Y | 3G, Wi-Fi | Y | N | Y | Y | Y | N/A | N | N |
[20] | Y | N | Wi-Fi 802.11 b/g/n | Y | N | Y | Y | Y | Simple RESTful web service | N | N |
[21] | Y | Y | IEEE 802.11.b/g/n/ac | Y | Y | Y | Y | Y | Amazon Web Services (AWS) | N | N |
[22] | N | Y | N/A | N | N | N | N | Y | Protégé, RDF API, D2RQ | N | N |
[23] | N | N | N/A | N | N | N | N | N | N/A | N | N |
[24] | Y | Y | Bluetooth, Wi-Fi, 3G | Y | N | N | N | Y | REST Web Services, PHP, Java script, HTML5, CSS | N | N |
[25] | Y | N | Wi-Fi, GPRS, 3G, 4G, Bluetooth | Y | N | N | N | Y | RESTful web services and JSON | N | N |
Our work | Y | Y | Bluetooth, 4G | Y | Y | Y | Y | Y | RESTful Microservices | Y | Y |
#Req. | Requirements |
---|---|
R1 | Provide a wireless body area network (WBAN) to enable the collection of medical data through monitoring devices that the elderly person wears comfortably. This network must be part of a data collection component within the home and must be customizable, transparent, and non-intrusive. |
R2 | Make it easier for monitoring devices to send data to a device that acts as a gateway, which should be part of the data collection components within the home. This gateway should allow constant communication with the elderly person’s medical data collection sensors. This gateway must be customizable, transparent, and non-intrusive. |
R3 | Provide the communication components to transport the data from the monitoring process of the elderly person to the secure data repositories. |
R4 | There must be a flexible integration and communication of the different components of the system. |
R5 | Provide the distributed software services with facilities for maintaining the data of the different data entities of the system (elderly people, sensors and actuators, catalog of diets, family members, etc.) linked to the various applications for care of the health of the elderly person. |
R6 | The system must have the mechanisms for real-time control of the medical conditions of the elderly person and the generation of alerts that communicate emergencies. The emergency notifications can be used by the people who take care of the elderly person to execute the action protocols for immediate medical assistance. |
R7 | The system must have a repository for the safe storage of data: personal data of the elderly person, data of family members, medical data from monitoring, basic data of sensors or actuators, etc. This data repository must be scalable, adaptable, flexible, and support optimized data queries. |
R8 | Allow consultation of the medical data or medical condition of the elderly person remotely from anywhere/at any time, through software applications through electronic devices such as computers, tablets, or smartphones. The graphical interfaces of these software applications must be flexible and friendly. |
R9 | Provide the system with the elements for the treatment of big data. These components should have the ability to facilitate data analytics in real time and in batch mode. |
R10 | Apply security mechanisms to the entire system. |
R11 | Facilitate the development of new services and incorporate a flow of integration and deployment of software versions on the cloud computing infrastructure. |
R12 | Make the deployment of system components more flexible on a public cloud. The public cloud should facilitate the deployment and execution of containers, the management of clusters, and the automation of scaling. |
R13 | Provide reactive characteristics to obtain a flexible, low-coupling, and scalable system. A reactive system is easy to develop and upgrade, fault tolerant, and highly responsive. |
Exper. ID | Operation of Microservices | Number of Pods | Apache JMeter | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Numbers of Threads (Users) | Ramp-Up Period (s) | Duration of Experiment (hh:mm:ss) | Avg. Throughput (Request/s) | Avg. Response Time (ms) | Min. Response Time (ms) | Max. Response Time (ms) | Percentage of Requests with Errors (%) | |||
1 | save | 1 | 48,000 | 180 | 00:03:09 | 254.43 | 253 | 3 | 2036 | 0.00 |
2 | save | 1 | 51,000 | 180 | 00:03:11 | 266.73 | 4043 | 4 | 13,059 | 5.38 |
3 | save | 2 | 96,000 | 180 | 00:04:42 | 341.05 | 625 | 2 | 4761 | 0.00 |
4 | save | 2 | 99,000 | 180 | 00:04:52 | 339.30 | 1001 | 2 | 11,184 | 0.20 |
5 | read | 1 | 69,000 | 180 | 00:03:12 | 360.48 | 162 | 3 | 1706 | 0.00 |
6 | read | 1 | 72,000 | 180 | 00:03:19 | 362.36 | 1145 | 2 | 6898 | 0.28 |
7 | read | 2 | 150,000 | 180 | 00:05:14 | 478.01 | 533 | 2 | 7714 | 0.00 |
8 | read | 2 | 153,000 | 180 | 00:06:00 | 425.78 | 557 | 2 | 15,454 | 0.00004 |
9 | list | 1 | 51,000 | 180 | 00:03:06 | 274.75 | 1513 | 7 | 3471 | 0.00 |
10 | list | 1 | 54,000 | 180 | 00:03:09 | 285.56 | 4099 | 6 | 10,502 | 2.87 |
11 | list | 2 | 99,000 | 180 | 00:04:13 | 391.57 | 972 | 4 | 6582 | 0.00 |
12 | list | 2 | 102,000 | 180 | 00:04:24 | 386.23 | 1302 | 4 | 11,115 | 0.35 |
13 | update | 1 | 51,000 | 180 | 00:03:09 | 269.37 | 397 | 3 | 3185 | 0.00 |
14 | update | 1 | 52,500 | 180 | 00:03:13 | 272.96 | 1769 | 3 | 10,022 | 0.17 |
15 | update | 2 | 105,000 | 180 | 00:04:42 | 372.17 | 312 | 2 | 3820 | 0.00 |
16 | update | 2 | 108,000 | 180 | 00:04:46 | 378.02 | 747 | 2 | 8798 | 0.07 |
17 | delete | 1 | 78,000 | 180 | 00:03:29 | 373.23 | 152 | 2 | 3550 | 0.00 |
18 | delete | 1 | 81,000 | 180 | 00:03:30 | 385.41 | 1104 | 2 | 6587 | 0.05 |
19 | delete | 2 | 144,000 | 180 | 00:04:51 | 494.31 | 86 | 2 | 7606 | 0.00 |
20 | delete | 2 | 147,000 | 180 | 00:05:52 | 418.19 | 235 | 2 | 17,388 | 0.07 |
Number of Test | Numbers of MQTT Brokers | Apache JMeter | |||||||
---|---|---|---|---|---|---|---|---|---|
Numbers of Threads (#Users) | Ramp-Up Period (s) | Duration of Experiment (hh:mm:ss) | Avg. Throughput (Request/s) | Avg. Response Time (ms) | Min. Response Time (ms) | Max. Response Time (ms) | Percentage of Requests with Errors (%) | ||
1 | 1 | 6000 | 1 | 00:00:09 | 716.33 | 1532 | 3 | 7226 | 0.00 |
2 | 1 | 9000 | 1 | 00:00:10 | 908.54 | 2599 | 3 | 7601 | 0.00 |
3 | 1 | 18,000 | 1 | 00:00:20 | 924.45 | 6801 | 8 | 16,742 | 0.00 |
4 | 1 | 27,000 | 1 | 00:00:39 | 695.52 | 12,858 | 828 | 32,520 | 0.00 |
5 | 1 | 18,000 | 60 | 00:01:06 | 275.66 | 60 | 1 | 2879 | 0.00 |
6 | 1 | 27,000 | 60 | 00:01:06 | 414.11 | 19 | 1 | 1479 | 0.00 |
7 | 1 | 36,000 | 60 | 00:01:08 | 533.16 | 12 | 1 | 1051 | 0.00 |
8 | 1 | 18,000 | 120 | 00:02:04 | 145.46 | 9 | 2 | 1150 | 0.00 |
9 | 1 | 27,000 | 120 | 00:02:04 | 218.97 | 6 | 1 | 356 | 0.00 |
10 | 1 | 36,000 | 120 | 00:02:05 | 288.01 | 6 | 2 | 739 | 0.00 |
11 | 1 | 18,000 | 180 | 00:03:04 | 97.93 | 6 | 2 | 578 | 0.00 |
12 | 1 | 27,000 | 180 | 00:03:04 | 147.31 | 5 | 2 | 410 | 0.00 |
13 | 1 | 36,000 | 180 | 00:03:10 | 190.43 | 19 | 1 | 2301 | 0.00 |
14 | 3 | 4500 | 1 | 00:00:09 | 518.67 | 1090 | 3 | 3773 | 0.00 |
15 | 3 | 6000 | 1 | 00:00:08 | 751.41 | 1426 | 3 | 5129 | 0.00 |
16 | 3 | 9000 | 1 | 00:00:10 | 968.89 | 3760 | 315 | 7986 | 0.00 |
17 | 3 | 18,000 | 1 | 00:00:18 | 1012.09 | 5697 | 6 | 14,104 | 0.00 |
18 | 3 | 27,000 | 1 | 00:00:23 | 1206.33 | 10,840 | 22 | 21,985 | 0.00 |
19 | 3 | 36,000 | 1 | 00:00:32 | 1156.55 | 12,488 | 8 | 26,808 | 0.00 |
20 | 3 | 18,000 | 60 | 00:01:03 | 286.25 | 10 | 2 | 965 | 0.00 |
21 | 3 | 27,000 | 60 | 00:01:04 | 423.66 | 14 | 2 | 942 | 0.00 |
22 | 3 | 36,000 | 60 | 00:01:10 | 515.43 | 646 | 2 | 16,502 | 0.00 |
23 | 3 | 18,000 | 120 | 00:02:02 | 147.50 | 5 | 2 | 262 | 0.00 |
24 | 3 | 27,000 | 120 | 00:02:03 | 219.50 | 5 | 2 | 284 | 0.00 |
25 | 3 | 36,000 | 120 | 00:02:09 | 279.38 | 30 | 2 | 1521 | 0.00 |
26 | 3 | 18,000 | 180 | 00:03:01 | 99.35 | 5 | 1 | 246 | 0.00 |
27 | 3 | 27,000 | 180 | 00:03:05 | 145.95 | 10 | 1 | 1798 | 0.00 |
28 | 3 | 36,000 | 180 | 00:03:05 | 194.39 | 7 | 2 | 449 | 0.00 |
Number of Test | (# of Zookeepers, # of Kafka Brokers) | Apache JMeter | |||||||
---|---|---|---|---|---|---|---|---|---|
Numbers of Threads (#Users) | Ramp-Up Period (s) | Duration of Experiment (hh:mm:ss) | Avg. Throughput (Request/s) | Avg. Response Time (ms) | Min. Response Time (ms) | Max. Response Time (ms) | Percentage of Requests with Errors (%) | ||
1 | (1, 1) | 18,000 | 1 | 00:00:24 | 932.45 | 491 | 2 | 3814 | 0.00 |
2 | (1, 1) | 27,000 | 1 | 00:00:45 | 749.27 | 901 | 2 | 9192 | 0.00 |
3 | (1, 1) | 36,000 | 1 | 00:01:48 | 379.76 | 8332 | 1 | 60,626 | 0.00 |
4 | (1, 1) | 18,000 | 60 | 00:01:08 | 285.99 | 205 | 3 | 628 | 0.00 |
5 | (1, 1) | 27,000 | 60 | 00:01:16 | 401.88 | 221 | 1 | 1654 | 0.00 |
6 | (1, 1) | 36,000 | 60 | 00:01:40 | 412.22 | 439 | 2 | 8958 | 0.00 |
7 | (1, 1) | 18,000 | 120 | 00:02:07 | 147.48 | 204 | 12 | 529 | 0.00 |
8 | (1, 1) | 27,000 | 120 | 00:02:11 | 218.88 | 207 | 23 | 1040 | 0.00 |
9 | (1, 1) | 36,000 | 120 | 00:02:17 | 286.07 | 209 | 1 | 1295 | 0.00 |
10 | (1, 1) | 18,000 | 180 | 00:03:06 | 98.98 | 203 | 4 | 591 | 0.00 |
11 | (1, 1) | 27,000 | 180 | 00:03:14 | 145.02 | 205 | 9 | 755 | 0.00 |
12 | (1, 1) | 36,000 | 180 | 00:03:27 | 185.79 | 213 | 2 | 4767 | 0.00 |
13 | (3, 3) | 18,000 | 1 | 00:00:23 | 999.78 | 669 | 1 | 5965 | 0.00 |
14 | (3, 3) | 27,000 | 1 | 00:00:38 | 871.00 | 1222 | 2 | 10,783 | 0.00 |
15 | (3, 3) | 36,000 | 1 | 00:00:52 | 878.50 | 1624 | 1 | 13,578 | 0.00 |
16 | (3, 3) | 18,000 | 60 | 00:01:07 | 291.83 | 207 | 84 | 670 | 0.00 |
17 | (3, 3) | 27,000 | 60 | 00:01:11 | 433.79 | 211 | 1 | 717 | 0.00 |
18 | (3, 3) | 36,000 | 60 | 00:01:17 | 564.87 | 207 | 1 | 1205 | 0.00 |
19 | (3, 3) | 18,000 | 120 | 00:02:07 | 148.46 | 204 | 6 | 453 | 0.00 |
20 | (3, 3) | 27,000 | 120 | 00:02:12 | 221.19 | 207 | 3 | 538 | 0.00 |
21 | (3, 3) | 36,000 | 120 | 00:02:18 | 292.02 | 207 | 2 | 698 | 0.00 |
22 | (3, 3) | 18,000 | 180 | 00:03:07 | 99.36 | 203 | 6 | 468 | 0.00 |
23 | (3, 3) | 27,000 | 180 | 00:03:11 | 148.73 | 205 | 3 | 487 | 0.00 |
24 | (3, 3) | 36,000 | 180 | 00:03:16 | 197.46 | 206 | 9 | 598 | 0.00 |
Number of Test (#) | Simulation Condition | Initial Time of the Simulation of Emergency States (s) | Apache JMeter | Bridge | Results | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Total Number of Threads (or Users) | Ramp-Up Period (s) | Scaling of the MQTT–Kafka Bridge (# of Bridges) | Distribution of the Topic “vitalSignsTopic” | Total Expected Messages for Each Instance of the Bridge | Apache JMeter | Number of Messages Reaching Kafka (#) | System Response Time to Communicate an Emergency | ||||||||
Duration of Experiment (hh:mm:ss) | Throughput of MQTT Cluster (Users/s) | Avg. Response Time from MQTT Cluster (ms) | Option 1 | Option 2 | |||||||||||
Average (s) | Standard Deviation (s) | Average (s) | Standard Deviation (s) | ||||||||||||
1 | A | 90 | N/A | N/A | 1 | vitalSignsTopic/s1 | N/A | N/A | N/A | N/A | 10 | 1.61 | 0.218 | 2.31 | 0.382 |
2 | B | 90 | 3000 | 180 | 1 | vitalSignsTopic/s1 | 3000 | 00:03:01 | 16.6/s | 377 | 3010 | 1.28 | 0.193 | 1.98 | 0.525 |
3 | 90 | 9000 | 180 | 1 | vitalSignsTopic/s1 | 9000 | 00:03:01 | 49.7/s | 191 | 9010 | 1.48 | 0.194 | 2.11 | 0.308 | |
4 | 90 | 21,000 | 180 | 1 | vitalSignsTopic/s1 | 21,000 | 00:03:03 | 115.0/s | 377 | 21,010 | 3.33 | 0.294 | 72.48 | 7.432 | |
5 | 90 | 24,000 | 180 | 1 | vitalSignsTopic/s1 | 24,000 | 00:03:05 | 129.8/s | 1100 | 24,010 | 3.25 | 0.221 | 97.19 | 44.178 | |
6 | 90 | 25,500 | 180 | 1 | vitalSignsTopic/s1 | 25,500 | 00:03:05 | 137.5/s | 857 | 11,722 | 3.27 | 0.2396 | The bridge ran out of memory 1 | ||
7 | 90 | 12,000 | 180 | 2 | vitalSignsTopic/s1 vitalSignsTopic/s2 | 6000 | 00:03:02 | 65.9/s | 576 | 12,010 | 2.65 | 0.208 | 3.28 | 0.351 | |
8 | 90 | 18,000 | 180 | 2 | vitalSignsTopic/s1 vitalSignsTopic/s2 | 9000 | 00:03:03 | 98.5/s | 629 | 18,010 | 2.73 | 0.197 | 3.40 | 0.397 | |
9 | 90 | 33,000 | 180 | 2 | vitalSignsTopic/s1 vitalSignsTopic/s2 | 16,500 | 00:03:02 | 181.6/s | 203 | 33,010 | 3.07 | 0.237 | 11.24 | 2.189 | |
10 | 90 | 35,400 | 180 | 2 | vitalSignsTopic/s1 vitalSignsTopic/s2 | 17,700 | 00:03:03 | 193.5/s | 361 | 26,522 | 3.16 | 0.186 | 26.12 2 | 2.939 | |
11 | 90 | 18,000 | 180 | 3 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 | 6000 | 00:03:01 | 99.5/s | 224 | 18,010 | 2.28 | 0.458 | 2.99 | 0.519 | |
12 | 90 | 36,000 | 180 | 3 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 | 12,000 | 00:03:01 | 198.7/s | 271 | 36,010 | 2.31 | 0.296 | 2.83 | 0.662 | |
13 | 90 | 42,300 | 180 | 3 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 | 14,100 | 00:03:02 | 232.8/s | 581 | 42,310 | 2.91 | 0.323 | 5.40 | 0.685 | |
14 | 90 | 45,000 | 180 | 3 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 | 15,000 | 00:03:02 | 247.2/s | 228 | 39,074 | 2.73 | 0.185 | 7.57 3 | 0.555 | |
15 | 90 | 24,000 | 180 | 4 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 vitalSignsTopic/s4 | 6000 | 00:03:02 | 131.6/s | 585 | 24,010 | 2.30 | 0.503 | 2.97 | 0.773 | |
16 | 90 | 44,400 | 180 | 4 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 vitalSignsTopic/s4 | 11,100 | 00:03:02 | 243.6/s | 537 | 44,410 | 2.09 | 0.241 | 2.67 | 0.635 | |
17 | 90 | 54,000 | 180 | 4 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 vitalSignsTopic/s4 | 13,500 | 00:03:04 | 293.4/s | 1208 | 54,010 | 2.14 | 0.418 | 2.81 | 0.634 | |
18 | 90 | 60,000 | 180 | 4 | vitalSignsTopic/s1 vitalSignsTopic/s2 vitalSignsTopic/s3 vitalSignsTopic/s4 | 15,000 | 00:03:02 | 329.3/s | 494 | 40,068 | 2.22 | 0.234717 | 22.13 4 | 1.302 |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Jurado Pérez, L.; Salvachúa, J. An Approach to Build e-Health IoT Reactive Multi-Services Based on Technologies around Cloud Computing for Elderly Care in Smart City Homes. Appl. Sci. 2021, 11, 5172. https://doi.org/10.3390/app11115172
Jurado Pérez L, Salvachúa J. An Approach to Build e-Health IoT Reactive Multi-Services Based on Technologies around Cloud Computing for Elderly Care in Smart City Homes. Applied Sciences. 2021; 11(11):5172. https://doi.org/10.3390/app11115172
Chicago/Turabian StyleJurado Pérez, Luis, and Joaquín Salvachúa. 2021. "An Approach to Build e-Health IoT Reactive Multi-Services Based on Technologies around Cloud Computing for Elderly Care in Smart City Homes" Applied Sciences 11, no. 11: 5172. https://doi.org/10.3390/app11115172