A-Z of AI Platform Backend: The Development Journey
Elice
29/02/2024
We’ve gathered Backend Engineers from the Product Team to provide a technical explanation of Elice’s core technology and service, the AI platform!
Through this interview, we were able to closely examine why the Elice platform is referred to as an AI platform beyond an educational platform.
The essence lies in Elice’s video lecture server structure and code execution server structure! Would you like to join us for an interview that delves deep into the AI platform? 🤓
Q. Please introduce the role of the Product Team.
ChangHyun Our team designs and develops server applications used in the Elice platform. We research and develop cutting-edge technologies such as live coding, live streaming, container-based lab environments, and AI learning assistants to provide students with a high-quality online learning environment.
Additionally, leveraging vast learning data collected over several years, we present papers at renowned international academic conferences. We actively collaborate with domestic and international universities, applying research findings to the platform to offer more efficient and effective education.
Q. How did the Elice platform start?
ChangHyun
Elice originated from the KAIST Machine Learning Camp in 2015. Previously, students took exams through handwritten coding papers, and instructors had to manually grade them after the exams.
This process caused inconvenience and wasted time for both students and instructors. To address this issue, we developed an online platform equipped with AI learning assistants and automatic grading features. Students could perform coding directly on their PCs or laptops, while instructors could quickly check results using the automatic grading feature.
Currently, the Elice platform has been selected as the practice platform for the introductory programming course, a compulsory subject for all freshmen at KAIST. Furthermore, with increased interest and demand for remote education following the COVID-19 pandemic, the Elice platform strives to provide users with an even more convenient and accessible learning experience.
Q. Could you please introduce the video lecture feature of the Elice platform?
ChangHyun Initially, we provided traditional online video lectures. However, there was an issue with high latency during these video lectures, which disrupted natural conversations and discussions between students and educators.
‘P2P communication’ refers to direct communication between peers. It involves devices communicating directly with each other without the need for intermediary servers, often utilized in activities such as file sharing and online gaming.
To address these issues and provide a better educational environment, we introduced WebRTC technology. WebRTC is a network protocol designed to implement real-time communication between peers through web browsers and mobile apps. It is fundamentally based on peer-to-peer (P2P) communication, enabling seamless interaction and reduced latency in video lectures on the Elice platform.
A ‘media server’ is a server responsible for processing and transmitting multimedia data such as video lectures or video calls. In Elice, it handles the processing and transmission of video and audio data that occurs during video lectures.
However, in multi-user environments like video lectures, relying solely on P2P communication has limitations. Therefore, instead of user-to-user P2P communication, we implemented a setup where a media server is placed centrally, facilitating P2P communication between users and the media server. This enables efficient management of media streams, saves bandwidth, and optimizes network traffic. Additionally, we support compatibility across various types of web browsers, mobile apps, and devices, allowing users to participate in video lectures from different platforms and environments.
Q. Could you explain the structure of the Elice platform video lecture server in more detail?
ChangHyun Sure, Elice has built its own media server to provide high quality and stability, along with various features optimized for educational environments.
A ‘signal server’ is an important server that facilitates the exchange of information necessary for smooth peer-to-peer communication. In WebRTC, this server is used to coordinate peer-to-peer connections and exchange the necessary information for communication.
*
‘SDP’ stands for Session Description Protocol, which is a protocol used in WebRTC for communication settings. It allows the exchange of information necessary for media communication between different devices. For example, it is used to exchange information about which network to use or which audio/video formats are supported.*
Upon entering an Elice classroom, users can activate their microphone, webcam, or screen sharing. During this process, WebRTC peer-to-peer connections are established via the signal server. At this point, peer-to-peer information (SDP) is exchanged. The signal server facilitates the exchange of peer statuses, communication information, and mediates connection setups.
‘ICE protocol’ stands for Interactive Connectivity Establishment, a protocol used in WebRTC to assist in finding communication paths. This protocol helps establish the most stable connection by considering the network environment.
Next, the peer-to-peer connection is established using the ICE protocol. The ICE protocol helps find the optimal communication path between two peers, enabling stable communication even in environments with routers or firewalls. Once the WebRTC connection is established, actual media data is exchanged between the browser and the media server.
The media server replicates received media data to all participants’ browsers and also records video and audio streams created during the video lecture. Once the video lecture ends, the recorded video is automatically uploaded to the platform. Students can then utilize these recorded videos for review when needed.
Through online video lectures utilizing WebRTC, students can receive timely feedback from educators and engage in close communication, enhancing their learning experience from anywhere and at any time.
Q. Could you please introduce the Elice code execution practice feature?
ChangHyun In learning programming, practical exercises are crucial. Elice is dedicated to providing practical exercises, which are essential for programming education, in the most effective and efficient manner possible by developing various technologies.
Programming exercises can take various forms, with the most fundamental being running code through a command-line interface (CLI) and verifying the results.
‘CLI’ stands for Command Line Interface, which is an interface for interacting with a computer using text commands. Users can perform tasks by entering commands through this interface.
‘GUI programming’ is a method where users manipulate programs by clicking buttons, windows, etc., using a mouse or touch.
However, programs can have various forms of input and output depending on their purposes, besides CLI. For example, there’s GUI programming, which we commonly encounter when using a PC, Arduino programming for controlling physical motors or sensors, web programming, and machine learning programming used in AI research. The Elice platform helps verify and enhance the ability to solve various types of problems in these diverse environments through practice.
Q. Could you please provide more details about the Elice code execution server?
ChangHyun The biggest technical advantage of the Elice platform is that all practical exercises are conducted on the Elice code execution server, rather than on the learner’s device. Thanks to this approach, learners can experience the same practical environment anytime, anywhere, without time or space constraints.
For example, a learner can access the Elice platform via a tablet while on the subway and participate in AI modeling exercises that require high-performance GPUs. Additionally, this server-based code execution architecture simplifies the development process of the practical exercise environment. As a result, Elice can quickly develop practical environments optimized for various educational courses.
‘Container’ is a package containing everything necessary for software execution. Elice utilizes containers to execute the code written by learners.
‘Cluster’ refers to multiple computers connected via a network to operate as a single system. In order to enhance service reliability, Elice operates multiple clusters.
A ‘container scheduler’ is software responsible for managing multiple computer resources and executing containers. It determines where each container will run and allocates resources efficiently to optimize system performance.
Elice prioritizes the management of practice containers to enhance operational efficiency. For instance, practice containers must be capable of immediately executing programs written by learners while minimizing resource wastage for idle containers.
Moreover, the Elice code execution servers are comprised of multiple clusters, operating not only in public cloud services like Azure or AWS but also within GPU data centers built by Elice itself.
Considering factors such as the type of practice environment, resource requirements, and cluster characteristics, Elice calculates the most efficient allocation of practice containers to clusters. Based on this assessment, Elice has developed a container scheduler to operate the service reliably and efficiently.
Q. What does the future hold for the Elice platform?
ChangHyun Elice platform solutions have been developed to align with global standards, including user interface (UI), security, and educational methods from the initial development stages.
Last year, we established a corporation in Seattle, USA, and currently, we are expanding our business globally with Southeast Asia and Singapore as hubs.
Furthermore, alongside the education sector, Elice is poised for further growth by providing Elice Cloud Services, a GPU and NPU cloud-based platform.
Q. Please introduce the development culture unique to the Product Team.
HanBin
In our team, one of the key aspects we value to enhance the quality of our product and increase operational efficiency is code review. Typically, after development is completed, we autonomously conduct code reviews within the squad. During the review process, we primarily focus on ensuring that the business logic meets the requirements and how we address potential issues that may arise in distributed services.
We discuss various aspects such as whether team members have written code in a Pythonic style, or if responsibility separation between modules has been well-established. Additionally, we examine how effectively the code adheres to best practices and standards, and whether it aligns with our architectural principles. This collaborative review process not only helps us identify and rectify any potential issues but also fosters knowledge sharing and continuous improvement within our team.
YeonWoong Elice emphasizes the value of project leadership, which is why we provide every team with opportunities to autonomously select and lead projects. Before each quarter begins, each team plans their projects for the upcoming quarter, taking into account the tasks assigned by the company and the expected outcomes. This process of planning and executing projects empowers individuals to maximize their potential by fostering motivation, accountability, and a sense of ownership.
Furthermore, we have a culture of hosting work-sharing seminars at the team level every week to facilitate technical sharing and collaboration among teams. These seminars cover key topics such as database management, API modeling, and technology stack selection. The hosting team shares background information on their ongoing tasks, discusses the pros and cons of their chosen approach, and outlines their future plans. Other teams then engage in discussions from various perspectives to exchange ideas and explore solutions. Through these seminars, the hosting team gains diverse insights to seek the best approach, while other team members understand relevant task knowledge and enhance problem-solving skills.
Q. Lastly, Please greet those who are interested in joining Elice as engineers!
ChangHyun Elice is leading the digital transformation in education and industry by developing educational services and GPU cloud services. We kindly request the support of capable developers who will lead innovation in education and industry with us.
HanBin We believe someone who enjoys finding trade-offs between customer requirements and performance, and takes pleasure in improving product quality would be a great fit to join us.
YeonWoong Contributing to the growth of individuals and the entire team is our team’s unique culture. We are looking for individuals who are eager for growth, fit well with our culture, and are keen to fully unleash their potential!
I appreciated the combination of lecture-style information and interview format! The explanations about the video conferencing server architecture, code execution server structure, and development culture at Elice were quite engaging. The use of motion graphics particularly helped in conveying concepts more clearly. 🙌
Looking forward to experiencing more of the exciting journey with the Elice Product team! 😊
If anyone is ready to embark on this remarkable experience with us, please feel free to reach out through the link below.🔔
👉 Learn more about Elice engineers: https://elice.careers/jobs/platform-engineer
📺 Watch the video right away!: https://www.youtube.com/watch?v=Uv_v_Vi8rCo&t=408s
*This content is a work protected by copyright law and is copyrighted by Elice.
*The content is prohibited from secondary processing and commercial use without prior consent.
- #elice
- #elice team
- #backend
- #AI Platform