Skip to content

'두들(Dodeul)'은 IT 현직자와 취준생 간의 정보 불균형을 해소하고, 심리적 장벽 없이 성장의 기회를 얻을 수 있도록 돕는 1:1 멘토링 매칭 플랫폼입니다.

Notifications You must be signed in to change notification settings

prgrms-aibe-devcourse/AIBE4_Project2_Team4_Dodeul

Repository files navigation

🚪 두들(Dodeul) - 성장의 문을 두드리다

IT 현직자와 취준생 간의 정보 불균형을 해소하고, 심리적 장벽 없이 성장의 기회를 얻을 수 있도록 돕는 1:1 멘토링 매칭 플랫폼입니다.

Java Spring Boot Spring Security MySQL Hibernate QueryDSL Thymeleaf Swagger Gradle

📝 목차 (Table of Contents)

  1. 프로젝트 소개 (About)
  2. 주요 기능 (Key Features)
  3. 기술 스택 (Tech Stack)
  4. 기술적 고도화 및 트러블 슈팅 (Technical Deep Dive)
  5. 협업 전략 및 프로세스 (Collaboration)
  6. 시스템 아키텍처 및 ERD (Architecture)
  7. 시작 가이드 (Getting Started)

🌟 프로젝트 소개 (About)

'두들(Dodeul)'은 IT 취준생들이 겪는 "어떻게 질문해야 할지 모르는 막막함"과 현직자와의 "정보 비대칭"을 해결하기 위해 시작되었습니다.

단순한 매칭을 넘어, 생성형 AI(LLM)를 활용해 멘티의 질문 작성을 돕고, 실시간 채팅을 통해 밀도 높은 멘토링 경험을 제공합니다. 상담 후에는 질의응답이 커뮤니티 데이터로 순환되어 지속 가능한 성장을 돕는 플랫폼을 지향합니다.

  • 개발 기간: 2026.01.05 ~ 2026.01.16 (2주)
  • 개발 인원: 5명 (Backend)

✨ 주요 기능 (Key Features)

1. 🔐 회원 및 보안 (Member & Security)

  • 소셜 로그인: GitHub, Google 연동 (OAuth 2.0)
  • 인증/인가: 세션 기반(JSESSIONID) 인증 및 Role 기반 권한 제어 (RBAC)
  • 온보딩: 멘토/멘티별 맞춤형 프로필 설정 (기술 스택 태그, 활동 가능 시간 등)

2. 🤝 멘토링 매칭 (Matching)

  • 알고리즘 추천: 멘티의 관심사(기술 스택, 직무 등) 기반 최적의 멘토 추천
  • 직접 제안: 원하는 멘토에게 1:1 상담 제안 및 수락 프로세스

3. 📝 AI 기반 상담 신청 (AI Assistance)

  • AI 작문 보조: 키워드만 입력하면 AI가 "멘토가 답변하기 좋은 질문"으로 신청서 초안 자동 생성
  • 신청서 관리: 이력서/포트폴리오 첨부 및 상담 희망 시간 선택

4. 💬 실시간 채팅 (Real-time Chat)

  • 웹소켓 통신: STOMP 기반의 저지연 실시간 1:1 대화
  • 컨텍스트 연동: 채팅방 입장 시 상담 신청서 내용 자동 로드 (문맥 유지)
  • 미디어 전송: 이미지 및 파일 전송 지원, 상담 종료 시 채팅방 동결(Read-Only)

5. 🏘️ 지식 커뮤니티 (Community)

  • Q&A 게시판: 개발 지식 공유 및 멀티미디어(파일) 첨부 지원
  • 리뷰 시스템: 상담 종료 후 멘토 평가 및 신뢰도 지표 반영

⚙️ 기술 스택 (Tech Stack)

Category Tech Stack Description
Language Java 17 LTS 버전 사용
Framework Spring Boot 3.x 웹 애플리케이션 프레임워크
Security Spring Security, OAuth2 세션 기반 인증 및 권한 관리
Database MySQL, Spring Data JPA 관계형 데이터베이스 및 ORM
Query QueryDSL 동적 쿼리 처리 및 Type-Safe 쿼리 작성
Communication WebSocket (STOMP) 실시간 양방향 통신
AI OpenAI API 상담 신청서 자동 생성 (LLM)
Infra AWS S3 대용량 파일 스토리지
Tool Spotless, EditorConfig 코드 품질 관리

🚀 기술적 고도화 및 트러블 슈팅 (Technical Deep Dive)

프로젝트 진행 중 마주한 핵심 기술적 과제와 해결 과정입니다.

1. [Security] 세션 기반 소셜 로그인 통합

문제: 기존 폼 로그인과 OAuth2 로그인이 공존하며, 역할(Role)에 따른 엄격한 접근 제어가 필요함.

  • 해결: DefaultOAuth2UserService를 커스텀하여 소셜 제공자(GitHub, Google)별 속성을 표준화하고 DB와 매핑했습니다. 또한 Spring Security의 FilterChain을 세분화하고 커스텀 AuthenticationEntryPoint를 구현하여 비인가 접근을 체계적으로 핸들링했습니다.

2. [QueryDSL] 동적 쿼리 최적화 및 N+1 문제 해결

문제: 멘토 검색 시 복합 조건(기술 스택, 분야 등) 처리가 복잡하고, 연관 엔티티 조회 시 N+1 문제 발생.

  • 해결: BooleanExpression을 활용한 동적 쿼리(BooleanBuilder) 패턴을 적용하여 유연성을 확보했습니다. 조회 시에는 DTO Projection을 적용해 불필요한 데이터 조회를 방지하고 API 응답 속도를 개선했습니다. 커뮤니티 게시글 조회 시에는 Fetch Join을 적용해 쿼리 수를 획기적으로 줄였습니다.

3. [WebSocket] 채팅 보안 및 전송 최적화

문제: 웹소켓 패킷 변조(ID 사칭) 위험 및 대용량 파일 전송 시 브로커 부하 발생.

  • 해결 (보안): 클라이언트 헤더의 ID를 신뢰하지 않고, Spring Security Principal 객체에서 서버가 인증한 사용자 ID를 강제 주입하여 위조를 원천 차단했습니다.
  • 해결 (성능): Hybrid Architecture를 도입하여 파일은 HTTP(POST)로 S3에 업로드하고, 웹소켓으로는 URL만 전송하여 브로커 부하를 최소화했습니다.

4. [AI] LLM 응답 지연 및 품질 개선

문제: 외부 AI API 호출 시 응답 지연과 일반적인 텍스트 생성으로 인한 퀄리티 저하.

  • 해결: 페르소나 프롬프트 엔지니어링을 적용해 AI에게 "IT 멘토링 코디네이터" 역할을 부여하고, STAR 기법 등 명확한 출력 형식을 지정하여 답변 품질을 상향 평준화했습니다.

🤝 협업 전략 및 프로세스 (Collaboration)

짧은 기간(2주) 동안 최고의 효율을 내기 위해 체계적인 프로세스를 구축했습니다.

  • 하이브리드 코드 컨벤션:
    • EditorConfig: IDE에 구애받지 않는 기본 포맷(들여쓰기, 인코딩) 통일.
    • Spotless: 빌드 타임에 불필요한 공백 제거 및 Import 정리를 자동화하여 비즈니스 로직에 집중.
  • Jira & Agile: 기능을 티켓 단위로 세분화하고, Due Date를 설정하여 마감 기한을 철저히 준수했습니다.
  • Meeting Asset: 데일리 스크럼 외 기술적 논의가 필요한 사항은 별도 회의를 진행하고, 의사결정 과정을 상세한 **회의록(Meeting Minutes)**으로 남겨 커뮤니케이션 비용을 절감했습니다.

📐 시스템 아키텍처 및 ERD

🏗 Architecture

diagram

🗂 ERD

erd

🏁 시작 가이드 (Getting Started)

1. 사전 요구 사항 (Prerequisites)

  • Java 17+
  • MySQL 8.0+
  • OAuth2 Google (application.yml 설정 필요)
  • OAuth GitHub (application.yml 설정 필요)
  • GROQ API Key (application.yml 설정 필요)
  • Supabase S3 (application.yml 설정 필요)

2. 설치 및 실행 (Installation)

# 1. Repository Clone
$ git clone [https://github.com/prgrms-aibe-devcourse/AIBE4_Project2_Team4_Dodeul.git](https://github.com/prgrms-aibe-devcourse/AIBE4_Project2_Team4_Dodeul.git)

# 2. Project Directory
$ cd AIBE4_Project2_Team4_Dodeul

# 3. Build (Spotless Apply included)
$ ./gradlew build

# 4. Run
$ ./gradlew bootRun

About

'두들(Dodeul)'은 IT 현직자와 취준생 간의 정보 불균형을 해소하고, 심리적 장벽 없이 성장의 기회를 얻을 수 있도록 돕는 1:1 멘토링 매칭 플랫폼입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6