이 글은 3월 1일부터 시작하여 6월 20일에 마무리한 캡스톤 프로젝트 FitTrip에 대한 회고 글입니다.
FitTrip이란?
캡스톤 프로젝트 팀명을 의미합니다.
프로젝트 취지
현대 사회에서 건강과 체력에 대한 관심이 지속적으로 증가함에 따라 헬스 중심의 커뮤니티 플랫폼을 제작하여 헬스와 운동에 진심인 사람들의 소통과 성장을 돕는 공간을 만들고자 기획하게 되었습니다.
3월 프로젝트 시작
3월에는 그라운드 룰, 프로젝트 주제, 아키텍처, 구현 기능 목록 정리, ERD 설계, API 설계 등등 구현보다는 팀 규칙과 설계와 관련해서 팀원들과 많은 얘기를 나눴습니다.
위 이야기들을 전부 다 얘기하면 회고가 끝나지 않을 거 같아 회고 글 이후 따로 관련 글을 작성하려 합니다.
주제
프로젝트 주제를 선정함에 있어 여러 많은 아이디어들이 나왔습니다.
자기가 본 영화를 토대로 추천 시스템, 온라인 마켓(마감임박 물품 판매) 등등
저는 팀원들에게 "클론 프로젝트 하자! "라고 주장했고 이유에 대해 일장연설 하여 팀원들을 설득시켰습니다.
(물리가 아닌 논리로....)
프로젝트를 많이 해보진 않았지만 항상 프로젝트 기획 단계에 있어 많은 시간이 걸렸던 게 생각이 났습니다.
팀원들 모두 학생이고 각자 일정이 있어 시간상의 한계가 존재했습니다.
그래서 기획보다는 기술적인 부분에 시간을 더 투자하고 싶어 클론 프로젝트를 주장했습니다.
여러 플랫폼들 중에서 채팅, 영상 통화, 커뮤니티, 알림 등 팀원들 모두 관심 있어하는 분야가 하나씩 있고
다들 친숙한 플랫폼인 디스코드를 클론 주제로 선정했습니다.
하지만 진행 중인 프로젝트 기반이 캡스톤 프로젝트이기에 주요 기능들은
디스코드 기능들을 클론 하지만 프로젝트에 대한 컨셉을 잡기로 했습니다.(아무튼 다른 플랫폼!)
아키텍처
다음으로는 아키텍처 설계입니다.
아키텍처란 시스템의 구조, 동작 등을 정의하는 개념적인 모형으로 시스템의 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용 하는지, 정보가 어떻게 교환되는 지를 설명한다.
쉽게 말해 전체 시스템을 어떻게 구성할 건지를 정합니다.
저희 팀의 아키텍처입니다.
앞서 말했던 기술적인 부분에 더 집중하고 싶어 클론 프로젝트를 하기로 정했다고 얘기했는데요
저희 팀은 기술적인 도전으로 MSA 아키텍처를 도입하기로 결정했습니다.(취업을 위해!)
디스코드 기능을 분석하면서 어떤 구성요소가 있는지 파악하고
구성이 비슷한 거 끼리 묶어서 서비스들을 구성했습니다.
처음부터 서비스들을 작게 작게 나누기보다는 우선은 크게 크게 서비스들을 나누고
거기서 세분화하는 방식으로 서비스들을 구성했습니다.
각 서비스마다 자세한 구성 요소는 오히려 가독성을 헤치므로, 전체 아키텍처에선 간소화했습니다.
4월 개발 시작
4월에는 본격적으로 개발에 들어갔습니다.
3월에 정리한 구현 기능 목록에 우선순위를 부여하고 WBS 개발 부분에 해당 내용을 작성했습니다.
https://docs.google.com/spreadsheets/d/1HnKuEM9c5lz9G--m5OECT2FyX4u4f7yR8ZtfOYjG-yc/edit?gid=0#gid=0
WBS를 보니 중간고사 전까지는 굉장히 개발에 몰두한 기억이 나네요
나름 체계를 잡고 시작하니 개발에만 집중할 수 있어서 좋았습니다.
이전 프로젝트들에서는 항상 구현하기에만 급급했는데 이번에는 차근차근 로직을 설계하고
설계한 내용을 바탕으로 개발하니 더 효율이 좋다고 느꼈습니다. 😊
기술 세미나
프로젝트에서 공통적으로 사용되는 부분인 MSA와 카프카에 대한 팀 내 기술 세미나를 열었습니다. 👏
4월 1일에는 팀원 한분이 MSA 세미나를 했고 4월 8일에는 제가 카프카 세미나를 진행했습니다.
세미나를 계획하게 된 취지는 낯선 MSA와 카프카에 대해 팀원분들과 같이 공감하고 떠들고 학습을 해보자!
싶어서 세미나를 계획하게 되었습니다. 😁
카프카 기초와 Consumer에 대해 발표했습니다.
다소 재미없는(?) 세미나였지만, 카프카는 이렇게 작동하는구나! 를 공부해서 공유했습니다.
무엇보다! 좋았던 건
팀원 분들께 발표하기 위해 자료를 만들면서
다시 한번 개념을 점검할 수 있어서 좋았습니다. 😁
여러분도 꼭, 팀 내에서 기술 세미나를 진행해 보시는 걸 추천드려요!
중간 회고
중간고사가 끝나고 4월 29일에 간단하게 정기회의를 가졌습니다.
이날 팀원들끼리 그동안 프로젝트 진행에 대한 회고와 진행정도
그리고 앞으로의 일정에 대해 얘기를 나누는 시간을 가졌습니다.
캡스톤 프로젝트를 하기 전 겨울방학 동안 다른 프로젝트에 몰두하다가
프로젝트가 끝나고 바로 캡스톤 프로젝트를 진행하게 되었습니다.
그러다 보니 리프레쉬할 시간 없이(개발자는 그런 거 없다...?)
바로 프로젝트를 이어서 하다 보니 3,4월에
프로젝트에 완전히 집중하지 못했던 점이 아쉽게 느꼈습니다.
중간고사 기간에는 프로젝트를 중단하기로 해서
이때 리프레쉬 시간을 가질 수 있었습니다.(?)
남은 시간을 계산하니 5주 정도의 시간이 남아
5주 동안 진행할 주차별 스프린트를 계획하고 일정을 공유했습니다.
5월 본격 개발
5월에도 개발에 몰두했습니다.
채팅 서비스에서의 기능인 서버, 포럼, DM 채팅 파일 업로드, 채팅 타이핑 등등 구현했습니다.
상태관리 서비스에서는 유저의 상태관리와 해당 상태 정보를 불러오는 api 등등 구현했습니다.
서비스 간 연동
모놀리식이라면 각자 맡은 서비스에 대해 개발을 하면 되지만
현재 프로젝트는 MSA라서 서비스간 연동 작업에도 신경을 써야 했습니다.
GCP 서버에 배포하기 전 로컬에서 서비스 간 연동이 잘되는지
테스트하기 위해 docker-compose.yml을 작성하여 여러 도커 컨테이너를 묶었습니다.
여러 도커 컨테이너를 띄우다 보니 노트북이 굉장히 버벅거린 기억이 나네요 😂
6월 최종 마무리를 위하여
프런트와 백엔드 간의 연동에 있어서 많은 버그가 발생했지만 그래도 동작은 하네요! 😂
프런트 쪽에서 500 오류 발생했다고 하면 부랴부랴 로그 보면서 수정 작업을 했던 게 생각이 나네요
그리고 4일에 시험이 있어서 시험 공부하면서 프로젝트하다 보니 정말 정신이 나갈 뻔했습니다. 😂
여러모로 6월은 정말 정신이 없었습니다.
6월에는 아직 못다 한 기능을 구현하는데 집중했습니다.
계획한 기능은 거의 끝내 주로 프론트와의 연동 작업 시
발생한 오류를 잡는데 신경을 많이 썼습니다.
팀원 중 한 분이 배포를 담당하셨는데 많은 고생을 해서 고맙다는 생각이 듭니다.
프로젝트가 끝나도 7월에 추가로 작업을 하기로 해서 2차 배포는 제가 맡기로 했는데
벌써부터 행복하네요(?) 😂
나름 팀장을 맡으면서, 모범이 되려고 노력했습니다.
나이도 많고, 경험도 아주 조금 있고
그래서 어떻게 프로젝트를 진행하면 좋을까 어떤 태도를 가지고 프로젝트에 임해야 할까 등 많은 생각을 했던 거 같습니다.
여태까지 겪었던 경험과 배웠던 내용들 중 도움 될만한 부분을
팀원들에게 간접적으로 알려주려고 노력했습니다.
이번 프로젝트를 통해 한 발짝 더 나아가고 조금이나마 도움이 됐으면 하는 바람입니다.
'프로젝트 > FitTrip' 카테고리의 다른 글
트러블 슈팅 - 채팅 서비스 scalue out 문제 (0) | 2024.06.27 |
---|---|
개발 기록 - 개발 언어 및 기반 기술 조사 (0) | 2024.06.27 |
개발 기록 - 프로젝트 공통 작업 설정 (0) | 2024.06.27 |
개발 기록 - MSA에서 EDA 설계하기 (0) | 2024.06.26 |
개발 기록 - 그라운드 룰 (0) | 2024.06.25 |