안녕하세요. 저는 코들을 개발하고 있는 팀모노리스 CTO 이창환입니다. 여기선 모든 개발을 다 하지만, 경력은 백엔드 개발에 집중되어 있습니다. 팀모노리스 이전에는 버킷플레이스에서 3년간 일했습니다.

코들은 교실 단위의 실시간 수업을 돕는 파이썬 코딩 환경입니다. 코들은 작년 12월부터 개발에 착수해서, 올해 1학기부터 몇몇 학교에서 사용되고 있는데요! 맨바닥부터 프로덕트를 만들기까지 시간이 촉박했던 만큼 어떤 방법으로 개발 기간을 최대한 단축했는지, 그리고 그 과정에서 어떤 시행착오가 있었는지를 공유해보겠습니다. 🎉

개발을 가장 빠르게 하는 방법이 뭘까요? 개발을 안 하면 안 할수록 개발은 빨라집니다. 😊 그래서 팀모노리스는 바퀴의 재발명을 피하고자 최선을 다해 여러 오픈 소스를 활용했습니다.

“교실 단위의 실시간 수업을 돕는 파이썬 코딩 환경”을 개발할 때, 어떤 영역이 가장 많은 공수가 필요할까요? 아마도 “파이썬 코딩 환경”일 것입니다. 그래서 역설적으로 1학기 개학 전까지 MVP를 만들기 위해선 파이썬 코딩 환경은 절대 만들면 안 되는 상황이었습니다.

이때, 주로 VSCODE와 Jupyter사이에서 고민했습니다. 우리는 Jupyter를 사용하기로 했는데요.

그래서 우리는 Jupyter를 선택했고, 구체적으로 Jupyter Lab, Jupyter Hub, Zero to Jupyter Hub를 활용해서 개발에 착수했습니다!

기업에서 오픈 소스 도입에서 우려하는 것 중 하나는 유지보수가 어렵다는 것입니다. 그러니까… 만약… 오픈 소스 자체에 버그가 있다면 어떡하죠? 우리 회사에서 만든 거라면 그걸 만드신 분이 아직도 팀에 있을 수 있고, 퇴사하셨더라도(😭) 전화라도 한 번 해볼 수 있을 텐데요!

안타깝게도 우리에게도 그런 일이 일어났습니다. 교실 기능을 만들고서, 우리는 선생님이 학생의 환경에 접속할 수 있길 바랐습니다. 그래서 학생이 작성한 파일도 보고 피드백도 남길 수 있게요.

여러 사용자가 Jupyter를 쓸 수 있도록 하는 서비스는 Jupyter Hub인데요. 그래서 Jupyter Hub의 설정을 통해 선생님이 학생의 서버에 접속할 수 있게 권한을 허가하는 작업이 필요했습니다. 그렇게 신나게 작업을 하고 선생님 계정으로 학생 환경에 성공적으로 접속했습니다! 그리고 동시 편집이 잘 되나 싶어서 학생 계정으로 접속해봤는데… 학생이 자신의 환경에 접속할 수가 없었습니다. 💩

훌륭한 개발자가 되려면 남 탓을 하지 않아야 하기에 당연히 제 설정에 오류가 있을 거라 생각하고 찾아봤으나 차도가 없었습니다. 그리고 스멀스멀 마음속에서 남 탓 귀신이 속삭이고 있었어요. 정신을 차리고 보니 Jupyter Hub 소스 코드를 이 잡듯 뒤지고 있었습니다…

Untitled

한참이 지나고 나서 마침내 버그를 찾아내었고, PR을 작성했습니다. Jupyter 팀에서 일을 빨리해줘서 3일 만에 병합이 되었습니다. 그리고 새 버전이 배포 되었어요.

그래도 이득

이 사례는 어떻게 보면 오픈 소스를 무턱대고 쓸 때의 단점을 말해주는 것 같아요. 하지만 좀 더 따져볼까요?