Skip to content

Repository files navigation

BOAZ 공식 홈페이지 — Backend

국내 최초 빅데이터 동아리 BOAZ 공식 홈페이지의 백엔드 API 서버

boaz-og

🔗 Service link: https://www.bigdataboaz.com/


🛠 Tech Stack

Backend

  • Language: Java 21
  • Framework: Spring Boot 3.4.3
  • Database: MySQL
  • Database Access: Spring Data JPA, Hibernate
  • Security: Spring Security, JWT, OAuth 2.0
  • API Docs: SpringDoc (Swagger UI)
  • Build Tool: Gradle

Infrastructure

  • Cloud (AWS): EC2, RDS (MySQL), S3, CloudFront, Route53, ACM (SSL), VPC, ALB, CloudWatch
  • CI/CD: GitHub Actions, AWS CodeDeploy

Testing

  • JUnit 5
  • Testcontainers (Docker)

🚀 Getting Started

Prerequisites

  • Java 21
  • MySQL 8.x (로컬 실행 시 boaz 데이터베이스 필요)

Installation

git clone https://github.com/BOAZ-website/backend.git
cd backend

Configuration

local 프로필이 기본으로 활성화됩니다. 아래 "필수"가 ✅인 항목은 값이 없으면 앱이 뜨지 않습니다.

환경 변수 설명 필수
JWT_SECRET JWT 서명 시크릿
S3_RECRUITMENT_BUCKET_NAME / S3_ARCHIVING_BUCKET_NAME S3 버킷명
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET Google OAuth 자격 증명
DB_URL / DB_USERNAME / DB_PASSWORD DB 접속 정보 (미설정 시 로컬 기본값 사용)
단, MySQL 인스턴스는 필요
KAKAO_* / NAVER_* 카카오·네이버 소셜 로그인 (해당 기능 사용 시 설정)
AWS_ACCESS_KEY / AWS_SECRET_KEY AWS 자격 증명(S3 파일 업로드 등, 해당 기능 사용 시 설정)

운영(prod) 환경의 환경 변수 주입 방식은 Deployment 섹션을 참고하세요.

Run

./gradlew bootRun        # 애플리케이션 실행 (default: local)
./gradlew build          # 빌드
./gradlew test           # 테스트

API Docs

실행 후 Swagger UI에서 API 명세를 확인할 수 있습니다.

http://localhost:8080/swagger-ui.html

Git Hooks (커밋 메시지 검증)

커밋 메시지를 컨벤션(type: 설명 (#이슈번호))에 맞게 검증하는 로컬 훅입니다. 클론 후 각자 1회만 실행하세요. (mac / linux / windows 공통)

git config core.hooksPath .githooks
  • 예: feat: 로그인 API 구현 (#12) — 허용 type: feat fix docs style refactor test chore
  • 부득이한 경우에만 git commit --no-verify 로 건너뛸 수 있습니다.

📂 Project Structure

도메인 중심(Domain-Driven) 패키지 구조를 적용했습니다.

com.boaz.backend
├── domain              # 도메인별 모듈 (controller / service / entity / repository / dto)
│   ├── admin
│   ├── archive
│   ├── auth
│   ├── curriculum
│   ├── faq
│   ├── recruitment
│   ├── review
│   └── user
├── global              # 공통 모듈
│   ├── common          # BaseEntity, ApiResponse 등
│   ├── config
│   ├── exception       # CustomException, ErrorCode
│   └── util
└── BackendApplication.java

🏗 Architecture

평상시

평상시 서비스 운영을 위한 인프라 아키텍처입니다.

BOAZ 웹사이트TF팀 인프라-평시

지원 모집 시 (HA)

지원 모집 기간에는 2개의 EC2와 ALB를 적용하여 고가용성을 확보합니다.

BOAZ 웹사이트TF팀 인프라-지원 모집 시

📊 ERD

ERD

📦 Deployment

GitHub Actions와 AWS CodeDeploy를 활용하여 빌드부터 EC2 배포까지의 전 과정을 자동화했습니다.

CI/CD Pipeline

Developer ──(Push/Merge)──> GitHub Actions ──(Upload Bundle)──> AWS S3
                                 │                                │
                             (Trigger)                         (Fetch)
                                 ▼                                ▼
                            AWS CodeDeploy ───(Deploy)────> AWS EC2 (systemd)
  1. GitHub Actions가 테스트 및 빌드를 수행합니다.
  2. 빌드 결과물과 배포 스크립트를 ZIP으로 묶어 S3에 업로드합니다.
  3. CodeDeploy가 EC2에 배포하고 systemd를 통해 서비스를 실행합니다.

환경 변수 주입: 운영 환경의 환경 변수는 AWS SSM Parameter Store에 저장되며, 배포 시 scripts/load-ssm-env.sh가 이를 불러와 주입합니다.
단, AWS 자격 증명은 환경 변수가 아니라 EC2 인스턴스의 IAM 역할로 제공됩니다.
또한 운영 환경에서는 Swagger UI에 Basic 인증(SWAGGER_USER / SWAGGER_PASSWORD)이 적용됩니다.


👥 Contributors

웹사이트 개발 TF (2026 상반기)

BOAZ 공식 홈페이지 신규 구축

프로젝트 총괄(PM): @likell1

Profile Name GitHub 기수 · 부문 Role
김서연 김서연 @seoyeon83 25기 엔지니어링 Lead
신재원 신재원 @jaewonnow 25기 엔지니어링 Member
남민서 남민서 @minseo0313 26기 엔지니어링 Member

관리자 페이지 개발 (2026 하반기, 진행 중)

관리자 페이지 개발 · 기존 백엔드 코드 품질 개선 · 서비스 운영 지원

프로젝트 총괄(PM): @Daehyun-Bigbread

Profile Name GitHub 기수 · 부문 Role
김서연 김서연 @seoyeon83 25기 엔지니어링 Lead
남민서 남민서 @minseo0313 26기 엔지니어링 Member
최우성 최우성 @wsxchoi 27기 엔지니어링 Member
권준희 권준희 @galgalrobot 27기 엔지니어링 Member

About

국내 최초 빅데이터 동아리 BOAZ의 공식 홈페이지 (backend)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages