최적의 기기조합 웹 서비스 UMC 9th Project - Server Repository
이 저장소는 Device Life의 API 서버 및 데이터베이스를 관리합니다. 기기 데이터 관리, 조합 저장 로직, 그리고 핵심 기능인 '실시간 호환성 평가 알고리즘' 처리를 담당합니다.
- RESTful API 설계: 클라이언트와 데이터를 주고받기 위한 명세 기반 API 구현
- 평가 알고리즘 로직: 기기 조합에 따른 연동성, 편의성, 라이프스타일 산식 구현
- 데이터베이스 구축: 스마트폰, 노트북, 태블릿 등 8개의 카테고리에 대한 방대한 기기 정보 및 브랜드 데이터 모델링
- 사용자 데이터 관리: 유저별 조합 저장, 즐겨찾기, 휴지통(Soft Delete) 기능 처리
- 라이프스타일 가중치: 사용자 입력 데이터에 따라 평가 점수를 보정하는 로직 처리
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 박은서 @weeeeestern |
남성현 @nsh0919 |
이태훈 @LABYRINTH3 |
채정원 @ccjngwn |
| Backend Lead | Backend | Backend | Backend |
| 온보딩, 조합 평가 로직, 시스템 설계 및 배포 | 인증, 조합 평가 로직, 배포 및 CICD | 기기 데이터 크롤링, 조합 관리, 휴지통 | 이미지 데이터 크롤링, 고객 지원 콘텐츠 |
💡 핵심 아키텍처 포인트 (Key Architecture Decisions)
1. 비동기/이벤트 기반 아키텍처 (Event-Driven Architecture with SQS)
- 도입 배경: 디바이스 호환성 평가 알고리즘은 복잡한 연산을 포함하고 있어, 동기 처리 시 API 응답 속도 저하와 타임아웃 위험이 있었습니다.
- 해결: AWS SQS를 도입하여 평가 작업을 큐(Queue)로 분리하고, 별도의 Worker 서버가 이를 비동기로 처리하도록 설계했습니다. 이를 통해 API 서버의 부하를 격리하고 트래픽 급증 시에도 안정적인 사용자 경험을 보장합니다.
- 👉 Evaluation Worker Repository
2. Tailscale 기반의 제로 트러스트 보안망 (Secure Internal Network)
- 도입 배경: 클라우드(AWS EC2)와 온프레미스/별도 VM(Worker) 간의 통신을 위해 공용 인터넷망에 포트를 개방하는 것은 보안상 취약점이 될 수 있었습니다.
- 해결: Tailscale VPN을 활용하여 외부망과 격리된 **암호화 사설망(Overlay Network)**을 구축했습니다. Backend(8080 포트)를 Public IP로 개방하지 않고도 안전하게 Worker와 통신할 수 있는 강력한 보안 환경을 구성했습니다.
3. Discord 기반의 ChatOps 환경 구축 (Server-side Admin Console via Discord)
- 도입 배경: 프로젝트 초기 단계에서 별도의 웹 기반 Admin(관리자) 페이지를 구축하는 것은 개발 리소스 낭비가 큽니다. 하지만 팀원들이 '추천 세트' 데이터를 조회하고 수정할 수 있는 공통의 운영 도구가 절실했습니다.
- 해결: Spring Boot 애플리케이션 내부에 JDA(Java Discord API)를 내장하여, Discord를 실시간 운영 콘솔(Ops Console)로 변모시켰습니다.
- Slash Command 활용:
/device-search(기기 조회),/featured-set(추천 세트 등록) 등의 명령어를 통해 DB에 직접 접근하여 운영 데이터를 제어합니다.- 운영 효율성: 프론트엔드 개발 없이도 운영팀(팀원)이 Discord 채널에서 실시간으로 데이터를 검증(QA)하고, Role 기반 권한 관리를 통해 안전하게 운영 액션을 수행하는 ChatOps 환경을 구현했습니다.
- main: 최종적으로 사용자에게 배포되는 가장 안정적인 버전 브랜치
- feature: 기능 개발용 브랜치. main에서 분기하여 작업
- 작업 시작 전, 항상 최신 main 내용 받아오기 (git pull origin main)
- 작업 완료 후, main으로 Pull Request(PR) 생성
- 리뷰 필료한 PR은 Reviewer 설정
- 브랜치 이름 형식: feat/기능명
- 예시: feat/combination-api
PR/ISSUE 제목 형식: [Feat] 로그인 api 개발
| type | 설명 |
|---|---|
Feat |
새로운 기능을 추가할 경우 |
Fix |
버그를 고친 경우 |
Hotfix |
급하게 치명적인 버그를 고쳐야하는 경우 |
Style |
코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 |
Refactor |
프로덕션 코드 리팩토링 |
Comment |
필요한 주석 추가 및 변경 |
Docs |
문서를 수정한 경우 |
Test |
테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X) |
CI |
CICD 관련 작업 |
Config |
설정 파일 작성 및 수정 |
Security |
권한 수정 |
Chore |
빌드 태스트 업데이트, 패키지 매니저를 설정하는 경우(프로덕션 코드 변경 X) |
Rename |
파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 |
Remove |
파일을 삭제하는 작업만 수행한 경우 |





