최근 동아리에서 진행한 공공데이터 프로젝트 “따릉잉”을 마무리해 회고록을 작성하려고 한다.
프로젝트 소개
“따릉이”는 서울시에서 시행하는 무인 공공자전거 대여 서비스이다. 따릉이의 사용률은 점점 증가하여 무려 서울시민 3명 중 1명이 사용 중이라고 한다. 하지만 지금의 따릉이는 빌리고 반납하는 서비스만을 제공한다는 점에서 아쉽다고 할 수 있다. 따라서 우리 프로젝트는 어떻게 하면 서울 시민들에게 더 나은 따릉이 서비스를 제공할 수 있을까? 하는 고민에서 시작되었다.
이를 위한 방안으로 아래의 두가지를 생각해보았다.
- 시민들에게 따릉이 커뮤니티를 제공하자.
- 기존의 따릉이 어플의 UI/UX를 개선하자.
이런 고민들 끝에 탄생한 것이 이번에 개발한 “따릉잉”이다. 따릉잉은 따릉이 코스 추천 웹어플리케이션으로, 따릉이가 서울을 대표하는 공공서비스로 오래 지속되기를 바라는 의미를 담아 제작했다.
기능 소개
기능에 대해 간단하게 소개하자면 아래와 같다.
- 홈 화면 / 날씨 화면
- 코스 화면 / 코스 제작 화면 / 코스 상세정보 조회 / 나만의 코스 조회
- 댓글 작성 기능
- 마이페이지
프로젝트 개발 과정
나는 이 프로젝트에 백엔드로 참여했다. 백엔드는 CICD를 통해 서버를 배포하였고, CI에는 Github Actions, CD에는 AWS Elastic Beanstalk를 활용하였다. 그리고 MySQL을 이용하여 DB를 구축했다. 나는 카카오 API 로그인, 마이페이지, 코스 상세정보 조회, 코스 찜하기, 댓글 작성 기능 등을 구현했다.
프로젝트를 통해 느낀 점
프로젝트를 하고 있을 때는 나름 최선을 다하고 있다고 생각했는데 지금 생각해보니 아쉬운 점이 많다.
백엔드로 개발을 한지 좀 오래되기도하였고, 스프링을 사용하여 개발해 본 것은 처음이라 솔직히 정말 정말 힘들었다. 진짜 힘들었다. 간단한 기능 하나를 구현하려고 일주일을 고민하기도, 몇날 며칠 밤을 새기도 해서 마음 고생도 많이 했다. 거의 스프링 입문 강의만 듣고 개발을 한 것이어서 개발 초반에는 Controller의 기능이 무엇인지, 어떤 코드들이 여기에 들어가야하는지 헷갈리기도 했다. 이처럼 프레임워크의 작동 구조가 완전히 정립되지 않은 상태에서 개발을 시작한 것이라 많이 혼란스러웠다.
개발 과정 중 마이페이지에서 카카오 API를 통해 받아온 닉네임을 변경하는 기능과 댓글 작성 기능에 특히 많은 시간이 걸렸다. 처음에 계획할 때는 굉장히 간단한 기능이라 생각하여 빠른 시간에 개발을 끝낼 수 있을 것이라 생각했지만, 코드를 다 작성하였음에도 내가 원하는 방식으로 동작하지 않은 경우가 반복되었다. 이 두 경우 모두 코드 상으로는 별다른 오류가 발생하지 않아서 더욱 무엇이 문제인지 찾기 굉장히 어려웠다.
이 문제들은 내가 코드의 전반적인 구조를 이해하기보다 “닉네임 변경” 혹은 “댓글 작성” 만의 기능에만 집중해서 코드를 작성해서 발생했다. 따라서 이 경험을 통해 개발할 때 지금 바로 구현해야하는 기능에만 집중하기보다는 지금까지 짜둔 코드의 구조를 먼저 이해하고 유기적으로 코드를 작성하는 것이 굉장히 중요하다는 것을 깨달았다. 어떻게 보면 너무 당연한 원리긴 한데, 아무래도 제출 마감이 정해져있다보니 마음이 급해 급하게 코드를 작성했다가 오히려 배로 시간이 걸렸던 것 같다.
5월 10일이 공모전 마감일이라 8일부터 개발하는 친구들끼리 모여 3일 동안 거의 밤을 새며 개발했다. 3일 밤을 새고, 공모전 제출 후 자정 넘어 집 가는 길에는 갑자기 눈물이 나기도 했다. 제출 기한까지 개발을 다 끝내지 못할까봐 너무 불안했고 3일 동안 4-5시간 자면서 체력적으로 많이 힘들어서 그랬던 것 같다. 이를 통해 만약 다음에 프로젝트를 진행한다면, 쉽진 않지만 최대한 마감 기한보다 훨씬 넉넉하게 잡고 개발 해야겠다는 생각을 하게 되었다.
공모전 이후로 약 두달 동안 부족했던 부분들에 대해 추가적으로 개발했다. 이 모든 과정들이 결코 쉬웠다고 할 수는 없지만 그래도 이 프로젝트를 통해 스프링 프레임워크에 대해 많이 이해할 수 있었고 많이 성장할 수 있었다. 또한, 이전에 개발할 때는 항상 개발하는 친구들끼리 기획과 디자인을 했었다. 그래서 이번 프로젝트가 기획과 디자이너와 함께한 첫 프로젝트였는데, 그만큼 더욱 퀄리티 있는 프로젝트를 할 수 있었던 것 같다. 이 경험을 통해 개발을 하는 친구들이 아닌 다른 분야의 사람들과 프로젝트에 대해 서로의 입장을 조율해가는 과정이 굉장히 중요하다는 것을 알게 되었고 소프트웨어 공학 시간에 배운 스크럼이 왜 그렇게 강조되었는지도 알 수 있었다.
마무리
프로젝트를 할 때마다 느끼는 것이지만, 모든 프로젝트는 항상 힘들었다…😇 하지만 그만큼 프로젝트가 끝나면 한단계 더 성장해있는 나를 발견할 수 있는 것 같다. 힘들수록 많이 성장한다…ㅎ 따릉잉 프로젝트 역시 많은 것을 배울 수 있었던 귀중한 경험이었다.
프로젝트는 마무리 되었고, 이번 프로젝트에서 가장 아쉬웠던 것은 역시 내가 스프링에 대해 더 많이 이해하고 있었다면 더 원활하게 개발할 수 있지 않았을까 이기 때문에 당분간은 스프링에 대해 더 깊이있게 공부할 것이다. 스프링에 대해 더 공부해서 많이 알고 있는 상태로 프로젝트를 진행한다면, 그 과정을 통해 또 내가 얼마나 배우고 성장할 수 있을지 기대된다.