모노산달로스의 행보

[SideProject] 나의 학교를 위한 서비스 개발기록 / 문제 인식 및 기획 - (1/3) 본문

Side Project/기룡아 밥 먹자

[SideProject] 나의 학교를 위한 서비스 개발기록 / 문제 인식 및 기획 - (1/3)

모노산달로스 2024. 10. 3. 23:01

SideProject - 기룡아 밥 먹자

 

 

개발자들은 왜 사이드 프로젝트에 뛰어들까요? 일반 팀 프로젝트와 다르게 자신이 원하는 서비스를 만들어 볼 수 있다는 점이 큽니다. 또한 자유롭게 새로운 기술을 적용해 보거나 경험하면서 실력을 키우기에도 좋습니다. 실제로 수익을 목적으로 하는 팀 프로젝트와 다르게 가볍게 접근할 수 있다는 점도 한 이유로서, 많은 개발자들이 사이드 프로젝트를 수행하고 있습니다.

 

 

 

(1/3) 문제 인식 및 프로젝트 기획

(2/3) 기술적인 이슈 해결

(3/3) 프로젝트 회고

 

 

1. 문제 인식

많은 대학생이 사용하는 에브리타임 앱

 

당시 앱 개발에서 서버 개발로 넘어가기 위해 고군분투 중인 상황이었습니다. 그러다 스프링으로 기본적인 REST API를 구현할 수 있을 때 즈음, 프로젝트를 진행하며 공부를 진행하고 싶었습니다. 큰 프로젝트에 본격적으로 투입되기 전 사이드 프로젝트를 통해 step-up 하려는 계획이었습니다.

 

사이드 프로젝트 주제로는 무엇이 적절할까요? 사실 사이드 프로젝트로 항상 만들고 싶었던 주제가 있었습니다. 그것은 바로 교내의 식당 정보를 한 곳에 취합하는 것입니다.

 

기존 시스템의 문제는 다음과 같았습니다. 첫 번째는 산재되어 있는 부정확한 정보입니다. 학생들이 주로 에브리타임 앱을 통해서 식당 정보를 확인하는 경우가 많았습니다. 하지만 게시판 검색을 통해서 원하는 정보를 찾기란 매우 번거로운 일입니다. 심지어 부정확한 정보가 있는 경우도 많았습니다.

 

두 번째는 식당에 대한 반응 확인 수단이 없습니다. 많은 식당이 존재하지만 어떠한 메뉴가 인기가 많은지, 어느 식당을 사람들이 많이 찾는지 확인하는 것은 매우 힘들었습니다.

 

학교 홈페이지에 일부 식당 정보가 존재하기는 했지만 완전하지 않았습니다. 또한 접근성이 떨어져 사용자들이 쉽게 사용하기 좋은 에브리타임 앱에 의존하게 되는 경향도 있었습니다.

 

 

2. 프로젝트 기획

이제 이 간단한 문제를 해결해봅시다

 

따라서 이 두 가지 문제점을 해결하는 웹앱을 개발하기로 결정했습니다. 한 곳에서 교내의 모든 식당 정보를 확인하고, 리뷰 시스템을 추가하여 메뉴에 대한 반응을 확인할 수 있도록 기획했습니다. 여기에 매주 바뀌는 기숙사 식단 정보를 추가하여 교내의 '식사'와 관련된 모든 정보를 한 곳에 모으고자 했습니다.

 

본래 아이템 결정을 위해서는 철저한 시장조사와 기획을 거쳐야 합니다. 하지만 사이드 프로젝트 특성상 복잡한 기획 없이 곧바로 작업에 착수하게 되었습니다.

 

최종적인 목적은 아래와 같았습니다.

1. 프로젝트를 통해 교내에 존재하는 작은 문제를 해결
2. 배포 및 실 서비스 경험
3. 서버 개발자로서 프로젝트 참여

 

 

학교 마스코트 기룡이

 

얼마 뒤 3인 팀이 꾸려졌습니다. 본인은 서버 개발자로 작업에 참여하고 간단한 React 작업을 돕기로 하였습니다. 그리고 프로젝트 이름 은은 우연히 '기룡아 밥 먹자'로 정해졌습니다. 학교 마스코트의 이름인 기룡이를 프로젝트 디자인에 사용하기로 결정했습니다.

 

 

3. 초기 작업 과정

 

이후 디자인을 좋아하는 프런트 개발자와 함께 UI/UX 작업을 시작했습니다. 특히 모바일 사용자가 많을 것으로 가설을 세웠기 때문에 반응형 디자인에 대해 고심하는 과정을 겪었습니다.

 

0123

 

개발 문화와 관련해서도 꼭 수행하고 싶었던 것이 있습니다. 바로 '코드 리뷰' 문화입니다. 코드 리뷰의 필요성을 느낀 경험은 두 가지가 존재했습니다.

 

하나는 스터디 프로젝트에서 팀원과 코드 리뷰를 진행했을 때 빠르게 성장했었던 경험이 있었습니다. 새로운 기술을 처음 사용해 보는 입장에서 큰 도움이 되었습니다.

 

둘째는 코드 리뷰 없이 머지되어 예기치 못한 에러를 마주한 경험이 있습니다. 서로가 맡은 파트는 명확히 인지하고 있지만, 유기적으로 연결되는 코드 혹은 다른 팀원의 코드를 건드리는 경우가 생길 수 있습니다. 이 경우 곧바로 머지하게 되면 뜻밖의 변화와 에러로 인해 팀원들이 당황하게 되는 경우가 존재했습니다.

 

이러한 이유 때문에 앞으로 프로젝트를 진행하면 꼭 서로의 코드를 리뷰하도록 하고 싶었습니다.

 

 

4. 기술적인 이슈

기숙사 홈페이지에서 확인 가능한 식단 정보

 

작은 프로젝트였지만 기술적으로 고민을 해보아야 하는 부분이 존재했습니다. 바로 매주 갱신되는 기숙사 식단 정보였습니다. 여기서 발생하는 두 가지 의문점을 해결해야 했습니다.

1. 어떻게 하면 식단 정보를 매 주 자동으로 스크랩할 수 있을까?
2. 스크랩을 한 정보를 데이터 베이스에 어떻게 자동으로 업로드할 수 있을까?

 

한 가지 아이디어는 RPA를 사용하는 것입니다. RPA란 특정 작업을 자동화하기 위해 사용하는 도구입니다. 이전에 특정 웹사이트에 접근하여 데이터를 엑셀 형태로 반환해 본 경험이 있어 이번에도 활용이 가능할 것이라고 생각했습니다. 심지어 Ui Path는 AWS와 연동이 가능했기 때문에 두 가지 문제를 동시에 해결해 볼 수 있을 것이라는 생각이 들었습니다.

 

사용자가 가장 많은 RPA 도구인 Ui Path

 

하지만 장기적으로 보았을 때 이는 해결법이 될 수 없었습니다. Ui Path 60일 무료 체험 기간이 끝나면 결국 비용을 지불해야 하기 때문입니다.

 

그렇게 고민하던 중 다음과 같은 시나리오를 세웠습니다. Python을 통해 직접 크롤링을 진행하자 그리고 CI/CD Pipeline을 구성하면 매주 자동으로 데이터를 갱신하도록 할 수 있지 않을까?

 

결론적으로 크롤링배포 그리고 CI/CD에 대한 지식이 부족했습니다. 처음에는 당황했지만 이내 좋은 기회라는 생각이 들었습니다. 이러한 문제를 해결하면서 새로운 지식을 습득해보고자 했습니다. 조금의 시간이 지나고, 마침내 아래와 같이 공부해야 하는 내용을 정리할 수 있었습니다.

 

1. Jenkins를 통한 CI/CD pipeline 구축
2. AWS를 통한 배포 과정
3. Python을 통한 크롤링

 

 

(2/3) 기술적인 이슈 해결에서 계속됩니다.