[ROCCIA 901 서비스 개발기] 프로젝트 기획 및 개요

김동욱·2024년 1월 3일
post-thumbnail

🚪 들어가며

현재 회사에 재직을 하며 처음으로 DRF를 접해보았고, 여태 Spring Boot로 개발 해온 입장으로서 익숙하지 않았던 부분이 많았다. 하지만 꽤 많은 삽질(?)과 노력 덕분에 어느 정도 익숙해지는 시점에서 회사 업무 이외의 개발의 필요성을 느꼈다.

사실 이전부터 실 사용자를 모아서 운영할 수 있는 프로젝트를 개발하고 싶었다. 어떻게 하면 실 사용자를 모을 수 있을까라는 생각에서 시작했던 것이 지금의 아이디어이다. 나는 2022년 하반기부터 총 130명의 부원들이 활동 중인 클라이밍 연합 동아리에서 활동 중이다. 동아리 활동을 통해 다양한 배경의 좋은 인연들을 만날 수 있었고, 따라서 동아리에 큰 애착이 생겨 운영진 활동까지 하게 되었다. 운영진 활동을 하며 모든 부원들의 출석을 수기로 작성하는 부분과 매 학기 개최하는 대회 활동 또한 수기로 관리하는 불편함이 있었다. 따라서 이런 니즈를 모두 충족할 수 있는 서비스를 만들면 재밌을 것 같았다.

또한 해당 프로젝트의 모든 과정을 기록으로 남길 것이다. 모든 과정을 끝마치고 더욱 의미있는 회고를 할 수 있을 것 같기 때문이다.

🎯 프로젝트 목표

사이드 프로젝트의 목표는 크게 두 가지이다.

DRF 깊이 파보기

사실 깊이 파본다는 말이 모호할 수 있다. 나의 목표는 내가 구현 하고자 하는 기능 생각 없이 구현만 하는 것을 지양할 것이다. 하나의 api를 만들더라도 더 나은 방법이 있는지에 대한 고민과 동작 방식에 대한 이해를 할 것이다.

실사용자를 모아서 운영 해보기

약 130명의 동아리 부원들에게 서비스의 사용을 맡기고, 학기마다 피드백을 받아 더욱 개선된 서비스로 발전시킬 예정이다. 이러한 서비스 운영 과정에서는 개발 이상의 무엇인가를 배울 수 있을 것이다.

🚩 개발에 들어가기 앞서

프로젝트 팀 빌딩 및 역할 분담

프로젝트를 해야겠다는 결심 이후에 무작정 동아리 잡담방에 같이할 팀원을 모으는 글을 작성했다. 1인 개발보다 팀을 꾸려서 진행하면 동기부여도 되고 쉽게 포기하기 어려울 것 같았다. 다행히 동아리에 it관련 학과 재학 중이거나 관심이 있는 친구들이 몇몇 있었다. 백엔드 팀원은 나 포함하여 두명으로 정해진 상태여서 프론트를 구현해줄 팀원과 디자인을 맡아줄 팀원을 구하는 것이 목적이였지만, 애석하게 디자인 지원자가 없었다. 이에 따라 기획과 더불어 디자인 또한 내가 하게 됐다. 진정한 풀스택의 길로...😢

조금 불안한 점은 프론트를 같이 하기로 한 팀원들이 개발 경험이 있더라도 클라이언트, 서버 개발이 아닌 다른 분야로 코딩을 접했다는 사실이다. 만약 개발을 하다 포기할 것을 대비하여 앱과 웹(Flutter, Vue.js) 이렇게 두개의 플랫폼으로 구현하려고 한다. 하나의 플랫폼에서 구현을 포기하더라도 끝까지 만들어 운영을 할 목적으로 말이다.

따라서 현재의 상황은 다음과 같다. 백엔드 팀원은 2명, 앱과 웹 또한 각각 2명씩 맡고 있다. 여기에서 나는 추가적으로 기획과 디자인을 맡게 됐다.

요구사항 정의 및 기능 명세

개발에 집중하기 위해 최소한의 기획만 할 것이다. 우선 화면 설계에 앞서 서비스에 포함돼야 할 기능을 구상했다. 이 과정에서 다른 동아리 부원 및 운영진들의 요구 사항을 구두로 파악 후 반영했다.

출석 체크 기능

서비스의 메인 기능이다. 프로젝트 아이디어도 출석 체크에서 시작했기 때문이다. 출석 현황에 따라 동아리에서 강제 탈퇴를 당할 수도 있기 때문에 가장 중요한 기능이기도 하다. 기수별로 출석을 다르게 인정한다. 새로운 기수와 직전의 기수는 80%의 출석을 해야 다음 기수 활동을 할 수 있다. 또한 지각 3번은 결석 1회이고, 본인의 암장(총 네 곳의 암장에서 활동 중이고 각자 메인 암장이 있다.)이 아닌 다른 지점의 암장에서 대체 출석은 학기 별 2번까지 가능하다. 직전 기수 더 이전 기수들은 OB 부원들이고, 이 부원들은 한 학기에 한 번만 출석을 하면 된다. 현재의 출석 시스템을 서비스의 기능 형태로 개발할 것이다.

기록 및 랭킹 기능

동아리 활동을 좀 더 적극적으로 할 수 있게 장려하고 재미를 위해 구상한 기능이다. 우리 동아리는 주마다 활동을 한다. 메인 암장이 아닌 다른 지점 암장에서도 자유롭게 활동이 가능하다. 각자 동아리 활동 중에 성공한 볼더링 문제를 기록하여 운동 현황을 쉽게 파악하면서, 기록을 바탕으로 주간과 전체 랭킹을 보여주면 적극적인 동아리 활동 장려와 서비스 사용성을 높일 수 있을 것 같아 구상한 기능이다.

대회 관리 기능

우리 동아리는 매 학기 암장을 대관하여 대회를 진행한다. 대회의 모든 진행은 수기로 진행한다. 대회의 규칙 및 부원들의 해결한 문제 난이도와 개수 또한 수기로 작성한다. 운영진을 해본 입장으로서 대회 준비를 위해 점수판 및 규칙을 일일히 작성하는 것과 대회 종료 후 점수를 집계하는 일은 여간 귀찮은 일이 아닐 수 없다. 따라서 서비스의 기능에 포함하여 좀 더 편하게 대회를 진행하는 것을 목표로 한다.

마치며

이번 글에서는 프로젝트 초기 기획 단계의 개요 및 구상했던 것들을 정리해보았다. 다음 글은 요구사항에 맞춰 화면 설계와 디자인에 대해 다뤄보겠다.

profile
안녕하세요! 질문과 피드백은 언제든지 환영입니다:)

0개의 댓글