이번 프로젝트에서 Monew 서비스를 개발했다. Monew는 여러 뉴스 출처를 통합해 사용자에게 관심사 기반 뉴스를 제공하고, 댓글과 좋아요를 통해 소통할 수 있는 뉴스 플랫폼이다. 사용자는 관심사를 구독할 수 있고, 구독한 관심사와 관련된 뉴스 기사가 등록되면 알림을 받을 수 있다.
프로젝트의 주요 기능은 사용자 관리, 관심사 관리, 뉴스 기사 관리, 댓글 관리, 활동 내역 관리, 알림 관리이다.
이 중 뉴스 기사 도메인에서 뉴스 기사 목록 조회, 커서 페이지네이션, 조회 이력, 논리/물리 삭제, S3 기반 백업 및 복구 기능이 핵심 요구사항이다. 뉴스 기사 백업은 데이터 유실에 대비하기 위한 기능이며, 날짜 단위로 S3에 백업하고 DB와 비교해 누락된 기사를 복구하는 방식이다.
팀 프로젝트는 GitHub, Notion, Discord로 소통하며 진행했다. 프로젝트 초기에 협업 방식, 회의 방식, R&R, 문서화 방식, branch 전략, PR 규칙 등을 먼저 정리했고, 평일 오전 10시마다 정기 회의를 진행해 어제 작업한 내용과 오늘 작업한 내용을 공유했다.
이번 프로젝트에서 나는 팀장 역할과 뉴스 기사 조회, 삭제, 뷰 등록, 백업/복구 기능, CI/CD, AWS 운영 환경 관리를 담당했다.
Discord, Notion, GitHub를 협업 도구로 정했고, 프로젝트 간 회의록 작성 방식, 코드/commit/PR 컨벤션, 정기 회의 시간을 정했다. 이후 주어진 가이드를 바탕으로 요구사항 정의서를 작성했고, 작성한 요구사항 정의서를 바탕으로 역할 분담(R&R)을 나누고, ERD, SQL, GitHub Todo Issue 카드를 작성했다.
또한 패키지 구조는 도메인 중심으로 구성하는 것을 제안했다. 해당 프로젝트는 사용자, 뉴스 기사, 관심사, 댓글 알림처럼 도메인이 명확했기 때문에 각각의 도메인 아래에 Controller, Service, Repository, Dto, Entity 등의 계층을 두는 것이 독립적인 구현과 유지보수에 도움이 된다고 판단했다.