이번에 친구들과 함께 코드 공유 플랫폼을 만들었습니다. 그런데 운이 좋게도 학교 수업 시간에 저희 프로젝트를 사용해볼 수 있는 좋은 기회를 얻어 실사용을 해보았습니다.
이번 글에서 프로젝트를 진행한 전체적인 과정에 대해 적어보겠습니다.
저희는 파이썬 수업 시간에 항상 불편했던게 있었습니다.
바로 코드 공유가 불편하다는 것입니다. 친구가 과제가 어려워서 자주 저한테 물어보러 오는데, 그럴 때마다 메신저로 보내줘야 하고 복사 붙여넣기도 귀찮고 정리도 안됩니다.
그래서 저는 코드 공유를 더 쉽게 할 방법이 없는지 고민해보았습니다.
Pastebin을 써볼까? (텍스트 공유 서비스)
처음엔 Pastebin과 같은 다른 서비스를 이용해볼 생각도 해보았습니다.
하지만 필요없는 기능이 너무 많았고, 과제별로 나누기도 힘들었습니다.
결정적으로 한눈에 코드가 안들어왔습니다.
그래서 전 "아예 우리 학교 맞춤으로 만들어보는건 어떨까?"하고 프로젝트를 시작했습니다.
프로젝트를 진행하려면 사람이 있어야겠죠? 그래서 같은 학년 팀원 2명을 더 모았습니다.
저는 서버를 맡았고, 한 명은 웹, 다른 한 명은 디자인을 맡았습니다.
원래는 더 모으고 싶었는데 코딩을 잘하는 친구가 많이 없어서 최소한의 인원으로 프로젝트를 시작했습니다.
이후 일손이 부족해서 웹 친구가 디자인 2명을 더 데려왔습니다.
팀도 만들었겠다 함께 프로젝트 진행에 대한 회의를 했습니다.
저희는 핵심 기능인 "코드 공유"를 중심으로 어떻게 기능을 추가할지 생각해봤습니다.
코드에 좋아요를 할 수 있으면 좋겠다, 댓글을 달 수 있으면 좋겠다 이런 아이디어들이 오고 갔습니다. 그러다 문득 "제목과 코드만 입력하면 설명을 AI가 자동으로 생성해주면 좋을 것 같은데?"라는 아이디어가 떠올랐고 이 기능이 어느정도 다른 서비스와 차별점을 줄 수 있을 것 같아 구현하기로 했습니다.
회의하면서 노션에 기록을 했는데 덕분에 기억도 잘 나고 까먹었을 때 찾아보기 좋았습니다.
그렇게 정해진 핵심 기능은 이렇습니다.
어떤 기능이 필요한지도 알았으니 저희는 개발을 시작했습니다.
서버는 제가 원래 NodeJS로 만드는데, 이번에 자바도 배웠겠다 스프링으로 만들어보기로 했습니다. 웹 친구는 아직 배운게 적어서 HTML5와 SCSS, 바닐라 JS로 개발을 진행했습니다.
저희는 이때까지만 해도 수업 시간에 몇명밖에 안쓸거라고 생각하고 여유롭게 개발했습니다.
그런데..
갑자기 웹 친구가 소식 한개를 전해왔습니다.
"파이썬 선생님이 이번 주 안에 개발되면 수업 시간에 써주신다는데??"
저는 두 가지 생각이 들었습니다.
첫번째로 "우리 프로젝트가 수업 시간에 쓰인다고??" 그리고 "이번 주 안에 하라고...?"
또 어쩌다 우리 프로젝트를 써주신다 하신건지도 궁금했습니다.
선생님도 코드 공유 및 발표하는 데에 불편함을 겪고 계셨는데, 마침 좋은 솔루션이 생기니까 수업 시간에 사용하기로 하신거다. (❗️ 니즈 파악이 중요한 이유)
저희는 이런 좋은 기회를 놓칠 순 없으니 "1주일 동안 미친 듯이 개발해보자!"하고 개발에 전념했습니다.
이때 1주일에 2~3kg가 빠질정도로 힘들었습니다. 주말에는 하루에 17시간씩 통화하면서 계속 개발했고 지속적인 회의로 서비스를 더 견고하게 만들었습니다. 디자인 친구는 열심히 하다가 점점 힘들어하는 것 같아서 다른 친구를 데려와서 일을 줄여줬습니다.
솔직히 지금까지 살아온 인생 중에서 제일 열심히 한듯
이렇게 열심히 하다보니 저희 학교 깃허브 커밋 랭킹이 있는데, 거기서 저는 주간 랭킹 1위를 달성하고 프론트 친구는 2위를 달성하면서 1학년이 1, 2등을 독점하기도 했습니다. 프론트 친구도 일이 너무 몰려서 제가 서버를 어느정도 만들고 남는 시간에 계속해서 프론트도 도와줬습니다.
결국 하면 되는 것 같습니다. v1이 어느정도 완성이 되었고 배포를 할 시기가 왔습니다. 원래는 배포를 홈 서버에 할려고 했는데 CI/CD 구축을 직접 해본 적도 없고 스프링을 배포해본 적도 없어서 시간이 많이 걸릴 것 같아 국내 호스팅 업체를 이용하기로 했습니다. 결정적으로 집에 배포했을 때 가끔 도커가 죽어버려서 불안했습니다. (감사합니다 클라우드타입..)
요금은 조금 오버스펙으로 잡았는지 한달에 66,000원이 나왔습니다. 원래였으면 학교에 지원받을 수 있는건데 시간이 없는 관계로 사비로 해결했습니다ㅠㅠ
아키텍쳐 다이어그램(Architecture Diagram)
이렇게 열심히 하다보니..
소개 PPT를 만들고 학생들을 대상으로 첫 공표를 하였습니다.
자습 시간에 반을 돌면서 sh4re에 대해 소개를 했습니다.
친구들 반응이 좋았고 하루만에 깃허브 스타가 16개가 찍히기도 했습니다.
(아직 깃허브에 익숙한 친구가 많이 없어서 스타를 못 눌러줬다네요ㅠㅠ)
친구들도 많이 칭찬해주었고 아직 부족한 프로젝트라 많이 부끄러웠지만 선배님들도 제 웹 사이트를 봐주셨습니다.
파이썬 수업 시간이 다가왔고 학교 메신저에 이런 메시지가 왔습니다.
굉장히 설렜습니다. "진짜로 우리가 만든 프로젝트가 실사용이 되다니!"
사실 전날 밤에 백엔드 dto를 수정했었는데 프론트가 업데이트되지 않아서 코드 공유가 안되는 엄청난 오류가 있었다 (수업 시간까지 테스트 안해봤었으면 사고 날뻔했음..)
DB에 유저들이 차곡차곡 쌓이는게 굉장히 재밌었습니다. 아직은 소규모이긴 하지만 저희 학교 학생 수십명이 가입했습니다. 그리고 수업 시간이 되자 파이썬 과제를 모두 sh4re를 통해 제출하는 식으로 이용되기 시작했고, 이 날 하루만에 코드가 180개나 업로드됐습니다.
선생님도 이렇게 칭찬해주셨습니다.
"구글 클래스룸보다 직관적이고 코드가 한 눈에 들어오네 좋다"
타 서비스들과의 차별점을 확실히 둔 점이 장점으로 작용했던 것 같습니다.
선생님 페이지 (과제별로 한눈에 볼 수 있음)
오버스펙으로 맞춘 덕분인지 서버는 굉장히 잘 버텨주었습니다 (리소스가 거의 6~70%는 남는거 같긴 합니다..) 다음부터는 제대로 트래픽을 예상하고 리소스를 할당해야겠습니다. 또, 홈서버에 윈도우 대신 우분투를 설치하고 CI/CD 구축 해보는 것도 경험해봐야 할 것 같습니다.
그럴리가 없죠. 저희는 조금 아쉬웠습니다. 왜냐하면 웹이랑 서버 모두 구조가 조금 마음에 들지 않기도 했고 디자인도 부실했습니다. 그래서 v2를 만들기로 했습니다.
기능들도 더 추가하여 다른 학교에도 보급할 계획이 있습니다. (선생님이 좋게 평가해주셔서 서비스를 훨신 개선한다면 몇몇 학교에는 보급이 가능할 수도 있을 것 같습니다.)
v2 때는 웹도 리액트로 개발하고, 백엔드는 학교별로 데이터를 나누는 등 조금 더 전문적인 기능을 구현하기 위해 구조를 다시 설계해야할 것 같습니다. 디자인도 실제 서비스급으로 다시 해볼 생각입니다. 또, 그때는 AWS에 배포를 할 것 같습니다. (언제 터질지 모르는 홈서버는 토이 프로젝트로만..)
아무튼 많이 부족한 프로젝트였지만 수업 시간에 실사용도 해보고 굉장히 보람찼습니다.
기능도 더 추가해서 더 유용하게 만들어 다른 학교에도 보급해보고 싶습니다.
감사합니다.
Email: gorani@dgsw.hs.kr
Github: https://github.com/daehyeong2
안녕하세요.
저는 부산 소마고 다니고있는 학생입니다.
저희 학교에도 이러한 서비스가 있으면 매우 유용할 것 같아요!
서비스 확장을 응원합니다!!