나는 어떻게 Seatmaster를 만들게 되었나
학교선생님 또는 지정좌석제로 운영되는 학과의 과대표라면 한번쯤 자리배정, 자리 제비뽑기에 대한 고민이 한번 쯤 있었을 것입니다.
엑셀, 한글, 파워포인트, 심지어 수작업으로 자리배정을 하다보면 어떻게 무작위배정을 할지부터 고민이 생기기 마련입니다.
저 역시 과대표를 맡으며 자리배정에 대한 고민이 있었는데요. 당시에는 자리뽑기 컴퓨터 프로그램을 사용하고 있었습니다.
대표적으로 seats positioner라는 프로그램이 있는데 아주 자리배치에 최적화되어있고 간편하게 사용할 수 있는 프로램입니다.
(원작자를 찾을수없어 블로그 글로 대체합니다. https://hi_hi_claire.blog.me/220281298964)
그러나 제 경우에는 대학생들이다보니 자율성을 존중해주기위해 서로간의 자리교환을 받아주는 데, 모두 과대표가 번거롭게 수작업을 통해 받아줘야 했습니다.
게다가 다음번 자리를 바꿀 때에는 뒷자리에 앉았던 학생이 앞자리에 앉게 배치해야 하는데, 그 작업을 위해 자리배치 프로그램을 서너번 돌려서 결과를 합치는 번거로운 작업을 하게됩니다.
이런 비효율을 참을 수 없는 성격의 필자는 먼저 앞자리와 뒷자리를 서로 바꾸어 제비뽑기를 하는 엑셀파일을 만들게 되고 한동안 잘 사용했습니다.
하지만 서로간의 자리교환은 아직도 과대표가 일일히 수정해줘야하는 번거로움이 남아있었습니다.
자리배치는 오프라인 프로그램으로 충분했지만, 자유로운 자리교환을 위해서는 온라인와 실시간이 필요했습니다.
당시 한창 웹프로그래밍에 관심이 있던 필자는 결국 자 웹앱을 개발하기 시작하는데 그 이름이 SeatMaster였습니다.
초창기 seatmaster의 로그인화면 무료호스팅계정에 돌렸더니 글자가 깨졌습니다.
처음엔 PHP와 mysql로 제작을 시작했는데 오래된 언어라는점이 먼저 마음에 걸렸고 처음 접하는 언어라 더이상 업그레이드하기는 어렵다고 생각이 들어 Node.js와 mongodb로 개발언어를 완전 바꾸게됩니다.
Node.js와 mongodb 둘다 익숙한 자바스크립트로 동작하기 때문에 개발기간은 오히려 덜 걸렸습니다.
php기반의 seatmaster v1을 개발하는데 6개월 이상이 소요된 반면, node.js로 새로 개발(이식에 가깝지만)하는 데에는 2개월 밖에 걸리지 않았습니다.
Seatmaser라는 자리배정, 교환을 위한 웹앱을 완성하고나니 실시간과 온라인이라는 특성 덕분에 과대표의 할 일은 그저 자리배치 버튼을 한번 누르는 일이었습니다. 더이상 누구와 누구 자리 바꿔달라는 요청을 듣지 않아도 학생들끼리 알아서 자리를 바꾸게 되었고, 온라인이라는 특성 덕분에 프로그램이 설치된 컴퓨터 뿐만 아니라 아무 노트북, 스마트폰으로도 관리를 할 수 있게 되는 또 다른 장점도 가지게 되었습니다.
Node.js기반의 Seatmaster v2개발이 끝나갈 무렵 필자가 다니는 과에서 자리배치를 할 날이 얼마 안남은 것을 깨닫게됩니다.(과대표는 물러났지만 자리배치는 맡아서 하고있었습니다.) 거의 1년을 고생해서 만든 프로그램을 쓸 날이 1년도 남지 않은 것 입니다.
그래서 이왕 만든 것 범용 서비스로 개발해보자! 하고 개발을 시작하여 seatmaster.xyz라는 도메인을 구입하고 아마존웹서비스를 통해 구동을 시작한 것이 지금의 seatmaster입니다.
범용서비스 초기 seatmaster 로고
그 결과 약 1년여만에 Seatmaster에는 현재 120여개 학교, 200여개의 교실이 등록되어있습니다.
현재 seatmaster의 로그인 화면
그동안 부족한 실력으로 개발하느라 소개하기 아쉬웠는데, 이제는 자신있게 소개해 드릴 수 있을 것 같습니다.
seatmaster는 개발 초기부터 직접 언어를 배워가며 만든 앱이기 떄문에 애정이 남다릅니다.
향후 유료플랜도 계획하고있지만 현재는 AWS비용을 자가부담하며 운영중입니다.
다음 글에는 Seatmaster의 실제 사용예와 기능들에 대해 소개하는 글을 써보도록 하겠습니다.