뒤로
이창환
이창환 ·

두 달만에 파이썬 코딩 환경 만들기

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


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


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

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

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

  • VSCODE에 웹 개발 환경도 있으나 직접 배포하기까지 큰 시행착오 예상됨.
  • VSCODE는 MS에서 받아 써보기만 했고, 누군가 수정해서 만든걸 본 적이 없음.
  • 교육 기관에서 Jupyter를 사용하는 사례가 많음.
  • 물론 개발자는 VSCODE를 더 많이 사용하지만요.
  • 우리의 고객은 개발자보다는 학생에 가깝습니다.

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


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

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

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

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

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


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

  • 직접 코딩 환경 만드는 거랑 비교했을 때 여전히 개발이 빠르다. 이런 버그가 100개 더 있어도…
  • 사용 중인 도구에 대한 더 깊은 이해
  • 자동화된 검증 도구, 업무 프로세스에 대한 인사이트
  • 즐거운! 경험
  • 그리고 아주 멋진 Contributor 딱지까지…


대부분 개발자들은 분명 오픈 소스 프로젝트에 참여하는 것이 아주 멋지다고 생각할 거예요. 그런데 생각보다 많은 개발자분이 여기에 어려움을 느끼세요. 그래서 저는 오픈 소스에 대해 열정적인 개발 문화를 만들어야겠다고 다짐했습니다. 어차피 팀모노리스에서는 오픈 소스를 엄청 쓸 거고, 위와 같은 사례도 정말 많이 발생할 거니까요. 

…
…

네. 위 사례는 개발 시작 단 2주 만에 발생한 거고, 실제로 훨씬 더 많이 발생했어요. 이 사례들도 기회가 되면 공유해보도록 하겠습니다. 읽어주셔서 감사합니다. 🙏

코들

교실 단위 실시간 코딩 수업을 위한 파이썬 환경, Codle

8

댓글

로그인 후 댓글을 남길 수 있습니다.

서정범
서정범

늦었지만 비개발자 신분으로 개발을 공부하고자 하는데 중급 수준의 개발자가 되려면 최소 어느정도 시간과 노력을 투자해야 할까요? - 학원 수강 6개월 등등

이창환
이창환

제가 생각하는 초급/중급/고급 개발자를 한 번 적어 놓겠습니다. 초급 개발자: 조직에 들어갔을 때 조직의 생산성에는 실질적으로 많은 도움이 되지는 않습니다. 기존 구성원이 끊임없이 가르쳐주고 리뷰해줘야하기 때문입니다. 조직의 성과를 X0.9~X1.3 하는 사람입니다. 중급 개발자: 어떤 조직에 들어가더라도 신속히 가치를 창출해냅내다. 조직의 성과를 X1.5~X2.0 해낼 수 있는 사람입니다. 고급 개발자: 조직을 근본부터 혁신시키고, 기술적인 성과를 넘어 사업적인 성과에도 큰 영향을 미칠 수 있습니다. X10 X100 을 만들어 냅니다. 저는 제가 공부해온 과정에 기반해서 말씀을 드릴 수 밖에 없을 것 같아요. 학원에서 사람들을 많이 가르치면서 본 게 아니라서요. 저는 중고등학생 때부터 개발을 하고, 대학에서 전공을 하고, 버킷플레이스(오늘의집)에서 3년 일하고, 지금은 창업을 한 상태입니다. 학생때는 주 40시간 개발을 하진 않았겠지만, 고등학생때는 정보 수업도 많이 들었고, 취미로도 개발을 해서 주 20시간씩은 했을겁니다. 처음엔 배운 내용을 토대로 만들고 싶은 걸 만들었어요. 원초적인 개발의 재미를 느끼면서요. 이 때는 오픈 소스에서 소스를 읽고 이해하기 위해 많이 노력했고 원하는 코드를 작성하는 능력을 길렀습니다. 이 시기에 구글, 문서(Documentation), 소스를 해석하고 활용하는 능력을 충분히 갖추게 되었습니다. 영어 실력도 포함이 되겠네요. 저는 개인적으로 구글링, 문서, 소스 해석만 완벽하게 하면 슈퍼 루키라고 생각합니다. 대학에서도 전공하면서, 취미로 개발을 많이 했습니다. 전산학 이론이나 AI 같은 것도 배우고, 실무적인 내용도 배웠으나 이 과정에서 많이 성장했다고 느끼지는 않습니다. 내실을 튼튼하게 다져간것 같아요. 이 때까지 초급 개발자였다고 생각합니다. 이후에 버킷플레이스에서 3년 동안 일했는데요. 실무를 하면서 실력이 많이 늘었습니다. 개인 프로젝트를 하더라도 실무를 하기 전과 한 후는 생각의 시작부터 달라졌어요. 다양한 사업적, 기술적 요구사항과 다양한 기술을 알게 되면서 생긴 변화라고 생각합니다. 지금은 제가 어디서 일을 하더라도 하루에서 일주일 안에 그 조직에 큰 도움이 될 자신이 있습니다. 그래서 이 관점에서는 중급 개발자라고 생각해요. 결국 저는 14년 했습니다. 다 풀타임은 아니지만... 이걸 잘 압축시키면 대학/학교/학원 2년, 개인 공부 2년, 실무 2년 정도로 줄일 수는 있을 것 같아요.

서정범
서정범

5년!!! 회사는 촉박하게 움직이고 있는듯 해서요. 그쵸 전문가가 되려면!! 좋은 의견 감사합니다

서정범
서정범

대단하십니다. 긴 장문의 가이드 감사합니다. 6개월이란 기간은 정말 맛보기 정도로 실전 투입은 고려 대상이 되겠네요.

서정범
서정범

좋은 간접경험을 한듯 하네요. 파이팅!

Doeon Kwon 권도언
Doeon Kwon 권도언

창환님 메이커로그가 Must Reads #65에 선정 되었어요! https://stib.ee/73b6