Real-Time Document Collaboration—System Architecture and Design
Abstract
:1. Introduction
- Application description and requirements: we will examine the overall application features and the functional requirements of the system. We will describe some of the functional challenges the system needs to overcome to satisfy the fundamental pillars of modern software development.
- System design: the system design must be capable of delivering the needed functionality showcasing the required building blocks, the reasoning behind the choice, the individual block role and behavior, and the connections to the other parts of the system. We will outline the building process of the system architecture, beginning with a simple foundational structure and progressively adding complexity as technical challenges are introduced.
- Technology background: having an end goal, the used technology stack shares the same level of complexity. We will investigate the used technologies for each building block, the general infrastructure, and the technology principles used in the design and development of the collaborative system.
- System development: we will detail the actual development of the application, covering topics such as conflict resolution, storage handling, application code, services configuration, tooling usage, and microservices interactions [15].
- Architecture validation: we will validate the proposed application architecture in terms of scalability, availability, throughput, and resource consumption [16]. Individual components of the system were subject to a series of challenges, disaster scenarios, and tests, to showcase their contribution towards a modern available and scalable application. To further emphasize the validity of the work, performance metrics, and test results were provided.
- It provides a general and detailed overview of how a collaborative software system can be designed to work in a recoverable and scalable way to respect the modern software development pillars. The development process started as a very basic and crude system and further on involved analysis of the pain points, understanding of the technological limitations, and in the end, planning and implementation of a scalable solution
- It describes the process of selecting the appropriate technology stack for a given task. It is natural to have a considerable amount of technologies backing the actual functionality. Tech stack selection provides valuable resources for future system designs because it addresses possible common issues encountered in designing high-scale systems.
- It provides a valuable overview of how distributed resources can be maintained by multiple peers while maintaining an overall simple and scalable architecture. This was achieved by using the right class of Conflict-Free replication algorithms, stateless microservices development, and event-driven architecture.
- It provides proof of concept on implementing a highly flexible and scalable multi-client side connection-dependent system. The number of client-side connections is a physical constraint that can be overcome with software techniques.
2. Related Work
3. Application Description and Requirements
3.1. Core Entity
3.2. Core Features
3.2.1. Authentication
3.2.2. Document Resource Management
3.2.3. Document Collaboration
- Seeing added/deleted characters in a specific part of the document;
- Seeing the cursor indicator of a user while navigating through the document;
- Seeing actual logs of all the events received during a session.
3.2.4. Notifications
3.3. Performance Metrics
4. System Design
4.1. Technical Requirements
- Users can create accounts, and their credentials are stored securely in a persistent manner. With the same credentials, users can authorize actions and interact with the application resources
- In a session, users can create the base document resource and act upon it with CRUD (Create Read Update Delete) operations [26]. All of the described operations must be persisted on the final resource. Only the appropriate document owner can interact with the resource at this level.
- Being a real-time application, users should be informed about events in a near real-time manner (notification system). When a live update is not possible, users should receive the missing updates in an alternative manner.
- The system must provide a real-time document editing experience to all the involved peers. Users should be able to dispatch events resembling the natural interactions a human would do normally on a text resource. The system must handle a considerable number of users simultaneously. As magnitude, the system must be able to support concurrent users in the order of thousands.
- The system must use appropriate communication technologies to deliver the promised functionality. Data should be delivered in such a way that 95% of the users receive a response in an appropriate time frame with the designated action they executed.
- The persistent solution must provide a robust and reliable storage layer where all the relevant generated user content is going to be stored.
4.2. Application Structure
4.2.1. Client-Side
4.2.2. Server-Side
4.3. System Organization
4.4. Scaling
- Vertical: where more hardware resources are provided to keep up with the load.
- Horizontal: where more instances of the running process are provided to split the work among other workers.
4.5. Microservices
- Scalability: Independent services can be scaled individually, optimizing resource allocation.
- Flexibility: Enables faster development and deployment cycles with each service developed, deployed, and scaled independently.
- Fault isolation: Failures in one microservice instance do not affect the entire system, enhancing reliability.
- Technology diversity: Allows the use of different technologies for different services, optimizing for specific needs.
- Easy maintenance: Easier to maintain and update as changes to one service do not necessarily impact others.
- Continuous delivery and integration: Supports continuous integration and delivery practices, facilitating a more streamlined development process.
- Resilience: Improved fault tolerance and resilience due to the distributed nature of services.
- Autonomy: Teams can work independently on different services, fostering autonomy and speeding up development.
- Better resource utilization: Efficient use of resources as each microservice can be optimized for its specific task.
- The client implementation does not need to know about the specifics of the services providing the functionality. A single point of entry can “hide” all the building blocks from the client and provide only what is necessary.
- A single point of entry facilitates global operations like monitoring, logging, authorization, etc.
- Provides routing to the needed functionality.
4.6. Cross-Service Communications
4.7. Client–Server Communication
5. Technologies Stack
5.1. Client-Side
5.2. Server-Side
5.3. Infrastructure
5.3.1. GraalVM
- Auto-Configuration: Spring Boot scans the classpath for libraries and automatically configures beans based on the detected dependencies. This can lead to longer startup times, especially in large applications with numerous dependencies.
- Annotation Processing: Spring Boot heavily relies on annotations for configuration. The process of scanning and processing annotations can contribute to increased startup times, particularly in applications with extensive use of annotations.
- Reflection: Spring Boot uses reflection to dynamically inspect and instantiate classes. This introspection can impact startup performance, especially in applications with deep class hierarchies [49].
- Initialization Overhead: Spring Boot applications may have initialization overhead as they setup components, such as the Spring Application Context, which contributes to the overall startup time.
5.3.2. Inter-Service Communication—Apache Kafka
5.3.3. Storage
5.3.4. MongoDB
5.3.5. PostgreSQL
6. System Development
6.1. Apache Kafka Application Setup
- -
- Design components to be as stateless as possible. The software components of a system should serve their purpose without needing an initial setup or pre-preparation of data (e.g., loading information from look-up tables, or building an in-memory cache). Workloads are ephemeral, and the components of a system should be able to be added or removed elastically without producing any side effects.
- -
- Build it with redundancy in mind. A system is only as strong as its weakest component. Each core feature should be highly available, meaning that all business logic cannot be delegated to a single instance of a worker. Core functionality should have backup instances that can handle additional load or replace an unhealthy worker instance.
- -
- Create reactive workflows. In high-traffic applications, especially in real-time systems, every millisecond of delay can impact the outcome of an operation. Communication between software components must be carried out asynchronously whenever possible. Software components must be able to listen to a common stream of events and react whenever work is delegated. When a result is available, it should be queued in a stream and distributed among the available workers, thus avoiding bottlenecks and the creation of a single point of failure.
6.1.1. Kafka Initial Setup
6.1.2. Kafka Topics
6.1.3. Consumer Complexity at Scale
6.1.4. Consumer Grouping
6.2. Microservices Interface
6.2.1. Auth
6.2.2. Notifications
- /subscribe—The user will subscribe to an events stream to receive notifications in real-time while the user has active sessions.
- /unread—API endpoint for receiving notifications stored while the user was offline.
- /read-all—API endpoint for marking all the notifications as “read”.
- /read—API endpoint for receiving the older notifications.
6.2.3. Document Manipulation
- Creating the actual document;
- Getting user-owned and shared documents;
- Getting individual document details;
- Deleting a document;
- Adding a user as a shared user to the document access list;
- Removing a user as a shared user.
6.2.4. Document Content
6.2.5. RTC
6.2.6. API Gateway
- Provide routing to the designated microservice of a request;
- Provide a security layer with the help of the Auth microservice;
- Provide CORS protection.
6.3. CRDT
6.3.1. Initial Analysis
6.3.2. Server-Side Conflict Resolution
6.3.3. Client-Side Conflict Resolution
6.3.4. CRDT Implementation
- Value: the value synchronized between the pears;
- State: the metadata required by the peers to agree on the same incoming update;
- Merge functionality: offers a customizable way of handling the state mutation based on the remote state of the peer.
6.3.5. WebSocket Scaling—Server Bridge
6.3.6. Message Broadcasting
6.3.7. Idempotency
- A client generates a change event after editing a document.
- A real-time microservice, depending on its availability, receives the change event and forwards it to the Document Content microservice for persistent storage.
- Once the data are successfully stored, the editing event is broadcast to all active instances.
- All recipient instances then push the relevant data to their connected clients through open WebSocket connections.
6.3.8. Snowflakes Keys
- A timestamp for further time-based operations and checks on past events;
- A way to identify the original creator of the message;
- An ordinal to keep track of incremental messages.
- Where 1 reserved bit was set as 0.
- Where 41 bits were used for UNIX epoch representation. With 41 bits, the maximum usable epoch is 241 which is suitable for 136 years from the starting date.
- Where 10 bits were used for the running instance count. The system can support 210 = 1024 running nodes dispatching document editing-related messages.
- Where 12 bits were used for the ordinal, allowing 4096 items to be generated on each epoch for each running instance.
6.4. Client-Side Implementation
7. Architecture Validation
7.1. Resource Consumption
7.1.1. Testing Strategy
- Ten min of interactions between 20 users;
- Thirty min of interactions between 50 users;
- One h of interactions between 100 users.
- Synchronously representing the read, create, update, and delete operations;
- Asynchronously representing the long-lived connections exchanging actions between the client and the server.
7.1.2. JVM
7.1.3. Fixed Number of Instances
7.1.4. GraalVM
7.1.5. Fixed Number of Instances
7.2. Throughput
7.2.1. JVM
7.2.2. GraalVM
8. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Evans, D. The Internet of Things: How the Next Evolution of the Internet Is Changing Everything; CISCO: San Jose, CA, USA, 2011; Available online: http://www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf (accessed on 1 September 2024).
- Google Docs about Page. Available online: https://www.google.com/docs/about/ (accessed on 20 June 2024).
- Laaki, H.; Miche, Y.; Tammi, K. Prototyping a Digital Twin for Real Time Remote Control Over Mobile Networks: Application of Remote Surgery. IEEE Access 2019, 7, 20325–20336. [Google Scholar]
- Wang, L.D.; Zhou, X.Q.; Hu, T.H. A New Computed Torque Control System with an Uncertain RBF Neural Network Controller for a 7-DOF Robot. Teh. Vjesn.-Tech. Gaz. 2020, 27, 1492–1500. [Google Scholar]
- Chen, T.S.; Yabuki, N.; Fukuda, T. Mixed reality-based active Hazard prevention system for heavy machinery operators. Autom. Constr. 2024, 159, 105287. [Google Scholar]
- Son, H.; Kim, C. Integrated worker detection and tracking for the safe operation of construction machinery. Autom. Constr. 2021, 126, 103670. [Google Scholar]
- Zhang, S.T.; Yang, J.J.; Wu, X.L. A distributed Project management framework for collaborative product development. In Progress of Machining Technology; Aviation Industry Press: Wallace, NC, USA, 2002; pp. 972–976. [Google Scholar]
- Doukari, O.; Kassem, M.; Greenwood, D. A Distributed Collaborative Platform for Multistakeholder Multi-Level Management of Renovation Projects. J. Inf. Technol. Constr. 2024, 29, 219–246. [Google Scholar]
- Erder, M.; Pureur, P.; Woods, E. Continuous Architecture in Practice: Software Architecture in the Age of Agility and DevOps; Addison-Wesley Professional: Boston, MA, USA, 2021. [Google Scholar]
- Ciceri, C.; Farley, D.; Ford, N.; Harmel-Law, A.; Keeling, M.; Lilienthal, C. Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture; O’Reilly Media: Sebastopol, CA, USA, 2022. [Google Scholar]
- Cortellessa, V.; Eramo, R.; Tucci, M. From software architecture to analysis models and back: Model-driven refactoring aimed at availability improvement. Inf. Softw. Technol. 2020, 127, 106362. [Google Scholar]
- Nsafoa-Yeboah, K.; Tchao, E.T.; Kommey, B.; Agbemenu, A.S.; Klogo, G.S.; Akrasi-Mensah, N.K. Flexible open network operating system architecture for implementing higher scalability using disaggregated software-defined optical networking. IET Netw. 2024, 13, 221–240. [Google Scholar]
- Gao, X.M.; Wang, B.S.; Zhang, X.Z.; Ma, S.C. A High-Elasticity Router Architecture with Software Data Plane and Flow Switching Plane Separation. China Commun. 2024, 13, 37–52. [Google Scholar]
- Fé, I.; Nguyen, T.A.; Di Mauro, M.; Postiglione, F.; Ramos, A.; Soares, A.; Choi, E.; Min, D.G.; Lee, J.W.; Silva, F.A. Energy-aware dynamic response and efficient consolidation strategies for disaster survivability of cloud microservices architecture. Computing 2024, 106, 2737–2783. [Google Scholar]
- Muntean, M.; Brândas, C.; Cristescu, M.P.; Matiu, D. Improving Cloud Integration Using Design Science Research. Econ. Comput. Econ. Cybern. Stud. Res. 2021, 55, 201–218. [Google Scholar]
- Goldstein, M.; Segall, I. Automatic and Continuous Software Architecture Validation. In Proceedings of the 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Florence, Italy, 16–24 May 2015; Volume 2, pp. 59–68. [Google Scholar]
- Di Stefano, A.; Pappalardo, G.; Santoro, C.; Tramontana, E. SHARK, a Multi-Agent System to Support Document Sharing and Promote Collaboration. In Proceedings of the 2004 International Workshop on Hot Topics in Peer-To-Peer Systems, Proceedings, Volendam, The Netherlands, 8 October 2004; pp. 86–93. [Google Scholar]
- Ignat, C.L.; Norrie, M.C. Supporting Customized Collaboration over Shared Document Repositories. Adv. Inf. Syst. Eng. Proc. 2006, 4001, 190–204. [Google Scholar]
- Vallance, M.; Towndrow, P.A.; Wiz, C. Conditions for Successful Online Document Collaboration. Techtrends 2010, 54, 20–24. [Google Scholar]
- Lee, C.Y.P.; Zhang, Z.H.; Herskovitz, J.; Seo, J.; Guo, A.H. CollabAlly: Accessible Collaboration Awareness in Document Editing. In Proceedings of the 23rd International ACM SIGACCESS Conference on Computers and Accessibility, New York, NY, USA, 18–22 October 2021. [Google Scholar]
- Jung, Y.W.; Lim, Y.K.; Kim, M.S. Possibilities and Limitations of Online Document Tools for Design Collaboration: The Case of Google Docs. In Proceedings of the CSCW’17: Proceedings of the 2017 ACM Conference on Computer Supported Cooperative Work and Social Computing, Portland, OR, USA, 25 February–1 March 2017; pp. 1096–1108. [Google Scholar]
- Bettermann, W.A.; Palumbo, T. Collaboration Made Easier—Working with Restricted Documents within Office 2013, OneDrive, and Office 365. In Proceedings of the 2016 ACM SIGUCCS Annual Conference (SIGUCCS ‘16), Denver, CO, USA, 6–9 November 2016; pp. 43–45. [Google Scholar]
- Longo, J.; Kelley, T.M. Use of GitHub as a Platform for Open Collaboration on Text Documents. In Proceedings of the 11th International Symposium on Open Collaboration, San Francisco, CA, USA, 19–21 August 2015; p. E4. [Google Scholar]
- Ronzon, T. Software Retrofit in High-Availability Systems When Uptime Matters. IEEE Softw. 2016, 33, 11–17. [Google Scholar]
- Goetz, B. Java Concurrency in Practice; Pearson India: Bangalore, India, 2016. [Google Scholar]
- Tudose, C. Java Persistence with Spring Data and Hibernate; Manning: New York, NY, USA, 2023. [Google Scholar]
- Smith, P.N.; Guengerich, S.L. Client/Server Computing (Professional Reference Series). Commun. ACM 1994, 35, 77–98. [Google Scholar]
- Saternos, C. Client-Server Web Apps with JavaScript and Java: Rich, Scalable, and RESTful; O’Reilly Media: Sebastopol, CA, USA, 2014. [Google Scholar]
- Anacleto, R.; Luz, N.; Almeida, A.; Figueiredo, L.; Novais, P. Creating and Optimizing Client-Server; Universidade do Minho—Campus of Gualtar: Braga, Portugal, 2013. [Google Scholar]
- Meloni, J.; Kyrnin, J. HTML, CSS, and JavaScript All in One: Covering HTML5, CSS3, and ES6; Sams Publishing: Indianapolis, IN, USA, 2018. [Google Scholar]
- Nagy, R. Simplifying Application Development with Kotlin Multiplatform Mobile: Write Robust Native Applications for iOS and Android Efficiently; Packt Publishing: Birmingham, UK, 2022. [Google Scholar]
- Siahaan, V.; Sianipar, R.H. Building Three Desktop Applications with SQLite and Java GUI; Independently Published: Chicago, IL, USA, 2019. [Google Scholar]
- Marquez-Soto, P. Backend Developer in 30 Days: Acquire Skills on API Designing, Data Management, Application Testing, Deployment, Security and Performance Optimization; BPB Publications: Noida, IN, USA, 2022. [Google Scholar]
- Hermans, K. Mastering Back-End Development: A Comprehensive Guide to Learn Back-End Development; Independently Published: Chicago, IL, USA, 2023. [Google Scholar]
- Newman, S. Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith; O’Reilly Media: Sebastopol, CA, USA, 2019. [Google Scholar]
- Vernon, V.; Tomasz, J. Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture; Addison-Wesley Publishing: Boston, MA, USA, 2022. [Google Scholar]
- Al Qassem, L.M.; Stouraitis, T.; Damiani, E.; Elfadel, I.M. Proactive Random-Forest Autoscaler for Microservice Resource Allocation. IEEE Access 2023, 11, 2570–2585. [Google Scholar]
- Richardson, C. Microservice Architecture Pattern. 2024. Available online: http://microservices.io/patterns/microservices.html (accessed on 1 September 2024).
- Cao, X.M.; Zhang, H.B.; Shi, H.Y. Load Balancing Algorithm of API Gateway Based on Microservice Architecture for a Smart City. J. Test. Eval. 2024, 52, 1663–1676. [Google Scholar]
- Zuki, S.Z.M.; Mohamad, R.; Saadon, N.A. Containerized Event-Driven Microservice Architecture. Baghdad Sci. J. 2024, 21, 584–591. [Google Scholar]
- Fielding, R.T. Architectural Styles and the Design of Network-Based Software Architectures. Ph.D. Thesis, University of California, Irvine, CA, USA, 2000. [Google Scholar]
- Bandruski, P. Publish WebSocket in the Experience Layer. 2020. Available online: https://ambassadorpatryk.com/2020/03/publish-web-socket-in-the-experience-layer/ (accessed on 1 September 2024).
- Tay, Y. Front End System Design Guidebook. 2024. Available online: https://www.greatfrontend.com/questions/system-design/news-feed-facebook (accessed on 1 September 2024).
- VueJS Official Documentation. Available online: https://vuejs.org/guide/introduction (accessed on 1 September 2024).
- Spring Boot Documentation. Available online: https://docs.spring.io/spring-boot/index.html (accessed on 1 September 2024).
- Arnold, K.; Gosling, J.; Holmes, D. The Java Programming Language, 4th ed.; Addison-Wesley Professional: Glenview, IL, USA, 2005. [Google Scholar]
- Sierra, K.; Bates, B.; Gee, T. Head First Java: A Brain-Friendly Guide, 3rd ed.; O’Reilly Media: Sebastopol, CA, USA, 2022. [Google Scholar]
- Vitale, T. Cloud Native Spring in Action with Spring Boot and Kubernetes; Manning: New York, NY, USA, 2022. [Google Scholar]
- Tudose, C.; Odubăşteanu, C.; Radu, Ş. Java Reflection Performance Analysis Using Different Java Development. Adv. Intell. Control. Syst. Comput. Sci. 2013, 187, 439–452. [Google Scholar]
- Fava, F.B.; Leite, L.F.L.; da Silva, L.F.A.; Costa, P.R.D.A.; Nogueira, A.G.D.; Lopes, A.F.G.; Schepke, C.; Kreutz, D.L.; Mansilha, R.B. Assessing the Performance of Docker in Docker Containers for Microservice-based Architectures. In Proceedings of the 2024 32nd Euromicro International Conference on Parallel, Distributed and Network-Based Processing, Dublin, Ireland, 20–22 March 2024; pp. 137–142. [Google Scholar]
- Wu, H. Reliability Evaluation of the Apache Kafka Streaming System. In Proceedings of the 2019 IEEE 30th International Symposium on Software Reliability Engineering Workshops, Berlin, Germany, 27–30 October 2019; pp. 112–113. [Google Scholar]
- Kim, H.; Bang, J.; Son, S.; Joo, N.; Choi, M.J.; Moon, Y.S. Message Latency-Based Load Shedding Mechanism in Apache Kafka. In Proceedings of the EURO-PAR 2019: Parallel Processing Workshops, Göttingen, Germany, 26–30 August 2020; Volume 11997, pp. 731–736. [Google Scholar]
- Holmes, S.D.; Harber, C. Getting MEAN with Mongo, Express, Angular, and Node, 2nd ed.; Manning: New York, NY, USA, 2019. [Google Scholar]
- Vokorokos, L.; Uchnár, M.; Baláz, A. MongoDB scheme analysis. In Proceedings of the 2017 IEEE 21st International Conference on Intelligent Engineering Systems (INES), Larnaca, Cyprus, 20–23 October 2017; pp. 67–70. [Google Scholar]
- Pernas, L.D.E.; Pustulka, E. Document Versioning for MongoDB. In New Trends in Database and Information Systems, ADBIS; Springer: Cham, Switzerland, 2022; Volume 1652, pp. 512–524. [Google Scholar]
- Ferrari, L.; Pirozzi, E. Learn PostgreSQL—Second Edition: Use, Manage and Build Secure and Scalable Databases with PostgreSQL 16, 2nd ed.; Packt Publishing: Birmingham, UK, 2023. [Google Scholar]
- Bonteanu, A.M.; Tudose, C. Performance Analysis and Improvement for CRUD Operations in Relational Databases from Java Programs Using JPA, Hibernate, Spring Data JPA. Appl. Sci. 2024, 14, 2743. [Google Scholar] [CrossRef]
- Raptis, T.P.; Passarella, A. On Efficiently Partitioning a Topic in Apache Kafka. In Proceedings of the 2022 International Conference on Computer, Information and Telecommunication Systems (CITS), Piraeus, Greece, 13–15 July 2022; pp. 1–8. [Google Scholar]
- Ellis, C.A.; Gibbs, S.J. Concurrency control in groupware systems. ACM SIGMOD Record 1989, 18, 399–407. [Google Scholar]
- Gadea, C.; Ionescu, B.; Ionescu, D. Modeling and Simulation of an Operational Transformation Algorithm using Finite State Machines. In Proceedings of the 2018 IEEE 12th International Symposium on Applied Computational Intelligence and Informatics (SACI 2018), Timişoara, Romania, 17–19 May 2018; pp. 119–124. [Google Scholar]
- Gadea, C.; Ionescu, B.; Ionescu, D. A Control Loop-based Algorithm for Operational Transformation. In Proceedings of the 2020 IEEE 14th International Symposium on Applied Computational Intelligence and Informatics (SACI 2020), Timişoara, Romania, 21–23 May 2020; pp. 247–254. [Google Scholar]
- Shapiro, M.; Preguiça, N.; Baquero, C.; Zawirski, M. Conflict-Free Replicated Data Types. In Stabilization, Safety, and Security of Distributed Systems; Springer: Berlin/Heidelberg, Germany, 2011; Volume 6976, pp. 386–400. [Google Scholar]
- Nieto, A.; Gondelman, L.; Reynaud, A.; Timany, A.; Birkedal, L. Modular Verification of Op-Based CRDTs in Separation Logic. Proc. ACM Program. Lang.-PACMPL 2022, 6, 1788–1816. [Google Scholar]
- Guidec, F.; Maheo, Y.; Noûs, C. Delta-State-Based Synchronization of CRDTs in Opportunistic Networks. In Proceedings of the IEEE 46th Conference on Local Computer Networks (LCN 2021), Edmonton, AB, Canada, 4–7 October 2021; pp. 335–338. [Google Scholar]
- Hupel, L. An Introduction to Conflict-Free Replicated Data Types. Available online: https://lars.hupel.info/topics/crdt/07-deletion/ (accessed on 1 September 2024).
- Centelles, R.P.; Selimi, M.; Freitag, F.; Navarro, L. A Monitoring System for Distributed Edge Infrastructures with Decentralized Coordination. Algorithmic Asp. Cloud Comput. (ALGOCLOUD 2019) 2019, 12041, 42–58. [Google Scholar]
- Cola, G.; Mazza1, M.; Tesconi, M. Twitter Newcomers: Uncovering the Behavior and Fate of New Accounts Through Early Detection and Monitoring. IEEE Access 2023, 11, 55223–55232. [Google Scholar]
- Pinia Official Documentation. Available online: https://pinia.vuejs.org (accessed on 1 September 2024).
- Redux Official Documentation. Available online: https://redux.js.org (accessed on 1 September 2024).
- Tudose, C. JUnit in Action; Manning: New York, NY, USA, 2020. [Google Scholar]
Feature | mCPU |
---|---|
api-gateway | 5.1 |
auth | 16.26 |
document-manipulation | 10.13 |
document-content-handler | 10.39 |
RTC | 13.64 |
notifications | 22.28 |
Feature | RAM MB |
---|---|
api-gateway | 126.74 |
auth | 162.84 |
document-manipulation | 144.53 |
document-content-handler | 145.5 |
RTC | 152.48 |
notifications | 180.2 |
Feature | mCPU |
---|---|
api-gateway | 3.08 |
auth | 10.14 |
document-manipulation | 1.62 |
document-content-handler | 5.05 |
RTC | 6.83 |
notifications | 6.23 |
Feature | RAM MB |
---|---|
api-gateway | 155.02 |
auth | 77.61 |
document-manipulation | 47.30 |
document-content-handler | 84.31 |
RTC | 29.56 |
notifications | 49.31 |
System Type | Opened Connections |
---|---|
JVM | 9540 |
GraalVM | 13,648 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 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
Iovescu, D.; Tudose, C. Real-Time Document Collaboration—System Architecture and Design. Appl. Sci. 2024, 14, 8356. https://doi.org/10.3390/app14188356
Iovescu D, Tudose C. Real-Time Document Collaboration—System Architecture and Design. Applied Sciences. 2024; 14(18):8356. https://doi.org/10.3390/app14188356
Chicago/Turabian StyleIovescu, Daniel, and Cătălin Tudose. 2024. "Real-Time Document Collaboration—System Architecture and Design" Applied Sciences 14, no. 18: 8356. https://doi.org/10.3390/app14188356
APA StyleIovescu, D., & Tudose, C. (2024). Real-Time Document Collaboration—System Architecture and Design. Applied Sciences, 14(18), 8356. https://doi.org/10.3390/app14188356