<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "https://jats.nlm.nih.gov/publishing/1.3/JATS-journalpublishing1-3.dtd"><article xml:lang="en" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" article-type="research-article" dtd-version="1.3" xmlns:xlink="http://www.w3.org/1999/xlink"><front><journal-meta><journal-id journal-id-type="issn">2334-8496</journal-id><journal-title-group><journal-title>International Journal of Cognitive Research in Science, Engineering and Education (IJCRSEE)</journal-title><abbrev-journal-title>IJCRSEE</abbrev-journal-title></journal-title-group><issn pub-type="epub">2334-8496</issn><issn pub-type="ppub">2334-847X</issn><publisher><publisher-name>The Association for the Development of Science, Engineering and Education, Serbia</publisher-name><publisher-loc>Serbia</publisher-loc></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.23947/2334-8496-2026-14-1-011-021</article-id><article-categories><subj-group><subject>Education technology</subject></subj-group></article-categories><title-group><article-title>Development of a Cloud-Based WebRTC VoIP Application Using the Docker Platform for an Educational Environment</article-title></title-group><contrib-group><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0009-0004-6224-3515</contrib-id><name><surname>Kamis</surname><given-names>Alen</given-names></name><address><country>Bosnia and Herzegovina</country><email>alenkamis1978@gmail.com</email></address><xref ref-type="aff" rid="AFF-1"></xref><xref ref-type="corresp" rid="cor-0"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-9251-7706</contrib-id><name><surname>Zakic</surname><given-names>Aleksandar</given-names></name><address><country>Serbia</country></address><xref ref-type="aff" rid="AFF-2"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0009-0007-9045-6739</contrib-id><name><surname>Popovic</surname><given-names>Gradimirka</given-names></name><address><country>Serbia</country></address><xref rid="AFF-3" ref-type="aff"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0009-0002-0800-3030</contrib-id><name><surname>Bogavac</surname><given-names>Milija</given-names></name><address><country>Serbia</country></address><xref ref-type="aff" rid="AFF-4"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-0229-5960</contrib-id><name><surname>Milic</surname><given-names>Dejan</given-names></name><address><country>Serbia</country></address><xref ref-type="aff" rid="AFF-5"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0009-0004-4425-1378</contrib-id><name><surname>Ignjatovic</surname><given-names>Bogdan</given-names></name><address><country>Germany</country></address><xref ref-type="aff" rid="AFF-6"></xref></contrib><contrib contrib-type="author"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-6176-3739</contrib-id><name><surname>Lakhmi</surname><given-names>Jain</given-names></name><address><country>Greece</country></address><xref ref-type="aff" rid="AFF-7"></xref></contrib></contrib-group><contrib-group><contrib contrib-type="editor"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-0039-7370</contrib-id><name><surname>Stosic</surname><given-names>Dr. Lazar</given-names></name><address><country>Serbia</country></address><xref ref-type="aff" rid="EDITOR-AFF-1"></xref></contrib></contrib-group><aff id="AFF-1">The College of Service Business, East Sarajevo - Sokolac, Bosnia and Herzegovina</aff><aff id="AFF-2">Alfa BK University, Faculty of Information Technology, Belgrade, Serbia</aff><aff id="AFF-3">Kosovo and Metohija Academy of Applied Studies, Leposavic, Serbia</aff><aff id="AFF-4">MB University Belgrade, Faculty of Business and Law, Belgrade, Serbia</aff><aff id="AFF-5">National Security Academy, Belgrade, Serbia</aff><aff id="AFF-6">Hiting Frankfurter, Groß-Gerau, Germany</aff><aff id="AFF-7"><institution-wrap><institution>University of Piraeus</institution><institution-id institution-id-type="ror">https://ror.org/02qs84g94</institution-id></institution-wrap><addr-line>Piraeus</addr-line><country country="GR">Greece</country></aff><aff id="EDITOR-AFF-1">The Association for the Development of Science, Engineering and Education</aff><author-notes><corresp id="cor-0">Corresponding author: Alen Kamis, The College of Service Business, East Sarajevo - Sokolac, Bosnia and Herzegovina.  Email: <email>alenkamis1978@gmail.com</email></corresp></author-notes><pub-date date-type="pub" iso-8601-date="2026-5-13" publication-format="electronic"><day>13</day><month>5</month><year>2026</year></pub-date><pub-date date-type="collection" iso-8601-date="2026-5-13" publication-format="electronic"><day>13</day><month>5</month><year>2026</year></pub-date><volume>14</volume><issue>1</issue><issue-title>International Journal of Cognitive Research in Science, Engineering and Education (IJCRSEE)</issue-title><fpage>11</fpage><lpage>21</lpage><history><date date-type="received" iso-8601-date="2026-2-7"><day>7</day><month>2</month><year>2026</year></date><date date-type="accepted" iso-8601-date="2026-4-29"><day>29</day><month>4</month><year>2026</year></date></history><permissions><copyright-statement>Copyright (c) 2026 Alen Kamis, Aleksandar Zakic, Gradimirka Popovic, Milija Bogavac, Bogdan Ignjatovic, Jain Lakhmi</copyright-statement><copyright-year>2026</copyright-year><copyright-holder>Alen Kamis, Aleksandar Zakic, Gradimirka Popovic, Milija Bogavac, Bogdan Ignjatovic, Jain Lakhmi</copyright-holder><license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"><ali:license_ref xmlns:ali="http://www.niso.org/schemas/ali/1.0/">https://creativecommons.org/licenses/by/4.0/</ali:license_ref><license-p>This work is licensed under a Creative Commons Attribution 4.0 International License.</license-p></license></permissions><self-uri xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/view/3632" xlink:title="Development of a Cloud-Based WebRTC VoIP Application Using the Docker Platform for an Educational Environment">Development of a Cloud-Based WebRTC VoIP Application Using the Docker Platform for an Educational Environment</self-uri><abstract><p> The development of real-time communication systems has become increasingly important for educational institutions seeking flexible, scalable, and cost-effective digital learning environments. This paper presents the design, implementation, and performance evaluation of a cloud-based WebRTC Voice over IP application deployed through Docker container technology and integrated into an educational e-learning system. The proposed solution enables secure browser-based audio and video communication between instructors and students, as well as among students, without requiring additional plugins or native software installation. The application architecture is based on multiple containerized microservices, including database, WebSocket, Apache, and Nginx components, hosted within the Microsoft Azure cloud environment. To assess the efficiency of the proposed model, performance testing was conducted across three deployment infrastructures: bare-metal server, virtual server, and Docker-based platform. The evaluation included application deployment time, startup time, system restart time, and response time under different numbers of concurrent sessions. The results indicate that the Docker-based implementation achieved the best overall performance, with substantially shorter deployment and startup times and lower response latency compared with both bare-metal and virtualized alternatives. These findings confirm that containerized WebRTC infrastructure can improve scalability, maintainability, and responsiveness in educational communication systems. The study contributes a practical implementation model for integrating real-time VoIP and video communication into e-learning platforms, particularly for institutions seeking open-source, cloud-ready, and resource-efficient communication solutions.</p><p><bold><italic>Keywords:</italic></bold> Docker, Container, WebRTC, Educational Institution Software, Voice over IP.</p></abstract><kwd-group><kwd>Docker</kwd><kwd>Container</kwd><kwd>WebRTC</kwd><kwd>Educational Institution Software</kwd><kwd>Voice over IP</kwd></kwd-group><custom-meta-group><custom-meta><meta-name>File created by JATS Editor</meta-name><meta-value><ext-link ext-link-type="uri" xlink:href="https://jatseditor.com" xlink:title="JATS Editor">JATS Editor</ext-link></meta-value></custom-meta><custom-meta><meta-name>issue-created-year</meta-name><meta-value>2026</meta-value></custom-meta></custom-meta-group></article-meta></front><body><sec><title>Introduction</title><p>The accelerated development of technology has enabled us to eliminate expensive international calls by using alternative solutions to telephony. Now we have Voice over IP (VoIP) applications that represent telephone calls over the Internet. During the COVID-19 pandemic, the use of VoIP applications was at its highest level. These applications were used for various purposes, such as school lectures, business meetings, remote work, and more. The constant development of technology and the popularization of Internet usage among the masses, for both business and personal purposes, contribute to the expansion of VoIP.</p><p>Additionally, there is a growing need for multimedia services and communications.</p><p>However, VoIP communication still occupies only a small portion of communications today. The future of VoIP lies in the capabilities of the new and more advanced applications, where voice is just one piece of information. VoIP applications are usually designed as client-server applications, such as Microsoft Teams or Google Meet. These commercial versions are hosted in the cloud, physical, or virtual servers within a local infrastructure. Due to a large number of dependencies that these applications use, their actual startup takes a long time.</p><p>The aim of this research project was to build a VoIP application based on the WebRTC (Web Real-Time Communication) protocol, which will connect people in real-time.</p><p>Application code is provided for free, so it may be built upon and possibly integrated with other applications. Since WebRTC is a client-server technology usually installed on physical and virtual servers, we wanted to go with Docker as an underlying platform for our application <xref rid="BIBR-9" ref-type="bibr">(Jangla, 2018)</xref>.</p><p>The expectation was that it would perform better than certain traditional implementations, such as bare-metal and virtual installations. The application design uses multiple software containers (microservices), thereby optimizing the application performance, startup time, as well as improving the quality of maintenance procedures.</p><p>After creating the application, we performed the necessary measurements, and compared the speed and performance of our implementation with the mentioned traditional ones. During the implementation, Docker was used with an initial setup on the Windows 11 operating system, where all the containers were deployed. After the successful implementation of the development platform, the containers were migrated to Microsoft Azure cloud to serve as the basis for the production platform.</p><p>In the following chapters, the essential concepts and features of Docker are explained, along with the differences among the traditional infrastructures (i.e., virtual and physical servers). This serves as the theoretical background for demonstrating the technologies behind our WebRTC-based application (Castro-Castaño et al., 2026). This application allows us to reach a significant performance increase for VoIP applications, as evident by its implementation on the Docker platform.</p></sec><sec><title>Related work</title><p>The importance of their novel solution for this work lies in the security hardening of our web application for VoIP calls, based on the open-source WebRTC technology.</p><p>Although the experimental analysis conducted by Chithra and Aparna was mainly focused on video data, the proposed solution can potentially be applied to voice data as well. This is one type of data processed by our WebRTC-based application, and the possibility for future enhancements lies in the application of the mentioned security scheme on that data.</p><p>Since the research project represented in this paper brings novelty and is open for further development, it is relatively difficult to find a similar solution, especially with the Docker platform in use.</p><p>Docker software</p><p>Docker is software that is supported on both Linux and Windows operating systems. It is a tool designed for creating, deploying, and running applications using containers. Its use is of greatest benefit for developers who can choose their preferred platform and develop on it without worrying about the operating system on which their application is going to run. Docker offers manageable virtual environments called containers. A single Docker instance can have multiple containers, each operating independently and in isolation from one another.</p><p>Considering that Docker uses virtualization to create containers, the concept strongly resembles a virtual machine. Although both approaches provide isolated runtime environments, there are significant differences in how they operate. The obvious difference is that Docker consumes fewer resources, is faster, and lightweight on the system <xref ref-type="bibr" rid="BIBR-6">(Docker, 2024)</xref>. The advantages of this model are manifold, but the most significant benefit is application compatibility. In practice, this means that an application developed within a container will function seamlessly on any Docker, regardless of compatibility issues. Packaged within such an isolated environment (container), the application is easier to develop, maintain, and use. The main Docker components are: Docker platform, Docker engine, Docker architecture (Docker client, Docker daemon, Docker registry), Docker objects (images, containers, services), and Docker Hub.</p><p>Docker platform</p><p><italic>The Docker platform is a set of tools that enable us to manage the lifecycle of containers. This platform was chosen because it allows for creation, management, and maintenance of applications in microservices that are packaged in software containers. The containers are isolated from each other. They contain their own software, libraries, and configuration files. They communicate with each other via precisely defined channels. Docker is essentially an approach to virtualization where the setup is less complex. For the Docker platform to work, there needs to be a basic operating system and software on the server that enables the use of containers – Docker Engine. On the other hand, for virtualization platforms, an appropriate hypervisor is required, and each individual virtual machine must have its own operating system installed on which the desired application runs (</italic>Lv et al., 2026<italic>). Virtual machines are therefore more flexible because they do not depend on the underlying host operating system. But software containers are significantly less complex and more efficient in resource utilization, allowing for 4 to 6 times more containers to run on the same server than virtual machines. All containers are managed by the operating system kernel and are therefore lighter than virtual machines.</italic></p><p>Docker engine</p><p>The Docker Engine is a client-server application with the following components:</p><list list-type="bullet"><list-item><p>Server, which is a long-running process called a daemon. This process runs in the background and responds to requests sent to it.</p></list-item><list-item><p>REST (Representational State Transfer) API (Application Programming Interface), which specifies interfaces that programs use to communicate with the daemon and send it instructions.</p></list-item><list-item><p>CLI (Command Line Interface).</p></list-item></list><p>The command-line interface uses the Docker REST API to control and communicate with the Docker daemon through scripts or direct CLI commands. The daemon creates and manages Docker objects such as containers, networks, and disks. <xref ref-type="fig" rid="figure-1">Figure 1</xref> illustrates how Docker components are interconnected.</p><fig id="figure-1" ignoredToc=""><label>Figure 1</label><caption><p>Components of Docker Engine (Docker, 2024)</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16437"><alt-text>Image</alt-text></graphic></fig><p>Docker architecture</p><p>The Docker architecture is based on the client-server model and defines the operation and relationships of the basic Docker components. In <xref rid="figure-2" ref-type="fig">Figure 2</xref>, the connections between individual components in the client-server architecture are shown. The client and daemon may or may not be on the same server; as needed, the client can be connected to the daemon remotely.</p><fig id="figure-2" ignoredToc=""><label>Figure 2</label><caption><p>Docker architecture (Kumar, 2024)</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16438"><alt-text>Image</alt-text></graphic></fig><p>The Docker client is the primary means of user interaction with Docker. Using commands via the command-line interface, the client forwards them to the Docker daemon over an API. The daemon is a server process that runs continuously in the background, monitors the REST API for incoming command processing requests, and executes them. Software images for Docker must be stored at a specific loction for easy access. This location is called the Docker registry. Docker Hub is an example of a public registry that anyone can use, and Docker is configured by default to use Docker Hub. However, users can use their private registry as needed.</p><p>Docker objects</p><p>Objects include images, containers, services, and volumes. Objects are primarily generated by the Docker daemon. On the other hand, images are read-only system files containing instructions for creating a container that can run an application. A Dockerfile contains simple commands executed by the daemon to create and run images. Each command in the Dockerfile creates a separate layer within the image.</p><p>When we modify the Docker file to change the image, only those layers containing the change are affected. This is the main reason why images consume much fewer resources than virtual machines.</p><p>When we talk about containers in the context of applications and software, we can compare them to the real shipping containers. Before being standardized, shipping goods was a demanding and costly process. Depending on the type of goods and the shipping method used, it was necessary to adjust the packaging method. Standardizing containers balanced the way goods are shipped, regardless of type, shape, size, and mode of transport. The amount of work was reduced with the simplification of the process, leading to significant time and cost savings <xref ref-type="bibr" rid="BIBR-9">(Jangla, 2018)</xref>.</p><p>A similar principle applies to software containers. We have an image that is run inside the container, and the container only includes what is necessary to run the application. We can then transport and run this container anywhere. Instead of installing the entire operating system and all the accompanying software, the container typically contains only the following components: the application itself, necessary libraries, components on which the application depends (dependencies), as well as configuration files and folders (shown in <xref ref-type="fig" rid="figure-3">Figure 3</xref>). The application thus becomes independent of the type of operating system distribution and infrastructure on which it is run.</p><fig id="figure-3" ignoredToc=""><label>Figure 3</label><caption><p>Architecture of a container</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16439"><alt-text>Image</alt-text></graphic></fig><p>Containers are often associated with, or even confused with, the concept of virtual machines. Virtal machines run within a virtualization software and actually represent separate operating systems within the host. Therefore, they have their own libraries and programs, but also occupy several gigabytes of memory space <xref ref-type="bibr" rid="BIBR-17">(Shih et al., 2021)</xref>. On the other hand, containers are essentially just isolated environments within the host operating system and they contain their own libraries for specific processes and applications, making them much smaller when stored in memory <xref ref-type="bibr" rid="BIBR-12">(Kul et al., 2024)</xref>. Below in <xref ref-type="fig" rid="figure-4">Figure 4</xref> is a diagram illustrating the technical differences between virtual machines and containers <xref ref-type="bibr" rid="BIBR-9">(Jangla, 2018)</xref>.</p><fig id="figure-4" ignoredToc=""><label>Figure 4</label><caption><p>Containers vs. virtual machines</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16440"><alt-text>Image</alt-text></graphic></fig><p>Services allow users to scale containers across multiple Docker instances. In this way, multiple containers can work together via the Docker API and exchange data among themselves to perform a task. To the end-user, it will appear as if all the work is being done by a single application.</p><p>Docker Hub</p><p>Docker Hub is the primary location for hosting Docker Images. It is a cloud-based public registry on which images can be stored and from which they can be pulled. It serves as a centralized distribution and discovery point for images. Users can buy or sell images on Docker Hub, or distribute them for free. Images can be searched using either the Docker Hub interface or the CLI.</p></sec><sec><title>WebRTC web application</title><p>WebRTC is a free open-source project that provides web browsers and mobile applications with real-time communication via the application programming interface (API). It enables audio and video communication within web pages, allowing direct peer-to-peer communication, and eliminating the need for installing plugins or downloading native applications (WebRTC Code Samples, n.d.).</p><p>The project is a web-based application that enables the establishment of video calls using WebRTC open-source code. Architecturally, the web application is implemented using containers hosted on Microsoft Azure. As part of the application, a user registration and login portal has also been developed, enhancing the application's security. The application code is freely available to all interested parties. The goal of developing such an application is to contribute to the community by allowing users to reduce their communication costs without investing in the development of similar applications. It will primarily help smaller companies and businesses that do not have enough resources or manpower to spend time on developing the application. The developed WebRTC platform can be integrated into any application that has a developed API interface. Architecture of the WebRTC application is shown in <xref ref-type="fig" rid="figure-5">Figure 5</xref>.</p><fig ignoredToc="" id="figure-5"><label>Figure 5</label><caption><p>Architecture of the WebRTC application (The Past, Present, and Future of WebRTC, 2022.)</p></caption><graphic xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16441" mime-subtype="png" mimetype="image"><alt-text>Image</alt-text></graphic></fig><p>WebRTC is an open-source project that enables real-time audio, video, and data communication via web and native applications. In our project, we have utilized a portion of WebRTC for voice communication.</p><p>WebRTC has several JavaScript APIs, out of which the most popular ones are:</p><list list-type="bullet"><list-item><p>getUserMedia: enabling the use of input functions (camera and microphone);</p></list-item><list-item><p>MediaRecorder: audio and video recording;</p></list-item><list-item><p>RTCPeerConnection: audio and video streaming between users;</p></list-item><list-item><p>RTCDataChannel: data streaming between users.</p></list-item></list><p>For a WebRTC web application to work properly, we need a signaling service, commonly referred to as signaling or „signaling server“ (Signaling and Video Calling - Web APIs | MDN, 2024.). WebRTC uses RTCPeerConnection for streaming data communication between browsers, but a mechanism for coordinating communication and sending control messages is also required. WebRTC does not specify signaling methods and protocols. As part of this project, we can use Socket.IO for message exchange, but there are other alternatives. For a WebRTC application to establish a call, its clients must exchange the following information: session control messages for opening or closing communications, error messages, media metadata (codecs, codec settings, bandwidth, and media types), key data for establishing secure connections, and network data (i.e., host’s IP address and port as seen by the external side of the network) <xref ref-type="bibr" rid="BIBR-2">(Almousa et al., 2021)</xref>.</p><p>The signaling process requires a mechanism for clients to exchange messages back and forth. This mechanism is not implemented by the WebRTC API itself but must be created independently. WebRTC is designed to operate on a peer-to-peer connection basis, allowing users to connect in the most direct way possible. However, WebRTC is built to support the latest networking technologies, meaning that client applications can traverse NAT gateways and firewalls if peer-to-peer call establishment fails. Call encryption is mandatory for all WebRTC components, and its JavaScript APIs can only be used in secure communication via Hypertext Transfer Protocol Secure (HTTPS) connection.</p></sec><sec><title>Application design</title><p>The following image (<xref ref-type="fig" rid="figure-6">Figure 6</xref>) shows a schematic representation of Docker containers on a local computer and the Microsoft Azure platform.</p><fig id="figure-6" ignoredToc=""><label>Figure 6</label><caption><p>Design of the WebRTC application</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16442"><alt-text>Image</alt-text></graphic></fig><p>WebRTC application is completely free and can be downloaded with the accompanying code on GitHub (Alenkamis, 2022.). The application on Microsoft Azure consists of four containers (<bold>“DB”, “Websocket”, “Nginx”, and “www”</bold>), and one Linux virtual machine.</p><p>The DB container is a part of the web application where a MySQL database, necessary for the website, is located. Within the DB container, a database named "web" has been created. Inside the "web" database, there is a table called "users", where users who register on the web application are stored. The websocket container is a part of the web application that provides support for working with websockets, since the PHP programming language does not natively support the WebRTC platform. Due to excellent native support for websockets, Node.js was used for the message exchange microservice between components, thereby avoiding undesired effects. The configuration for websockets in Node.js consists of the server-side and client-side parts. The server-side configuration is located in the "websocket" container, while the client-side configuration is located in the "www" container. The www container is crucial for the web application because it contains the Apache server. From the Docker configuration files, it can be concluded that the website is located in the /var/www/html folder. The following files, necessary for the operation of the web application, are located inside the html directory: call.php, functions.php, index.php, login.php, logout.php, registration.php, script.js, and socket.io.js. The Nginx container serves as the frontend web server that users first encounter when accessing the WebRTC application. Upon connection attempt, users connect to the Ngnix Web server via TCP port 443, which is a standard for HTTPS sessions. A Let's Encrypt certificate is implemented directly on the container to prevent users from encountering errors when opening the application <xref rid="BIBR-3" ref-type="bibr">(Ardi et al., 2025)</xref>.</p><p>The following image (<xref rid="figure-7" ref-type="fig">Figure 7</xref>) depicts the entire operation of the WebRTC application, from accessing the website to establishing a VoIP call to another user.</p><fig id="figure-7" ignoredToc=""><label>Figure 7</label><caption><p>Schematic representation of video call establishment via the WebRTC application</p></caption><graphic xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16443" mime-subtype="png" mimetype="image"><alt-text>Image</alt-text></graphic></fig><p>Results of WebRTC application performance testing</p><p>The development of the WebRTC platform on Docker infrastructure has opened the possibility of measuring and testing performance across three different systems. The first system is a developed platform based on bare-metal infrastructure (Ubuntu Server 22.04 version), the second platform is a virtual server (Ubuntu Server 22.04 version), and the third is the WebRTC platform on Docker infrastructure.</p><p>All measurements were conducted on the same server with identical specifications: Dell PowerEdge R660, Intel Gold 6139 processor, 256 GB RAM, 4 x 1.92 TB SSD disks, and 2 x 10G network adapters. Performance measurements were carried out using iPerf and nPerf software tools, which provide the necessary capabilities.</p><p>iPerf is a powerful tool that allows the testing of network throughput, latency, and packet loss within a mesh network. iPerf enables the generation of network load to assess the maximum data transfer speed and identify potential network bottlenecks <xref rid="BIBR-7" ref-type="bibr">(Garcia et al., 2017)</xref>. This tool provides detailed reports and measurement results, allowing us to identify and resolve issues in the application's operation <xref ref-type="bibr" rid="BIBR-20">(Yadav et al., 2018)</xref>.</p><p>nPerf is a tool that also tests data transfer speed and latency within the application to gain insight into its performance. nPerf provides detailed results that help analyze connection quality and identify potential problems. Whether in the implementation, maintenance, or optimization phase of the application, nPerf can help in the better understanding of its performance and quality improvement (Marinković et al, 2021).</p><p>The research and WebRTC application testing results are presented in the following table (Table 1). It provides insight into application performance after each type of test given in the table is applied across three different platforms.</p><table-wrap id="table-1" ignoredToc=""><label>Table 1</label><caption><p>Results of WebRTC application performance testing on three different platforms</p></caption><table rules="all" frame="box"><thead><tr><th scope="col" align="left" colspan="1" valign="top">Type of test</th><th scope="col" valign="top" align="left" colspan="1">Bare-metal WebRTC</th><th scope="col" valign="top" align="left" colspan="1">Virtual serverWebRTC</th><th scope="col" align="left" colspan="1" valign="top">Docker platform WebRTC</th></tr></thead><tr><td valign="top" align="left" colspan="1"><italic>Initial application deployment (minutes)</italic></td><td valign="top" align="left" colspan="1">120</td><td valign="top" align="left" colspan="1">35</td><td align="left" colspan="1" valign="top">6</td></tr><tr><td colspan="1" valign="top" align="left">Application startup (seconds)</td><td valign="top" align="left" colspan="1">106</td><td valign="top" align="left" colspan="1">41,2</td><td align="left" colspan="1" valign="top">7</td></tr><tr><td valign="top" align="left" colspan="1"><italic>System restart (seconds)</italic></td><td align="left" colspan="1" valign="top">120</td><td valign="top" align="left" colspan="1">50</td><td align="left" colspan="1" valign="top">11</td></tr><tr><td valign="top" align="left" colspan="1"><italic>Application response without any calls (milliseconds)</italic></td><td valign="top" align="left" colspan="1">89,3</td><td colspan="1" valign="top" align="left">67,1</td><td align="left" colspan="1" valign="top">17,6</td></tr><tr><td valign="top" align="left" colspan="1"><italic>Application response with 5 concurrent sessions (milliseconds)</italic></td><td align="left" colspan="1" valign="top">102,4</td><td colspan="1" valign="top" align="left">77,5</td><td align="left" colspan="1" valign="top">21,2</td></tr><tr><td align="left" colspan="1" valign="top"><italic>Application response with 10 concurrent sessions (milliseconds)</italic></td><td align="left" colspan="1" valign="top">124,2</td><td valign="top" align="left" colspan="1">88,9</td><td valign="top" align="left" colspan="1">24,7</td></tr></table></table-wrap><p>The following graph (<xref ref-type="fig" rid="figure-8">Figure 8</xref>) shows the loads in application response during a specific number of calls, with the values expressed in milliseconds.</p><fig id="figure-8" ignoredToc=""><label>Figure 8</label><caption><p>Application load measurement chart</p></caption><graphic mime-subtype="png" mimetype="image" xlink:href="https://www.ijcrsee.com/index.php/ijcrsee/article/download/3632/1248/16444"><alt-text>Image</alt-text></graphic></fig><p>Using Laplace's matrix and Hertz's formulas for loads (without startup and deployment data), we arrive at the application performance results showing that the bare-metal platform (physical) is convincingly the slowest, while the virtual machine platform is 24.8% faster than it. However, ultimately, it can be said that the Docker platform is the fastest in the test and has the best performance, being 81.3% faster than the bare-metal platform and 72.3% faster than the virtual one.</p></sec><sec><title>WebRTC Integration within the E-Learning System</title><p>The developed WebRTC application has been successfully integrated into our existing e‑learning system, enabling secure, real-time communication between instructors and students. The application uses Web Real-Time Communication WebRTC technology, which allows direct peer-to-peer exchange of audio and video data within a web browser, without the need for additional plugins or software. This approach enables instructors to communicate with students in real time, as well as interact with each other, significantly enhancing the interactivity of lessons and supporting dynamic educational processes. Furthermore, students can communicate among themselves, which further promotes collaboration, teamwork, and the collegial exchange of knowledge.</p><p>In the professional literature, WebRTC is increasingly recognized as a superior technology for real-time communication compared to traditional infrastructures based on virtualization or physical servers, due to its peer-to-peer architecture and low latency. Peer-to-peer communication allows direct data exchange between end users, significantly reducing the load on central servers and infrastructure, which contributes to faster and more efficient media transmission <xref ref-type="bibr" rid="BIBR-13">(Kumar, 2024)</xref>.This approach does not require complex virtualized or physical server infrastructures, minimizing latency and improving user experience, particularly in real-time scenarios such as video calls and interactive discussions.</p><p>Because of these advantages, WebRTC is increasingly used in modern educational platforms and communication systems, as it combines low latency, scalability, and efficient use of network resources without the need for large server farms or complex virtualized environments <xref ref-type="bibr" rid="BIBR-13">(Kumar, 2024)</xref>. In our case, the platform is already integrated into the e‑learning system and enables immediate and smooth interaction between instructors and students, as well as among students themselves, significantly improving the quality of the learning process and supporting reliable real-time communication.</p></sec><sec><title>Conclusions</title><p>The work briefly describes the mechanisms of Docker infrastructure and explores the operation of the created WebRTC-based application for VoIP and video communications. WebRTC is an open-source platform, and as such, it is very interesting for use. The goal of developing this application is to contribute to the community by enabling users to reduce their communication costs, without investing in the development or purchase of similar applications. Primarily, it will assist smaller companies that lack sufficient resources and manpower needed for their development.</p><p>The infrastructure of the application is built on the Docker container platform. This platform emerged in 2013 and immediately became a popular choice for development environments. Docker as a platform is increasingly being used for production systems due to the convenience of microservices. It has its advantages in terms of: a quick application startup, segmentation features that make it less susceptible to attacks, and the facilitation of simplified repairs and servicing. After testing the performance of the proposed WebRTC-based application with varying degrees of network load and using different types of tests, we have obtained the results in favor of the Docker platform implementation. It has by far shown the best performance under any type of test, whether it be the time needed to deploy the application, or its response to an increasing number of concurrent sessions (calls).</p><p>In conclusion, it is expected that the Docker container platform will continue to progress and grow in the future, and that in the coming years many applications will be based on this platform. We sincerely hope that our diligent work on this highly performant VoIP application will reach end users who will gladly use it in the future.</p><p>Acknowledgements</p><p>The authors thank the managements of Alfa BK University and MB University for their support in the research process and technical preparation of the manuscript.</p><p>Funding</p><p>This research did not receive any specific grant from funding agencies in the public, commercial, or not-for-profit sectors.</p><p>Conflict of interests</p><p>The authors declare no conflict of interest.</p><p>Data availability statement</p><p>The data supporting the reported results in this study are contained within the article itself.</p><p>Institutional Review Board Statement</p><p>Not applicable.</p><sec sec-type="author-contributions"><p>Author Contributions</p><p>Conceptualization, A.K., A.Z. and B.I.; methodology, A.K. and M.B; software, AK, B.I. and A.Z.; formal analysis, A.K., G.P. and L.C.J.; writing—original draft preparation, A.K., M.B. and A.Z.; writing—review and editing, A.K, and L.C.J. All authors have read and agreed to the published version of the manuscript.  </p></sec></sec></body><back><ref-list><title>References</title><ref id="BIBR-1"><element-citation publication-type="webpage"><article-title>GitHub - alenkamis/webRTC-project</article-title><person-group person-group-type="author"><name name-style="given-only"><given-names>Alenkamis</given-names></name></person-group><year>2022</year><ext-link xlink:href="https://github.com/alenkamis/webRTC-project" ext-link-type="uri" xlink:title="WebRTC project">WebRTC project</ext-link></element-citation></ref><ref id="BIBR-2"><element-citation publication-type="journal"><article-title>Virtual reality technology and remote digital application for tele-simulation and global medical education: An innovative hybrid system for clinical training</article-title><source>Simulation &amp; Gaming</source><volume>52</volume><issue>5</issue><person-group person-group-type="author"><name><surname>Almousa</surname><given-names>O.</given-names></name><name><surname>Zhang</surname><given-names>R.</given-names></name><name><surname>Dimma</surname><given-names>M.</given-names></name><name><surname>Yao</surname><given-names>J.</given-names></name><name><surname>Allen</surname><given-names>Arden</given-names></name><name><surname>Chen</surname><given-names>L.</given-names></name><name><surname>Heidari</surname><given-names>P.</given-names></name><name><surname>Qayumi</surname><given-names>K.</given-names></name></person-group><year>2021</year><fpage>614</fpage><lpage>634</lpage><page-range>614-634</page-range><pub-id pub-id-type="doi">10.1177/10468781211008258</pub-id></element-citation></ref><ref id="BIBR-3"><element-citation publication-type="journal"><article-title>Analysis of docker container implementation in SIEM infrastructure</article-title><source>Applied Informatics and Computing</source><volume>9</volume><issue>3</issue><person-group person-group-type="author"><name><surname>Ardi</surname><given-names>N.</given-names></name><name><surname>I.</surname><given-names>Lubis A.</given-names></name><name><surname>S</surname><given-names>Arrafi I.A.</given-names></name></person-group><year>2025</year><fpage>973</fpage><lpage>978</lpage><page-range>973-978</page-range><pub-id pub-id-type="doi">10.30871/jaic.v9i3.9476</pub-id></element-citation></ref><ref id="BIBR-4"><element-citation publication-type="journal"><article-title>Low-Latency Autonomous Surveillance in Defense Environments: A Hybrid RTSP-WebRTC Architecture with YOLOv11</article-title><source>Computers</source><volume>15</volume><issue>1</issue><person-group person-group-type="author"><name><surname>Castro-Castaño</surname><given-names>J.J.</given-names></name><name><surname>Chirán-Alpala</surname><given-names>W.E.</given-names></name><name><surname>Giraldo-Martínez</surname><given-names>G.A.</given-names></name><name><surname>Ortega-Pabón</surname><given-names>J.D.</given-names></name><name><surname>Rodríguez-Amézquita</surname><given-names>E.C.</given-names></name><name><surname>Ferney Gallego-Franco</surname><given-names>D.</given-names></name><name><surname>Garcés-Gómez</surname><given-names>Y.A.</given-names></name></person-group><year>2026</year><page-range>62</page-range><pub-id pub-id-type="doi">10.3390/computers15010062</pub-id></element-citation></ref><ref id="BIBR-5"><element-citation publication-type="journal"><article-title>Blockchain enabled dual level security scheme with spiral shuffling and hashing technique for secret video transmission</article-title><source>International Journal on Information Technologies and Security</source><volume>15</volume><issue>2</issue><person-group person-group-type="author"><name><surname>Chithra</surname><given-names>P.</given-names></name><name><surname>Aparna</surname><given-names>R.</given-names></name></person-group><year>2023</year><fpage>97</fpage><lpage>108</lpage><page-range>97-108</page-range><pub-id pub-id-type="doi">10.59035/ubsn9044</pub-id></element-citation></ref><ref id="BIBR-6"><element-citation publication-type="webpage"><article-title>What is Docker? Docker Documentation</article-title><person-group person-group-type="author"><name name-style="given-only"><given-names>Docker</given-names></name></person-group><year>2024</year><ext-link xlink:href="https://docs.docker.com/get-started/docker-overview/" ext-link-type="uri" xlink:title="Docker overview">Docker overview</ext-link></element-citation></ref><ref id="BIBR-7"><element-citation publication-type="journal"><article-title>Webrtc testing: challenges and practical solutions</article-title><person-group person-group-type="author"><name><surname>Garcia</surname><given-names>B.</given-names></name><name><surname>Gortazar</surname><given-names>F.</given-names></name><name><surname>L.</surname><given-names>Lopez-Fernandez</given-names></name><name><surname>Gallego</surname><given-names>M.</given-names></name><name><surname>Paris</surname><given-names>M.</given-names></name></person-group><year>2017</year></element-citation></ref><ref id="BIBR-8"><element-citation publication-type="journal"><source>IEEE Communications Standards Magazine</source><volume>1</volume><issue>2</issue><fpage>36</fpage><lpage>42</lpage><page-range>36-42</page-range><pub-id pub-id-type="doi">10.1109/MCOMSTD.2017.1700005</pub-id></element-citation></ref><ref id="BIBR-9"><element-citation publication-type="book"><article-title>Accelerating Development Velocity Using Docker</article-title><source>Apress eBooks</source><person-group person-group-type="author"><name><surname>Jangla</surname><given-names>K.</given-names></name></person-group><year>2018</year><pub-id pub-id-type="doi">10.1007/978-1-4842-3936-0</pub-id></element-citation></ref><ref id="BIBR-10"><element-citation publication-type="journal"><article-title>A Comparative Study of Webrtc and Websocket Performance in RealTime Voice Communication</article-title><source>INOVTEK Polbeng - Seri Informatika</source><volume>10</volume><issue>3</issue><person-group person-group-type="author"><name><surname>Hartono</surname><given-names>A.</given-names></name><name><surname>Agung</surname><given-names>L.</given-names></name><name><surname>Patah Herwanto</surname><given-names>W.</given-names></name></person-group><year>2025</year><fpage>1573</fpage><lpage>1582</lpage><page-range>1573-1582</page-range><pub-id pub-id-type="doi">10.35314/rsx41r57</pub-id></element-citation></ref><ref id="BIBR-11"><element-citation publication-type="book"><article-title>Containers vs. Virtual Machines (VMs): What’s the Difference? | NetApp Blog|Containers vs</article-title><source>Virtual Machines (VMs): What’s the Difference? | NetApp Blog. Www.netapp.com</source><person-group person-group-type="author"><name><surname>Jones</surname><given-names>D.</given-names></name></person-group><year>2018</year><ext-link xlink:href="https://www.netapp.com/blog/containers-vs-vms/" ext-link-type="uri" xlink:title="Containers vs vms">Containers vs vms</ext-link></element-citation></ref><ref id="BIBR-12"><element-citation publication-type="journal"><article-title>Docker container-based framework of Apache Kafka node ecosystem: vehicle tracking system by license plate recognition on surveillance camera feeds</article-title><source>International Journal of Intelligent Transportation Systems Research</source><volume>22</volume><issue>2</issue><person-group person-group-type="author"><name><surname>Kul</surname><given-names>S.</given-names></name><name><surname>Kumcu</surname><given-names>S.</given-names></name><name><surname>Sayar</surname><given-names>A.</given-names></name></person-group><year>2024</year><fpage>290</fpage><lpage>297</lpage><page-range>290-297</page-range><pub-id pub-id-type="doi">10.1007/s13177-024-00392-6</pub-id></element-citation></ref><ref id="BIBR-13"><element-citation publication-type="webpage"><article-title>Docker Architecture | Docker Resource Isolation | Lifecycle. K21 Academy</article-title><person-group person-group-type="author"><name><surname>Kumar</surname><given-names>A.</given-names></name></person-group><year>2024</year><ext-link xlink:href="https://k21academy.com/dockerkubernetes/docker-architecture-docker-engine-components-container-lifecycle/" ext-link-type="uri" xlink:title="Docker architecture docker engine components container lifecycle">Docker architecture docker engine components container lifecycle</ext-link></element-citation></ref><ref id="BIBR-14"><element-citation publication-type="book"><article-title>Innovation and entrepreneurship platform design based on docker container and improved blockchain technology</article-title><source>Discover Artificial Intelligence</source><person-group person-group-type="author"><name><surname>Lv</surname><given-names>S.</given-names></name><name><surname>Pang</surname><given-names>T.</given-names></name></person-group><year>2026</year><pub-id pub-id-type="doi">10.1007/s44163-025-00791-y</pub-id></element-citation></ref><ref id="BIBR-15"><element-citation publication-type="journal"><article-title>A systematic review on WebRTC for potential applications and challenges beyond audio video streaming</article-title><source>Multimedia Tools and Applications</source><volume>84</volume><issue>6</issue><person-group person-group-type="author"><name><surname>Mahmoud</surname><given-names>H.</given-names></name><name><surname>Abozariba</surname><given-names>R.</given-names></name></person-group><year>2024</year><fpage>2909</fpage><lpage>2946</lpage><page-range>2909-2946</page-range><pub-id pub-id-type="doi">10.1007/s11042-024-20448-9</pub-id></element-citation></ref><ref id="BIBR-16"><element-citation publication-type="journal"><article-title>Software application development using container technology</article-title><source>Journal of Information Technology and Applications</source><volume>21</volume><issue>1</issue><person-group person-group-type="author"><name><surname>Marinković</surname><given-names>D.</given-names></name><name><surname>Kojić</surname><given-names>V.</given-names></name><name><surname>Avramović</surname><given-names>Z.Ž.</given-names></name></person-group><year>2021</year><fpage>54</fpage><lpage>60</lpage><page-range>54-60</page-range><ext-link xlink:href="https://bum-apeiron.com/wp-content/uploads/2024/04/7563-Article-Text-16267-1-10-20210913.pdf" ext-link-type="uri" xlink:title="04">04</ext-link></element-citation></ref><ref id="BIBR-17"><element-citation publication-type="journal"><article-title>Implementation and evaluation of a container management platform on Docker: Hadoop deployment as an example</article-title><source>Cluster Computing</source><volume>24</volume><issue>4</issue><person-group person-group-type="author"><name><surname>Shih</surname><given-names>W.C.</given-names></name><name><surname>Yang</surname><given-names>C.T.</given-names></name><name><surname>R.</surname><given-names>Ranjan</given-names></name><name><surname>C</surname><given-names>Chiang</given-names></name></person-group><year>2021</year><fpage>3421</fpage><lpage>3430</lpage><page-range>3421-3430</page-range><pub-id pub-id-type="doi">10.1007/s10586-021-03337-w</pub-id></element-citation></ref><ref id="BIBR-18"><element-citation publication-type="webpage"><article-title>Signaling and video calling - Web APIs | MDN</article-title><year>2024</year><ext-link xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling" ext-link-type="uri" xlink:title="Signaling and video calling">Signaling and video calling</ext-link></element-citation></ref><ref id="BIBR-19"><element-citation publication-type="webpage"><article-title>The past, present, and future of WebRTC</article-title><year>2022</year><ext-link xlink:href="https://www.agora.io/en/blog/past-present-future-of-webrtc/WebRTC" ext-link-type="uri" xlink:title="WebRTC">WebRTC</ext-link></element-citation></ref><ref id="BIBR-20"><element-citation publication-type="journal"><article-title>Performance comparison between virtual machines and Docker containers</article-title><source>IEEE Latin America Transactions</source><volume>16</volume><issue>8</issue><person-group person-group-type="author"><name><surname>Yadav</surname><given-names>R.R.</given-names></name><name><surname>Sousa</surname><given-names>E.T.G.</given-names></name><name><surname>Callou</surname><given-names>G.R.A.</given-names></name></person-group><year>2018</year><fpage>2282</fpage><lpage>2288</lpage><page-range>2282-2288</page-range><pub-id pub-id-type="doi">10.1109/TLA.2018.8528247</pub-id></element-citation></ref></ref-list></back></article>