Skip to content

웹 서비스 <용감한 원정대> Back-End 저장소

Notifications You must be signed in to change notification settings

taeho99/BravePeople-BackEnd

 
 

Repository files navigation

image

✔ 개발 목표

일상에는 누군가에게는 사소하지만, 누군가에게는 어려운 문제들이 있습니다. 용감한 원정대는 이런 문제들을 내 이웃에게 부탁할 수 있는 지역 커뮤니티 플랫폼 입니다. 게시글을 올리고, 채팅을 통해 소통하며 원정대 또는 의뢰인이 되어 문제를 해결할 수 있습니다.


🕐 개발 기간 : 2023.12.21 ~ 2024.02.29 (2개월) WBS


👥 개발 인원 (5명)

  • Back-End :   김지윤(PM),  임태호,   유나영

  • Front-End :   김한수,  장현지   FrontEnd Github



👨‍💻 맡은 역할

김지윤 (PM, Back-End Development) GitHub

  • 빠른 개발과 이슈 대응을 위해 Server CI/CD 구축 Details
  • Back-End 배포 (AWS EC2), Front-End 배포 (AWS CloudFront)
  • Sever의 부담이 적고, Rest 서비스가 가능한 JWT Token을 사용하여 사용자 인증, 인가 구현 Details
  • 실시간 채팅 기능 개발을 위해 양방향 통신 프로토콜인 Web Socket, STOMP를 사용하여 채팅 서비스 개발 Details
  • 프로젝트 전반적인 예외 관리와 Client에 전송할 에러 메시지 규격화를 위해 프로젝트 전역에서 사용하는 예외처리 Class 개발
  • 서버 로그를 팀원들과 공유하고 로그를 빠르게 추적하기 위해 Logback 설정 및 AWS CloudWatch로 로그 전송
  • 사용자의 이미지 업로드 서비스 제공을 위해 API 개발 및 AWS S3에 정적 이미지 파일 배포
  • 그외 회원가입, 로그인, 토큰 재발급, 로그아웃, 채팅방 나가기 API 개발
  • 트러블 슈팅 : 채팅 읽음 여부 처리 , 독립적인 사용자 채팅 관리

임태호 (Back-End Development) GitHub

  • DB 접속 정보, JWT 비밀키, AWS 키와 같은 민감한 정보를 별도의 환경변수 파일로 분리
  • 게시글의 위치정보를 활용한 거리기반 게시글 조회기능 개발
  • Gmail 활용 SMTP 프로토콜을 이용하여 이메일 전송 및 인증 로직 개발
  • 스프링 스케줄러 활용, 매시 정각마다 필요한 로직 실행되도록 셋팅
  • 채팅 데이터를 저장을 위한 몽고DB 커넥션 설정 및 채팅 데이터 도큐먼트 생성
  • 도메인 주소 구입(Route53) 및 백엔드, 프론트엔드 서버와 연결
  • 도메인 – SSL 인증서 발급(ACM) 및 HTTPS 배포(ALB)
  • 그 외 프로필 페이지, 비밀번호 찾기, 채팅방 리스트, 채팅 내역, 리뷰 관련 API 개발

유나영 (Back-End Development) GitHub

  • SSE(Server-Sent Events) 단방향 통신을 사용하여 Client에 채팅 메시지, 의뢰 관련 알림 전송
  • 채팅 메시지 DB로 사용하는 MongoDB를 AWS EC2에 원격 개발 환경 구축
  • 의뢰 기능 핵심 API 개발 (의뢰 생성, 수락, 취소)
  • 게시판 기능 CRUD 개발 (작성, 수정, 삭제)
  • 회원 서비스 개발 (아이디 찾기, 위치 재설정, 비밀번호 인증, 재설정, 마이페이지 수정)



⚙ Tech Stack

◾ Security                    ◾ DB                 ◾ Front-End

        

◾ Development

◾ Deploy

◾ Communication                                 

◾ ISSUE



📖 프로젝트 내용

✔ Server 배포

  • 빠른 개발과 이슈 대응을 위해 Git Actions, AWS CodeDeploy로 Server CI/CD 구축
  • DB의 원격 개발 환경 구축을 위해 AWS RDS에 MySQL 설치, EC2에 MongoDB 설치
  • AWS Application Load Balancer를 통해 HTTPS(:443)를 HTTP(:8080)로 라우팅하여 HTTPS 보안 프로토콜 구축

image


image


  (* 현재 IPv4 주소 사용이 유료화 되어 배포 서버는 유지하지 않고 있습니다.)




✔ Client 배포

  • 정적 콘텐츠를 안전하게 배포하기 위해, https를 지원하는 AWS CloudFront로 Front-End 배포
  • AWS CloudFront에 대체도메인(CNAME)을 Route53에 연결하여 도메인 구축

image


image
  (* 현재 IPv4 주소 사용이 유료화 되어 배포 서버는 유지하지 않고 있습니다.)




✔ Database

  • Project의 주 개체인 회원, 게시글, 의뢰, 채팅방의 관계를 정의하기 위해 RDBMS인 MySQL을 DB로 사용

image



  • 채팅 메시지는 빈번한 DB 접근과 빠른 검색 속도가 필요해 NoSQL인 MongoDB를 DB로 사용

image




✔ Package Structure

image

👉 API 명세서 : Notion 링크




✔ 프로젝트 실행 영상 🎬

📺 회원 기능

회원가입 -> 이메일 인증 -> 로그인 -> 아이디, 비밀번호 찾기 -> 비밀번호 재설정 -> 마이페이지 수정 -> 위치 재설정

Member.mp4

📺 게시판 기능

게시판 목록 -> 글쓰기 -> 글 수정 -> 글 삭제

Board.mp4

📺 채팅 기능

의뢰 신청 -> 채팅 -> 의뢰 수락,완료 -> 후기 작성

Chat.mp4

About

웹 서비스 <용감한 원정대> Back-End 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.6%
  • Other 0.4%