AI 플랫폼의 A부터 Z까지 개발하는 팀, 백엔드 Part
엘리스
2024. 2. 29.
엘리스의 핵심 기술이자 서비스인, AI 플랫폼에 대해서 기술적으로 설명해 주실 Product 조직의 백엔드 엔지니어분들을 모셔보았습니다!
이번 인터뷰를 통해 엘리스 플랫폼이 교육 플랫폼을 넘어 AI 플랫폼으로 불리는 이유를 자세히 살펴볼 수 있었는데요.
그 핵심은 바로 엘리스 플랫폼의 화상 강의 서버 구조와 코드 실행 서버 구조에 있었습니다! AI 플랫폼을 전적으로 파헤칠 수 있는 강의 같은 인터뷰를 함께 들어보실까요? 🤓
Q. Product 조직이 하는 일을 소개해 주세요.
창현 저희 팀은 엘리스 플랫폼에서 사용되는 서버 애플리케이션을 설계하고 개발합니다. 학생들에게 수준 높은 온라인 교육 환경을 제공하기 위해 라이브 코딩, 라이브 스트리밍, 컨테이너 기반 실습 환경, AI 학습 도우미 등 최신, 최고의 기술을 연구하고 개발합니다.
또한, 다년에 걸쳐 수집된 학생들의 방대한 학습 데이터를 바탕으로, 해외 유명 국제 학술대회에서 논문들을 발표하고 있습니다. 국내외 대학들과 활발하게 협력하며 진행한 연구 내용들을 플랫폼에 적용하여 더 효율적이고 효과적인 교육을 제공하고 있습니다.
Q. 엘리스 플랫폼은 어떻게 시작되었나요?
창현 엘리스는 2015년 KAIST 머신러닝 캠프에서 시작되었습니다. 과거에는 학생들이 손 코딩 시험지를 통해 시험을 치렀었고, 조교들은 시험이 끝나면 수동으로 채점해야 했습니다.
이러한 과정은 학생과 조교 모두의 시간이 낭비되는 불편함을 초래하였고, 저희는 이 문제를 해결하기 위해 AI 학습 도우미 및 자동 채점 기능을 탑재한 온라인 플랫폼을 개발하게 되었습니다. 학생들은 직접 자신의 PC나 노트북을 사용하여 코딩을 수행할 수 있었고, 조교들은 자동 채점 기능을 활용하여 빠르게 결과를 확인할 수 있게 되었습니다.
그리고 현재, 엘리스 플랫폼은 KAIST에서 전교생 1학년 필수 과목인 기초 프로그래밍 수업의 실습 플랫폼으로 선정되었습니다. 또한, 코로나 팬데믹 이후에 비대면 교육에 대한 관심과 수요가 늘어남에 따라, 엘리스 플랫폼은 사용자들에게 더욱더 편리하고 접근성이 좋은 학습 경험을 제공하고 있답니다.
Q. 엘리스 플랫폼 화상 강의에 대해 소개해주세요.
창현 처음에는 전통적인 온라인 화상 강의를 제공했지만, 화상 강의 중에 발생하는 높은 지연 시간 때문에 학생과 교육자 간의 자연스러운 대화나 토론이 방해되는 문제가 있었습니다.
‘P2P 통신’이란? 피어 간 직접적인 통신을 의미합니다. 중간에 중계 서버 없이 각각의 디바이스가 직접 데이터를 주고받는 방식으로, 파일 공유나 온라인 게임 등에 활용되기도 하죠.
이러한 문제를 해결하고, 더 나은 교육 환경을 제공하기 위해 WebRTC 기술을 도입하였습니다. WebRTC는 웹 브라우저와 모바일 앱을 통해 피어 간의 실시간 통신을 구현하기 위한 네트워크 프로토콜로, 기본적으로 피어 투 피어(P2P) 통신을 기반으로 합니다.
‘미디어 서버’란? 화상 강의나 영상 통화와 같은 멀티미디어 데이터를 처리하고 전송하는 서버에요. 엘리스에서는 화상 강의 중에 발생하는 영상과 오디오 데이터를 처리하고 전달하는 역할을 합니다.
그러나 화상강의와 같은 다중 사용자 환경에서는 P2P 통신만으로는 한계가 있습니다.
따라서, 사용자-사용자 간의 P2P 통신이 아닌, 미디어 서버를 중앙에 두고 사용자-미디어 서버 간의 P2P 통신을 구축하였습니다. 이를 통해 미디어 스트림을 효율적으로 관리하고, 대역폭을 절약하고, 네트워크 트래픽을 최적화하였습니다. 뿐만 아니라, 다양한 종류의 웹 브라우저, 모바일 앱, 기기 간의 호환성을 지원하여 사용자가 다양한 플랫폼과 환경에서 화상 강의에 참여할 수 있도록 했습니다.
Q. 엘리스 플랫폼 화상 강의 서버 구조를 더 자세히 설명해 주실 수 있나요?
창현 네, 엘리스는 미디어 서버를 직접 구축하여 높은 화질과 안정성은 물론, 교육 환경에 최적화된 다양한 기능을 제공하고 있는데요.
‘시그널 서버’란? 피어 간 통신을 원활히 하기 위해 필요한 정보를 전달하는 중요한 서버에요. WebRTC에서는 이 서버를 통해 피어 간 연결을 조율하고, 통신에 필요한 정보를 주고 받아요.
‘SDP’란? Session Description Protocol의 약자로, WebRTC에서 사용되는 통신 설정을 위한 프로토콜이에요. 이걸 사용하면 서로 다른 기기 간에 미디어 통신을 위해 필요한 정보들을 주고 받을 수 있어요. 예를 들어, 어떤 네트워크를 사용할지나 어떤 종류의 오디오/비디오 포맷을 지원하는지에 대한 정보를 교환할 때 쓰여요.
먼저, 사용자가 엘리스 강의실에 접속하면, 마이크, 웹캠, 혹은 화면 공유를 활성화할 수 있습니다. 이 과정에서 시그널 서버를 통해 WebRTC 피어 간 연결이 설정됩니다. 그리고 이때, 피어 간 정보(SDP)가 교환됩니다. 시그널 서버는 피어 간의 상태와 통신 정보를 전달하고 연결 설정을 중개해줍니다.
‘ICE 프로토콜’이란? WebRTC에서 사용되는 통신 경로를 찾는 데 도움을 주는 프로토콜이에요. 이 프로토콜은 네트워크 환경을 고려하여 가장 안정적인 연결을 수립하도록 돕습니다.
그 다음에는, ICE 프로토콜을 활용해서 피어 간 연결을 구축합니다. ICE 프로토콜은 두 피어 간에 최적의 통신 경로를 찾아주어 공유기나 방화벽과 같은 환경에서도 안정적인 통신이 가능하도록 도와줍니다. 그렇게 WebRTC 연결이 성립되면, 브라우저와 미디어 서버 사이에서 실제 미디어 데이터가 주고 받아지게 됩니다.
미디어 서버는 수신한 미디어 데이터를 모든 참가자의 브라우저로 복제해서 전달해줍니다. 또한 화상 강의 중에 만들어지는 비디오와 오디오 스트림을 녹화합니다. 그리고 화상강의가 끝나면 녹화된 영상은 플랫폼에 자동으로 업로드됩니다. 학생들은 복습이 필요할 때, 이 녹화된 영상을 유용하게 활용할 수 있습니다.
이렇게 WebRTC를 활용한 온라인 화상강의를 통해 학생들은 언제 어디서나 교육자로부터 신속한 피드백을 받고 밀접하게 소통하여 더 풍부한 학습 경험을 얻을 수 있습니다.
Q. 엘리스 코드 실행 실습에 대해 소개해주세요.
창현 프로그래밍을 배우는 데에 있어 가장 중요한 과정은, 바로 실습입니다. 엘리스는 이러한 프로그래밍 교육에 필수적인 실습을 가장 효과적이고 효율적인 방법으로 제공하기 위해 다양한 기술을 개발하고 있습니다.
프로그래밍 실습은 다양한 형태로 이뤄질 수 있는데요. 가장 기본적인 형태는 명령줄 인터페이스(CLI)를 통해 코드를 실행하고 결과를 확인하는 실습입니다.
‘CLI’란? Command Line Interface의 약자로, 텍스트 명령을 사용하여 컴퓨터와 상호 작용하는 인터페이스입니다. 이를 통해 사용자는 명령어를 입력하여 작업을 수행할 수 있어요.
‘GUI 프로그래밍’이란? 사용자가 버튼, 창 등을 마우스로 클릭하거나 터치하여 프로그램을 조작하는 방식이에요.
하지만 프로그램은 CLI 이외에도 다양한 목적에 따라 다양한 형태의 입출력을 가질 수 있는데요.
예를 들어 우리가 PC를 사용할 때 자연스럽게 접하는 GUI 프로그래밍, 물리적인 모터나 센서를 제어하는 아두이노 프로그래밍, 웹 프로그래밍, 그리고 AI 연구에 사용되는 기계학습 프로그래밍 등이 있습니다. 엘리스 플랫폼은 이러한 다양한 환경에서 다양한 종류의 문제를 해결할 수 있는 능력을 실습을 통해 검증하고 강화하는 데 도움을 주는 플랫폼입니다.
Q. 엘리스 코드 실행 서버에 대해서 더 자세히 설명해 주실 수 있나요?
창현 엘리스 플랫폼의 가장 큰 기술적 장점은, 학습자의 장비가 아닌 엘리스 코드 실행 서버에서 모든 실습이 이뤄진다는 점입니다. 이러한 방식 덕분에 학습자는 시간과 공간의 제약 없이 언제 어디서나 동일한 실습 환경을 경험할 수 있습니다.
예를 들어, 학습자는 지하철에서 태블릿을 통해 엘리스 플랫폼에 접속하여 고성능 GPU가 필요한 AI모델링 실습에 참여할 수 있습니다. 또한, 이러한 서버 기반의 코드 실행 아키텍처는 실습 환경의 개발 과정을 단순화합니다. 이를 통해 엘리스는 다양한 교육 과정에 최적화된 실습 환경을 빠르게 개발할 수 있습니다.
‘컨테이너’란? 소프트웨어의 실행을 위해 필요한 모든 것을 포함하는 패키지에요. 엘리스에서는 학습자가 작성한 코드를 실행하기 위해 컨테이너를 활용합니다.
‘클러스터’란? 여러 대의 컴퓨터가 네트워크를 통해 연결되어 하나의 시스템처럼 동작하는 것을 말해요. 엘리스에서는 서비스 안정성을 높이기 위해 다수의 클러스터를 구성하여 서비스를 운영합니다.
‘컨테이너 스케줄러’란? 여러 대의 컴퓨터 자원을 관리하고 컨테이너를 실행하는 소프트웨어에요. 각 컨테이너가 어디에서 실행될지를 결정하고, 자원을 효율적으로 할당하여 시스템 성능을 최적화하지요.
엘리스는 서비스 운영의 효율성을 높이기 위해, 실습 컨테이너 관리에 집중하고 있습니다. 예를 들어, 실습 컨테이너는 학습자가 작성한 프로그램을 즉시 실행할 수 있어야 하면서도, 미사용 상태로 대기 중인 컨테이너는 자원의 낭비를 최소화해야 합니다.
또한, 엘리스 코드 실행 서버는 다수의 클러스터로 구성되어 있으며, 이는 Azure 나 AWS 같은 퍼블릭 클라우드뿐만 아니라, 엘리스가 자체적으로 구축한 GPU 데이터센터에서도 운영됩니다.
엘리스는 실습 환경의 종류, 필요한 자원의 크기, 클러스터의 특성 등을 고려하여, 어떤 클러스터에 어떤 실습 컨테이너를 준비하는 것이 가장 효율적인지 계산합니다. 이를 바탕으로 엘리스는 컨테이너 스케줄러를 개발하여 서비스를 안정적이고 효율적으로 운영하고 있습니다.
Q. 엘리스 플랫폼이 나아갈 미래는 어떤 모습인가요?
창현 엘리스 플랫폼 솔루션은 처음 개발 단계부터 사용자 인터페이스(UI)와 보안, 교육 방법 등을 글로벌 스탠다드에 맞춰왔습니다. 지난해 미국 시애틀에 법인을 설립했고, 현재는 동남아시아와 싱가포르를 거점으로 사업 영역을 글로벌로 확장하고 있습니다.
또한 교육 분야와 더불어, 엘리스는 GPU, NPU 클라우드 기반 플랫폼인 엘리스 클라우드 서비스를 제공함으로써 앞으로도 더욱더 성장할 예정입니다.
Q. Product 조직만의 개발 문화를 소개해 주세요.
한빈 저희 팀에서는 제품의 품질과 업무 효율성을 높이기 위해 중요하게 생각하는 것 중 하나가 코드 리뷰 입니다. 일반적으로 개발이 완료되면 스쿼드 내에서 자율적으로 코드 리뷰를 진행하는데요. 리뷰 과정에서는 주로 비즈니스 로직이 요구사항을 충족하는지 여부와 분산 서비스에서 발생할 수 있는 문제를 어떻게 다루었는지 등을 확인합니다. 팀원들이 Pythonic한 스타일로 코드를 작성하셨는지, 혹은 모듈 간 책임 분리가 잘 이루어졌는지와 같은 다양한 측면에서 이야기를 나눕니다.
연웅 엘리스는 프로젝트 리더십 이라는 가치를 강조합니다. 그렇기 때문에 모든 팀에게 자기 주도적으로 프로젝트를 선택하고 이끌 수 있는 기회를 제공하고 있는데요. 매 분기가 시작하기 전 각 팀은, 회사에 주어진 과업과 기대되는 성과를 고려하여 다음 분기에 수행할 프로젝트를 직접 기획합니다. 직접 프로젝트를 기획하고, 이를 통해 성과를 내는 업무 프로세스는 개개인에게 동기부여와 책임감, 그리고 자신의 잠재력을 최대한으로 발휘하게 합니다.
하나 더 말씀드리자면, 저희는 팀 간의 기술 공유와 협력을 위해 매주 팀 단위로 업무 공유 세미나 를 주최하는 문화를 가지고 있습니다. 이 세미나는 데이터베이스, API 모델링, 기술 스택 선택과 같은 주요 주제를 다루고 있는데요. 세미나를 주최한 팀은 수행하고 있는 업무에 대한 관련 배경, 선택한 방식의 장단점, 그리고 앞으로의 계획을 공유합니다. 그리고 다른 팀은 다양한 관점에서 의견을 나누며 해결책을 논의합니다. 이를 통해, 세미나를 주최한 팀은 다양한 아이디어를 듣고 최상의 방법을 모색할 수 있고, 다른 팀 구성원들도 관련된 업무 지식을 이해하고, 문제해결 능력을 향상시킬 수 있습니다.
Q. 마지막으로, 엘리스 엔지니어로 합류하고 싶으신 분들에게 인사 부탁드립니다!
창현 엘리스는 교육 서비스와 GPU 클라우드 서비스를 개발하여 교육과 산업의 DX를 이끌고 있습니다. 저희와 함께 교육과 산업의 혁신을 이끄실 역량 있는 개발자분들의 많은 지원을 부탁드립니다.
한빈 고객의 요구사항과 성능 사이에서 trade-off를 찾고, 제품의 품질을 개선하는 걸 즐기시는 분께서 합류하시면 좋을 것 같습니다.
연웅 개개인과 팀 전체의 성장에 기여하는 것이 저희 팀만의 독특한 문화입니다. 저희 문화와 적합한, 성장에 목마르고 자신의 잠재성을 남김없이 발휘하고 싶으신 분과 함께하고 싶습니다!
엘리스 플랫폼의 화상 강의 서버 구조, 코드 실행 서버 구조, 그리고 개발 문화에 대해서 살펴보았는데요, 어떠셨나요?
개발자가 아닌 저에게는 마치 인터뷰가 아닌 강의처럼 흥미롭게 들렸는데요! 아래 영상에서는, 모션그래픽을 통해 더욱더 이해하기 쉽게 설명해 주고 있습니다. 🙌🏻
AI 플랫폼의 A부터 Z까지 개발하면서 글로벌한 경험까지도 해보실 수 있는 엘리스 Product 조직! 앞으로가 더욱 기대되네요. 😊
저희와 함께 경이로운 경험을 할 준비가 되신 분들은, 아래 링크를 통해 두드려주세요 :) 🔔
👉 엘리스 엔지니어 알아보기: https://elice.careers/jobs/platform-engineer
📺 영상 보러가기: https://www.youtube.com/watch?v=Uv_v_Vi8rCo&t=408s
*해당 콘텐츠는 저작권법에 의해 보호받는 저작물로 엘리스에 저작권이 있습니다.
*해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
- #elice
- #elice team
- #backend
- #AI플랫폼