- 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
- Cloud (AWS): EC2, RDS (MySQL), S3, CloudFront, Route53, ACM (SSL), VPC, ALB, CloudWatch
- CI/CD: GitHub Actions, AWS CodeDeploy
- JUnit 5
- Testcontainers (Docker)
- Java 21
- MySQL 8.x (로컬 실행 시
boaz데이터베이스 필요)
git clone https://github.com/BOAZ-website/backend.git
cd backend
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 섹션을 참고하세요.
./gradlew bootRun # 애플리케이션 실행 (default: local)
./gradlew build # 빌드
./gradlew test # 테스트실행 후 Swagger UI에서 API 명세를 확인할 수 있습니다.
http://localhost:8080/swagger-ui.html
커밋 메시지를 컨벤션(
type: 설명 (#이슈번호))에 맞게 검증하는 로컬 훅입니다. 클론 후 각자 1회만 실행하세요. (mac / linux / windows 공통)
git config core.hooksPath .githooks
- 예:
feat: 로그인 API 구현 (#12)— 허용 type:featfixdocsstylerefactortestchore- 부득이한 경우에만
git commit --no-verify로 건너뛸 수 있습니다.
도메인 중심(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
평상시 서비스 운영을 위한 인프라 아키텍처입니다.
지원 모집 기간에는 2개의 EC2와 ALB를 적용하여 고가용성을 확보합니다.
GitHub Actions와 AWS CodeDeploy를 활용하여 빌드부터 EC2 배포까지의 전 과정을 자동화했습니다.
Developer ──(Push/Merge)──> GitHub Actions ──(Upload Bundle)──> AWS S3
│ │
(Trigger) (Fetch)
▼ ▼
AWS CodeDeploy ───(Deploy)────> AWS EC2 (systemd)
- GitHub Actions가 테스트 및 빌드를 수행합니다.
- 빌드 결과물과 배포 스크립트를 ZIP으로 묶어 S3에 업로드합니다.
- CodeDeploy가 EC2에 배포하고 systemd를 통해 서비스를 실행합니다.
환경 변수 주입: 운영 환경의 환경 변수는 AWS SSM Parameter Store에 저장되며, 배포 시
scripts/load-ssm-env.sh가 이를 불러와 주입합니다.
단, AWS 자격 증명은 환경 변수가 아니라 EC2 인스턴스의 IAM 역할로 제공됩니다.
또한 운영 환경에서는 Swagger UI에 Basic 인증(SWAGGER_USER/SWAGGER_PASSWORD)이 적용됩니다.
BOAZ 공식 홈페이지 신규 구축
프로젝트 총괄(PM): @likell1
| Profile | Name | GitHub | 기수 · 부문 | Role |
|---|---|---|---|---|
![]() |
김서연 | @seoyeon83 | 25기 엔지니어링 | Lead |
![]() |
신재원 | @jaewonnow | 25기 엔지니어링 | Member |
![]() |
남민서 | @minseo0313 | 26기 엔지니어링 | Member |
관리자 페이지 개발 · 기존 백엔드 코드 품질 개선 · 서비스 운영 지원
프로젝트 총괄(PM): @Daehyun-Bigbread
| Profile | Name | GitHub | 기수 · 부문 | Role |
|---|---|---|---|---|
![]() |
김서연 | @seoyeon83 | 25기 엔지니어링 | Lead |
![]() |
남민서 | @minseo0313 | 26기 엔지니어링 | Member |
![]() |
최우성 | @wsxchoi | 27기 엔지니어링 | Member |
![]() |
권준희 | @galgalrobot | 27기 엔지니어링 | Member |





