SlideShare a Scribd company logo
1 of 31
121***** a2tt (Leader)
121***** Teammate A
121***** Teammate B
Real-time
Code Sharing Service
for one-to-many coding classes
Notes and Stories
(You can find the original presentation written in Korean here.)
This capstone project was carried out from March 13 to June 15, 2022, as a graduation work
for CSE students.
I was inspired by LiveShare to design this service. We intended to build an web service that
has management functions and IDE features specialized in one-to-many coding classes.
Because of class rules, the presentation time is limited to 8 minutes including demo video
and the assessment criteria is unknown. Therefore, the contents of this presentation do not
show everything, but only the overall results of the project and its performance test.
For more detailed information, please visit my blog: https://blog.a2tt.me (not yet)
※ Little bit more details can be found in Speaker Notes section of this google slides.
Motivation
Motivation - Existing Services
Already existing code sharing services
- Microsoft’s LiveShare
- Jetbrains’ Code with me
Many people can modify code
on sharer’s file system
simultaneously
Motivation - Problem
Sharer’s file
only
Share
r
PTC PTC
PTC
PTC
PTC
*PTC = participant
Motivation - Problem
After sharing, inaccessible
Share
r
PTC PTC
PTC
PTC
PTC
*PTC = participant
Motivation - Required Features
- Mutually share modification of the code in real-time
- Create a QnA referencing lines of code
Real-time
Motivation - Required Features
- After sharing, access the codes and QnA
- Accumulate records of each student
Persistency
- Mutually share modification of the code in real-time
- Create a QnA referencing lines of code
Real-time
Motivation - Required Features
- After sharing, access the codes and QnA
- Accumulate records of each student
Persistency
- Mutually share modification of the code in real-time
- Create a QnA referencing lines of code
Real-time
Class-based - Systematic and continuous management system
- All participants with its own code space respectively
Demo Video
Implementation
Web
React.js (from CDN → Storage)
API server
Java Spring (on AWS EC2)
Websocket server
Python FastAPI (on AWS EC2)
Runtime server
Go gin (on AWS EC2)
Runtime agent server
Python FastAPI + GCC/Python
(on AWS FARGATE container)
Impl. - Websocket Communication
* Share file modification
* Share cursor position
Impl. - Real-time File Structure
Redis
* File list and size
* Cursor position
* File
contents
Impl. - Backup Codes
Impl. - Backup Codes
Impl. - Container Allocation
Termina
l
Run|
Impl. - Container Allocation
Impl. - Container Allocation
Impl. - Container Allocation
Performance Test
Performance Test - Plan
https://www.speedtest.net/global-index (2022.02)
Cursor position sync latency
: 200 ~ 300 ms
LiveShare
Performance Test - Plan
Bitrate 60.76 Mbps
Latency 10 ms
50 tester scripts send 2 messages
per second for 5 minutes
Performance Test - Plan
Bitrate 60.76 Mbps
Latency 10 ms
Websocket
delay
When sending major events on a certain probability,
measure the average delay before receiving a response
Goal: avg 450 ms
Modify cursor position 40.0%
Modify file 30.0%
Save file 10.0%
Open file 10.0%
Get file list 7.0%
Create an answer 2.5%
Create a question 0.5%
50 tester scripts send 2 messages
per seconds for 5 minutes
Performance Test - Plan
Bitrate 60.76 Mbps
Latency 10 ms
Code modification
sharing delay
When sending file modification event,
measure the average delay
before other users receiving a response
Goal: avg 300 ms
Websocket
delay
Goal: avg 450 ms
When sending major events on a certain probability,
measure the average delay before receiving a response
Modify cursor position 40.0%
Modify file 30.0%
Save file 10.0%
Open file 10.0%
Get file list 7.0%
Create an answer 2.5%
Create a question 0.5%
50 tester scripts send 2 messages
per seconds for 5 minutes
Performance Test - Environment
Tester Machine
(AWS Fargate container)
vCPU 0.25
Memory 0.5 Gib
IOPS 60
Bitrate 60.76 Mbps
Latency 10 ms
Websocket Server
(AWS t3.micro)
vCPU 2.00
Memory 1.0 Gib
IOPS 100
Network Max 5 Gbps
Performance Test - Environment
Tester’s Private subnet
- 172.31.96.0/27
- 172.31.96.32/27
Performance Test - Environment
Tester’s Private subnet
- 172.31.96.0/27
- 172.31.96.32/27
Tester → NAT → Websocket server
NAT (AWS EC2 t2.medium x2)
1. iptables mangle : packet mark by IP
2. TC : traffic shaping by each mark
3. Network Address Translation
: forwarding
Performance Test - Assessment
Total 119,762 messages
of transmissions and reception
- Server received : 108.6 #/s
- Server sent : 290.6 #/s
Websocket Delay Time
Average 71.80 ms
Median 22.83 ms
P95 50.40 ms
Max 3,547.97 ms
Performance Test - Assessment
Total 118,031 messages
of transmissions and reception
- Server received : 98.0 #/s
- Server sent : 295.4 #/s
Code Modification Sharing Delay
Average 29.25 ms
Median 22.23 ms
P95 34.28 ms
Max 785.49 ms
Thank you.

More Related Content

Similar to Real-time Code Sharing Service for one-to-many coding classes

20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
Craeg Strong
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
Ian Renyard
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
Craeg Strong
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
George Kanellopoulos
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
WSPDC & FEDSPUG
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
tcaesar
 

Similar to Real-time Code Sharing Service for one-to-many coding classes (20)

20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
 
HTML5 Comprehensive Guide
HTML5 Comprehensive GuideHTML5 Comprehensive Guide
HTML5 Comprehensive Guide
 
DEVNET-1140 InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
DEVNET-1140	InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...DEVNET-1140	InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
DEVNET-1140 InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
 
Techdays 2011 - Things I will remember
Techdays 2011 - Things I will rememberTechdays 2011 - Things I will remember
Techdays 2011 - Things I will remember
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
 
Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
MidSem
MidSemMidSem
MidSem
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
 
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019
 
BDD and Test Automation in Evalutionary Product Suite
BDD and Test Automation in Evalutionary Product SuiteBDD and Test Automation in Evalutionary Product Suite
BDD and Test Automation in Evalutionary Product Suite
 

Recently uploaded

UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
rknatarajan
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
ankushspencer015
 

Recently uploaded (20)

Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsRussian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 

Real-time Code Sharing Service for one-to-many coding classes

  • 1. 121***** a2tt (Leader) 121***** Teammate A 121***** Teammate B Real-time Code Sharing Service for one-to-many coding classes
  • 2. Notes and Stories (You can find the original presentation written in Korean here.) This capstone project was carried out from March 13 to June 15, 2022, as a graduation work for CSE students. I was inspired by LiveShare to design this service. We intended to build an web service that has management functions and IDE features specialized in one-to-many coding classes. Because of class rules, the presentation time is limited to 8 minutes including demo video and the assessment criteria is unknown. Therefore, the contents of this presentation do not show everything, but only the overall results of the project and its performance test. For more detailed information, please visit my blog: https://blog.a2tt.me (not yet) ※ Little bit more details can be found in Speaker Notes section of this google slides.
  • 4. Motivation - Existing Services Already existing code sharing services - Microsoft’s LiveShare - Jetbrains’ Code with me Many people can modify code on sharer’s file system simultaneously
  • 5. Motivation - Problem Sharer’s file only Share r PTC PTC PTC PTC PTC *PTC = participant
  • 6. Motivation - Problem After sharing, inaccessible Share r PTC PTC PTC PTC PTC *PTC = participant
  • 7. Motivation - Required Features - Mutually share modification of the code in real-time - Create a QnA referencing lines of code Real-time
  • 8. Motivation - Required Features - After sharing, access the codes and QnA - Accumulate records of each student Persistency - Mutually share modification of the code in real-time - Create a QnA referencing lines of code Real-time
  • 9. Motivation - Required Features - After sharing, access the codes and QnA - Accumulate records of each student Persistency - Mutually share modification of the code in real-time - Create a QnA referencing lines of code Real-time Class-based - Systematic and continuous management system - All participants with its own code space respectively
  • 12. Web React.js (from CDN → Storage) API server Java Spring (on AWS EC2) Websocket server Python FastAPI (on AWS EC2) Runtime server Go gin (on AWS EC2) Runtime agent server Python FastAPI + GCC/Python (on AWS FARGATE container)
  • 13. Impl. - Websocket Communication * Share file modification * Share cursor position
  • 14. Impl. - Real-time File Structure Redis * File list and size * Cursor position * File contents
  • 15. Impl. - Backup Codes
  • 16. Impl. - Backup Codes
  • 17. Impl. - Container Allocation Termina l Run|
  • 18. Impl. - Container Allocation
  • 19. Impl. - Container Allocation
  • 20. Impl. - Container Allocation
  • 22. Performance Test - Plan https://www.speedtest.net/global-index (2022.02) Cursor position sync latency : 200 ~ 300 ms LiveShare
  • 23. Performance Test - Plan Bitrate 60.76 Mbps Latency 10 ms 50 tester scripts send 2 messages per second for 5 minutes
  • 24. Performance Test - Plan Bitrate 60.76 Mbps Latency 10 ms Websocket delay When sending major events on a certain probability, measure the average delay before receiving a response Goal: avg 450 ms Modify cursor position 40.0% Modify file 30.0% Save file 10.0% Open file 10.0% Get file list 7.0% Create an answer 2.5% Create a question 0.5% 50 tester scripts send 2 messages per seconds for 5 minutes
  • 25. Performance Test - Plan Bitrate 60.76 Mbps Latency 10 ms Code modification sharing delay When sending file modification event, measure the average delay before other users receiving a response Goal: avg 300 ms Websocket delay Goal: avg 450 ms When sending major events on a certain probability, measure the average delay before receiving a response Modify cursor position 40.0% Modify file 30.0% Save file 10.0% Open file 10.0% Get file list 7.0% Create an answer 2.5% Create a question 0.5% 50 tester scripts send 2 messages per seconds for 5 minutes
  • 26. Performance Test - Environment Tester Machine (AWS Fargate container) vCPU 0.25 Memory 0.5 Gib IOPS 60 Bitrate 60.76 Mbps Latency 10 ms Websocket Server (AWS t3.micro) vCPU 2.00 Memory 1.0 Gib IOPS 100 Network Max 5 Gbps
  • 27. Performance Test - Environment Tester’s Private subnet - 172.31.96.0/27 - 172.31.96.32/27
  • 28. Performance Test - Environment Tester’s Private subnet - 172.31.96.0/27 - 172.31.96.32/27 Tester → NAT → Websocket server NAT (AWS EC2 t2.medium x2) 1. iptables mangle : packet mark by IP 2. TC : traffic shaping by each mark 3. Network Address Translation : forwarding
  • 29. Performance Test - Assessment Total 119,762 messages of transmissions and reception - Server received : 108.6 #/s - Server sent : 290.6 #/s Websocket Delay Time Average 71.80 ms Median 22.83 ms P95 50.40 ms Max 3,547.97 ms
  • 30. Performance Test - Assessment Total 118,031 messages of transmissions and reception - Server received : 98.0 #/s - Server sent : 295.4 #/s Code Modification Sharing Delay Average 29.25 ms Median 22.23 ms P95 34.28 ms Max 785.49 ms

Editor's Notes

  1. Hi. I’m a speaker, `a2tt`, of Together-Coding, team 2 of class 3. Real-time code sharing service for one-to-many coding classes, carried out with student A and B. Starting the presentation.
  2. (Speaker Notes here!)
  3. Have you ever heard of real-time code sharing services that are offered by VS code and Jetbrains’ products? By using the service, the user who started it can share the files located in his/her machine and the participants including him/her can synchronize modification in the files in real-time. Thus, it provides an environment where they can develop code collaboratively. We thought about whether these collaborative services could be used in coding classes like those of university. But, there are some problems.
  4. Because the service provides synchronization of the files of the sharer only, when used in coding classes, all students can’t have their own code.
  5. Also, after the termination of the sharing, although the modified files can only accessed by the sharer(Teacher, in this case), the students can’t access it anymore. So, what should we do to make a service that can be used for coding classes motivated by the existing services?
  6. Participants mutually share modification of the codes in real-time, and are able to create a QnA referencing lines of code.
  7. Also, after sharing, they need to be able to access the codes and QnA used and created in the class, and the service should accumulate records of the present condition of each student.
  8. It should provide systematic and continuous management systems for courses and classes. Last but not least, it should provide all participants with its own code space respectively. Our goal is to provide a service that can help achieve better class and learning quality by complementing the existing real-time code sharing services and adding functions that can overcome the limitations of one-to-many coding classes
  9. First of all, I’ll show you the result of our project. (https://youtu.be/znzmxhIVmqs)
  10. This is our architecture. All frontend and backend servers are deployed on Amazon Web Services.
  11. All real-time data sharing is done with websockets. There are about 30 actions (events) on IDE. After the websocket server processes an event, it broadcasts its response to the appropriate participants only.
  12. All files manipulated and used in IDE are managed in Redis; an in-memory database. We have divided the keys to make it easier to find the file list and contents, and the cursor positions of each participant on each file are also stored.
  13. When Redis runs out of memory, there will be an eviction and the stored codes could be deleted. In order to prevent this situation, serverless computing resource (AWS Lambda) is periodically launched and it enqueues the user IDs whose project is not accessed for a long time.
  14. And other resources (Lambda) that consume this queue, download the project codes of each user, compress them, and backup the archive file to the cloud storage.
  15. If a user writes a code, it should be able to execute it. In other words, there must be a terminal that can be accessed from web page.
  16. When a user accesses the IDE, it sends a request to assign its own container. The runtime management server (Runtime Bridge) identifies the user, and then launches a new container using prepared docker image.
  17. The container has prepared to execute a specific language. A python server (Agent) inside of this provides SSH relay linking user’s websocket and internal local SSH, and also processes code execution.
  18. Because the container is not prepared for HTTPs communication, the runtime management server provides a reverse proxy to make it possible for users to use HTTPs to connect with its container.
  19. Because of the nature of our service, we judged that the response speed of the service was important, and we conducted a performance evaluation on the response speed of the websocket server.
  20. By applying the global fixed broadband network speed average measured by Speedtest.net, we measured the cursor position synchronization latency of LiveShare and confirmed that it would take approximately 200 to 300 ms.
  21. So, when 50 tester scripts send 2 messages per seconds for 5 minutes with the same network speed, we measured the delay time from the departure of the each message until users received its corresponding response.
  22. Our first performance goal is related to measuring the overall delay time of the service when sending major events on a certain probability.
  23. The second is related to measuring delay time of sharing file modification data, which is one of the primary features of our service.
  24. The tester machine was set to the minimum operational specification.
  25. In order to configure an independent test environment, we launched docker container (AWS Fargate) in two private subnets.
  26. In order to apply traffic shaping, we made the traffic from testers go through NAT server. In the NAT server, by using `iptables mangle` command, all packets from the private subnets are marked by each private IP address, and for traffic going outside from NAT, bitrate limit and delay are set for each mark.
  27. The test results are as follows: When primary events were sent 2 times per second for 5 minutes, the average delay time of 71.80 ms was measured and the target value of 450 ms was met.
  28. In addition, code modification sharing has an average delay of 29.25 ms, achieving results that met the target average of 300 ms.
  29. This is the end of our project. I’ll wrap up the presentation. Thank you.