[2024 SUMMER DEV] 자신의 독서 취향을 온전히 담은 온라인 서재 플랫폼 ‘기록의 서재’, LIB팀
프로젝트 소개
EATceed는 저체중 사용자들이 건강하게 체중을 증가시킬 수 있도록 개인의 회원 정보를 바탕으로 당일 영양소 섭취량 목표를 설정하고 이를 달성할 수 있도록 관리해주는 어플리케이션입니다.
팀원 소개
AOS 홍준 | AOS 근성 | BE 대선 | BE 진혁 |
AI 경준 | AI 성빈 | AI 채원 |
인터뷰
Q. 프로젝트를 하면서 어떤 문제를 겪었나요?
A. EATceed 프로젝트에서 백엔드와 AI 분야가 동일한 Github 레포지토리를 공유하면서, 각기 다른 브랜치로 작업을 진행했습니다. 이 과정에서 스프린트가 끝나고 브랜치를 병합할 때 충돌이 발생하는 문제가 몇 번 있었습니다.
특히 처음 충돌을 해결하려 했을 때는 정말 아찔한 경험이었습니다! 😂 충돌을 해결하는 과정에서 실수로 main 브랜치의 커밋 이력을 AI 브랜치로 pull해버렸고, 이를 수정하는 과정에서 저희 EATceed 레포지토리를 삭제해버렸습니다. 원래는 fork한 레포지토리를 삭제해야 했는데 말이죠. 결국, Github Support와 직접 연락하여 복구하는 경험을 했습니다.
이 경험을 통해 프로젝트를 진행함에 있어서 기능 구현도 중요하지만, Github과 같은 형상 관리 도구에 대한 숙련도도 필요하다는 것을 깨달았습니다.
Q. 프로젝트를 하기 전 후 달라진 점이 있다면?
A. 많은 사람과 함께 협업하는 방법을 배운 것 같습니다. 이번에 8명의 팀원과 같이 스프린트, 회의를 진행하면서 처음에는 의견충돌, 의사소통 전달 및 어수선한 회의 분위기 등의 문제가 있었지만, 스프린트 회고 중 시간이 오래 걸리더라도 다른 분야의 팀원이 이야기할 때 경청하고 질의응답하는 시간을 가지며 해결할 수 있었습니다. 그리고 각각의 분야별로 스프린트 목표를 세우고 공유하는 것뿐만 아니라 서로의 분야가 스프린트 목표 달성률은 어느 정도 되는지, 뭐가 문제인지 CROSS CHECK를 해서 프로젝트 진행을 원활하게 할 수 있었습니다.
Q. 프로젝트를 시작하는 팀에게 전해줄 꿀팁을 말해주세요!
A. 애자일 방식과 스프린트가 프로젝트 진행에 많은 도움이 되었다고 생각합니다. 스프린트 방법을 사용함으로써 기간 안에 설정한 목표를 이루기 위해 더 집중하게 되고, 진행 상황을 주기적으로 점검할 수 있어 좋았습니다. 또한, 스프린트가 끝날 때마다 회고를 통해 잘된 점과 개선할 점을 논의하고 질의응답 시간을 가져 팀의 협업 능력을 높일 수 있었습니다.
Q. Summer Dev 프로젝트에서 개발자로 참여한 경험을 설명해주세요. 어떤 역할을 맡았고, 주요 기술 스택은 어떻게 구성되었나요?
A. 개발집 팀은 AOS 2명과 BE 2명, AI 3명으로 이루어진 팀입니다. 프로젝트는 스프린트를 정해서 진행했고, 매 스프린트 시작 전 파트별로 구현할 기능을 분담했습니다. 스프린트가 끝나면 회고를 통해 진행 상황을 공유하고 개선점을 논의했습니다. 기술 스택은 AOS는 Android Studio, Jetpack Compose, Kotlin을 사용하였고, BE는 Spring, AWS, MariaDB, AI는 FastAPI, PyTorch 등을 사용하였습니다.
Q. 플젝트 개발 중 어려움을 겪은 경험이 있나요? 어떻게 해결했으며, 그 과정에서 얻은 교훈은 무엇인가요?
A. 저(경준)는 Econovation에서 AI 분야에 속해있지만, 이번 프로젝트에서 AI 기능을 최종적으로 배포하기 위해 AI 기능의 API를 구현하는 백엔드 작업을 담당했습니다.
프로젝트를 진행하면서 특히 로직 구성, 특히 예외 처리 부분에서 어려움을 겪었습니다. 하나의 API를 구현하는 데 많은 함수와 기능이 포함되었고, 발생할 수 있는 다양한 상황을 머릿속에서 예측하고 처리하는 것이 처음 백엔드를 경험하는 저에게는 어려웠습니다.
이 어려움을 해결하기 위해 노트 한 장을 준비하여 플로우 차트를 그려 하나씩 상황을 정리해 나갔습니다. 또한, 코드를 구현할 때는 구글링을 활용하여(영어로 검색하는 것을 추천합니다!) 많은 정보를 얻을 수 있었습니다. 이와 비슷하게 Medium 플랫폼을 구독하는 것도 좋다고 생각합니다. Medium을 구독하면 양질의 정보가 있어 도움이 많이 되었습니다.
이렇게 문제를 해결하면서 느낀 점은 생각보다 같은 고민을 하는 사람들이 많다는 것이었고, 이 사람들이 공유해 준 덕분에 문제를 해결할 수 있었습니다. 마찬가지로 나도 발생한 문제에 대해 공유해야겠다고 생각했습니다.
Q. 프로젝트의 기술적인 도전과제나 혁신적인 부분은 무엇이었나요?
A. EATceed 기능중에 하나인 몸무게 수정 알림보내기 입니다. 저희 앱은 살을 건강하게 찌우기 위한 앱임으로 사용자의 현재 무게와 목표무게가 정말 중요합니다. 그렇기 때문에 일정 기간동안 현재 무게, 목표무게를 수정 하지 않은 사용자들에게 알림을 보내 업데이트를 유도하였고 SSE(Server Sent Event) + Qurartz Scheduler를 사용하여 사용자가 몸무게를 수정한지 정확히 7일이 되는날 알림을 보내는 기능을 개발했습니다.
Q. 프로젝트팀 내에서 코드 리뷰 및 테스트 프로세스는 어떻게 이루어졌나요? 코드 품질과 안정성을 유지하기 위해 어떤 노력을 기울었나요?
A. 팀 내에서 코드 리뷰는 감정적 말투를 피하고 코드 자체에 집중하여 개선하자는 취지로 진행합니다. 주로 팀 내 컨벤션을 따르며, “이런 식으로 코드를 작성하면 더 가독성/효율성이 좋아질 것 같은데, 어떻게 생각하시나요?”와 같은 코멘트를 자주 사용합니다. 또한, JACOCO를 사용하여 테스트 커버리지를 측정하여 테스트 작성을 동기부여하였고, 정확한 테스트를 위해 테스트 컨테이너와 LocalStack을 활용해 테스트 환경을 구축하였습니다.
마지막으로, ApplicationContext 캐싱을 이용해 테스트 환경을 개선하였습니다.
Q. 팀 내 협업에서 문제는 없었는지 이야기해주세요.
A. 협업에서 가장 중요한 것은 소통이며, 원활한 소통을 위해서는 대면 회의 참석이 필수라고 생각합니다. 그런데 팀원 수가 많기도 하고, 회의 가능 시간이 한정적이며 유동적인 팀원(바로 저(채원)… 대학원생…)이 있다 보니 대면 회의에서도 전원 참석한 경우가 적은 것 같습니다…ㅠㅠ 회의에 참석하지 못하니, 전달되지 않는 공지사항도 많더라고요. 개인적으로는 타 분야 지식이 매우 부족해서 전체 프로젝트의 진행 상황을 알기 위해선 회의 참여가 더욱 필수적이었는데, 그러지 못한 것 같아 아쉬움이 많이 남습니다. 동시에 개인적인 사정을 많이 고려해주신 팀원분들께도 감사드리고요!
만약 같은 상황에 다시 놓인다면, 1. 비대면 참석을 보다 적극적으로 활용하고, 2. 노션을 체계적으로 관리해볼 것 같습니다. 두 사항 모두 기존에 어느 정도 적용된 부분이지만, 개선되면 더욱 좋겠다는 생각을 했습니다. 만약 비대면으로도 참석이 불가능하다면, 회의록을 잘 숙지하는 것이 중요할텐데요. 현재 노션에는 많은 정보가 산재되어 있어 회의록을 읽다가도 관련된 정보를 찾으러 여러 페이지를 탐색해야 하는 불편함이 있었습니다. 이를 체계화하면 원하는 정보를 바로바로 찾을 수 있을 것 같다는 생각을 했습니다. 웹이나 앱에서 유저 플로우를 고려하는 것처럼요! 나중에 프로젝트를 할 땐 이 부분을 명심하고 개선해보려 합니다!!
지금까지 저체중 사용자들을 위한 건강한 체중 도우미 서비스 ‘EATceed’, 개발집팀의 인터뷰였습니다!