Skip to content

Seoul-NolGoat/be-seoul-nolgoat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Seoul-NolGoat

서울시의 다양한 먹거리와 놀거리 조합을 추천해 주는 서비스입니다.
식당, 카페, 노래방, 당구장, PC방 업종을 검색할 수 있으며 평점과 거리 기반으로 적절한 가게 조합을 추천받을 수 있습니다.
또한 사용자가 직접 파티를 생성하고 다른 사용자들이 해당 파티에 참여하여 오프라인 모임을 가질 수 있는 기능도 제공합니다.

로그인 메인 가게 검색
가게 조합 검색 파티 메인 파티 생성
파티 상세 즐겨찾기 한 가게 내가 쓴 리뷰
회원탈퇴

Architecture

System Architecture


Directory Structure

src/
├── main/
│ ├── java/wad/seoul_nolgoat/
│ │ ├── auth/                        # 인증 관련 (Security, JWT, OAuth2)
│ │ ├── config/                      # 설정 파일 (Security, Redis, Swagger 등)
│ │ ├── domain/                      # 엔티티 및 리포지토리
│ │ ├── exception/                   # 예외 관련 (커스텀 예외, 에러 코드, 전역 예외 처리 등) 
│ │ ├── filter/                      # 로깅 커스텀 필터
│ │ ├── service/                     # 비즈니스 로직
│ │ ├── util/mapper/                 # Entity <-> DTO 매핑
│ │ ├── web/                         # 컨트롤러 계층 (API)
│ │ └── SeoulNolgoatApplication.java # 메인 클래스
│
├── resources/
│ ├── static/images/                 # 이메일용 로고 이미지
│ ├── templates/                     # 이메일 템플릿 파일
│ ├── application.yml                # 메인 설정 파일 (다른 설정 파일들을 import)
│ ├── logback-dev.xml                # 개발용 로그 설정
│ └── logback-prod.xml               # 운영용 로그 설정

ERD



Tech Stack

Back-End


  • Java 17Spring Boot 3.x로 백엔드 애플리케이션을 개발하고 REST API 서버를 구축했습니다.
    • Java 17은 텍스트 블록, record 클래스 등 새로운 기능들을 적극 활용해 코드 가독성을 높여보고자 선택했습니다.
    • Spring Boot 3.x는 Java EE 대신 Jakarta EE 기반으로 전환되었는데 Jakarta EE는 지속적으로 업그레이드되어 최신 기술을 반영할 수 있다는 이점이 있어 선택했습니다.
  • 운영 및 개발 환경에서는 MySQL을, 테스트 환경에서는 H2를 사용했습니다.
  • Redis를 활용해 Refresh 토큰을 관리했습니다.
  • Spring Data JPA(Hibernate)로 ORM 기반 데이터 접근을 구현했고 QueryDSL로 동적 쿼리를 타입 안정성 있게 작성했습니다.
  • Spring SecurityJWT를 활용해 인증 및 인가 기능을 구현했습니다.
  • Postman으로 API 테스트를 진행했습니다.
  • Swagger로 API 명세를 자동화하고 문서화했습니다.

Infra



  • AWS EC2 인스턴스(Ubuntu)에 백엔드 서버를 배포했습니다.
  • AWS S3로 정적 리소스(사용자 프로필 이미지 및 리뷰 이미지)를 관리했습니다.
  • AWS Route 53으로 도메인을 설정하고 연결했습니다.
  • Nginx로 리버스 프록시를 구성하고 HTTPS를 적용했습니다.
  • GitHub Actions를 활용해 작업 브랜치(dev)에 머지 시에는 컴파일 에러를 검증하고 배포 브랜치(main)에 머지 시에는 자동으로 배포되는 CI/CD 파이프라인을 구축했습니다.
  • Logstash, Elasticsearch, Kibana를 활용해 서버 로그를 수집, 저장 및 시각화했습니다.

Version Control

Git Branch Strategy

  • main
    • 배포 브랜치
    • 직접 커밋 금지
    • dev 브랜치에서의 머지만 허용 (Create a merge commit)
  • dev
    • 메인 개발 브랜치
    • 직접 커밋 금지
    • 하위 브랜치에서의 머지만 허용 (Rebase & merge)
    • 모든 개발 작업은 dev 브랜치를 기준으로 개별 브랜치를 생성하여 진행했습니다.

Collaboration


  • Notion을 활용해 코드 컨벤션, 회의 내용 등 공동 작업 자료를 정리했습니다.
  • Discord를 통해 온라인 회의를 진행했습니다.

About

서울 먹거리와 놀거리의 조합을 추천해 주는 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •