프로젝트 기획
최종프로젝트는 이전 1~3차 프로젝트와 다르게 백엔드과정 교육생과 프론트엔드 과정 교육생들이
한팀을 이뤄 프로젝트를 진행했다.
팀을 모집하는 것 부터 아이디어를 기획하고 실제 개발이 들어가는것도 모두 자발적으로 진행됐다.
아이디어 기획
이번 프로젝트의 핵심 아이디어는 블라인드 입찰이었다.
이미 많은 사람들이 이용하고 있는 동네기반 중고거래 플랫폼인 당근에
블라인드 입찰 요소를 추가한 서비스를 기획했다.
일반적으로 더 이상 높은 금액으로 입찰을 원하는 입찰자가 존재하지 않을때까지
계속 진행되는 경매 방식과 다르게
우리 서비스는 마감기한이 존재하고 해당 마감기한이 끝났을 때
가장 높은가격으로 입찰한 구매희망자와 판매자를 연결해주는 방식으로 기획했다.
프로젝트 시작
프로젝트 마감 기한까지 남은 시간은 대략 한달정도 되었다.
최종 프로젝트가 가장 중요한 과정이었지만 커리큘럼상 시간이 한달뿐이여서 아쉬움이 있었다.
그래도 프론트엔드와 백엔드를 모두 개발했던 2,3차 프로젝트와 비교하면
백엔드에만 신경쓰면 됐기에 한달동안 최대한 많은 작업을 진행하기로 했다.
또 팀원분이 디자이너분을 구해주셔서 프론트엔드, 백엔드, 디자이너 까지 모두 협업하는 첫 프로젝트가 됐다.
변경된 백엔드 구조
이전 프로젝트까지는 모놀리틱 단일 모듈 구조로 개발을 했다.
빠르게 개발할 수 있다는 장점이 있지만, 특정 기술에 의존성이 강하고 도메인간의 분리가 명확하지않아 유지보수는
좋지않은 구조였다.
이번 프로젝트는 단순 개발에서 끝나는게 아닌 플레이스토어에 출시후 운영 계획도 있었고,
추후 관리자가 필수적으로 필요해 별도의 관리자 API를 구현해야 하는 상황이었다.
따라서 이번 프로젝트에서는 확장성과 유지보수를 위해 멀티모듈구조를 적용하기로 했다.
작업한 내용
채팅
이번 프로젝트에서는 채팅과 입찰을 맡았다.
먼저 채팅을 구현할때는 웹소켓을 이용한 실시간 통신을 구현해본적이 없었고 멀티모듈 또한 처음으로 적용해본 구조여서
우선 익숙한 모놀리틱 단일모듈 구조로 따로 프로젝트를 생성해서 해당 프로젝트에서 채팅을 구현해봤다.
이후 멀티모듈로 작성된 프로젝트에 단일 모듈로 구현한 프로젝트를 적용시켰다.


채팅은 기본적으로 STOMP와 MongoDB, 그리고 Redis를 이용해서 구현했다.
기본적으로 채팅은 읽기와 쓰기가 굉장히 빈번히 읽어나고 그렇기에 속도가 빠른 NoSQL DB인 MongoDB를 사용했다.
또한 채팅 상대방의 채팅방 접속 기록을 추적하기 위해 Redis를 사용하였다.
해당 접속 기록은 FCM 발송 유무를 결정하는 로직에 사용되었다.
읽지않은 메시지의 개수를 표시하는 기능은 MVP로 분류하여 개발하였고,
상대방이 메시지를 읽었는지 보여주는 기능은 추후 고도화로 분류하여 개발이 필요한 상태이다.
입찰


입찰파트는 크게 입찰, 입찰 수정, 입찰 취소가 있었다.
입찰은 핵심 비지니스 로직이었기 때문에 멱등성과, 동시성 제어등
다양한 요구사항이 있었고 이를 위해서 Redis의 SETNX 와 TTL을 이용하여 구현하였다.
그 외에 경매 마감 시각을 기준으로 낙찰자를 선정하고, 낙찰자와 판매자를 연결하고
물품의 상태를 변경하는등의 특정 작업들이 이루어져야 했다.
Spring에서 기본적으로 제공하는 스케줄러로는 위의 요구사항과
영구적으로 Job/Trigger를 저장하여 장애시 복구를 할 수 없었기 때문에
Quartz 라이브러리를 이용하여 구현하였다.
느낀점
데브코스를 하면서 가장 많이 성장할 수 있었던 최종프로젝트
프로젝트 기간이 약 1달정도로 짧아 아쉬웠지만 우리 팀은 데브코스가 끝난 이후에도
프로젝트를 계속 진행하여 플레이스토어에 출시하고 실제 서비스 운영해보는것을 목표로 하고 있다.
이번 프로젝트에서 개인적인 챌린지였던 실시간 채팅, Quartz를 이용한 자동 경매 마감,
Redis를 이용한 분산락 구현,
백엔드 팀적인 챌린지였던 멀티모듈 도입
그리고 모 빅테크 기업에서 백엔드 개발자로 근무하시는 시니어 개발자 멘토님의 코드리뷰와
설계 방향성 조언등
정말 배운게 많았던 프로젝트 였다.
운좋게 뛰어난 팀원분들과 함께했고 디자이너분까지 모두 열심히 해주셔서 무사히 마감기한까지 MVP 개발을 마감해서
뿌듯했다.
앞으로 계속 프로젝트를 진행하면서 미흡했던 부분들은 보완하고, 실제 서비스 운영을 통해
다양한 피드백을 반영하고 모니터링 하는 경험을 쌓았으면 좋겠다!
'후기' 카테고리의 다른 글
데브코스 백엔드과정 3차 프로젝트 후기 (2) | 2024.11.14 |
---|---|
데브코스 백엔드과정 2차 프로젝트 후기 (3) | 2024.10.17 |