탄소중립 sw아카데미 다회용기팀 서버
이희주 | 황규혁 | 김동한 |
---|---|---|
@hj1487 | @Gyuhyeok99 | @kdhan235 |
담당 역할 | Role |
---|---|
Nginx 배포, CI/CD 구축 | 황규혁 |
DB 구축 (RDS) | 황규혁 |
ERD 작성 | 이희주, 황규혁, 김동한 |
API 개발 | 황규혁 |
통합 개발 환경 | IntelliJ |
Spring 버전 | 3.2.4 |
데이터베이스 | AWS RDS(MySQL), ElastiCache(Redis) |
배포 | AWS Elastic beanstalk, EC2 |
Project 빌드 관리 도구 | Gradle |
Java version | java 17 |
패키지 구조 | 도메인 패키지 구조 |
API 테스트 | PostMan, Swagger(https://dev.swacademy.store/swagger-ui/index.html#/) |
![아키텍처](https://private-user-images.githubusercontent.com/126947828/330306375-4c916e69-fef1-410f-b452-fe0c7315b786.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ0NTM3ODIsIm5iZiI6MTcyNDQ1MzQ4MiwicGF0aCI6Ii8xMjY5NDc4MjgvMzMwMzA2Mzc1LTRjOTE2ZTY5LWZlZjEtNDEwZi1iNDUyLWZlMGM3MzE1Yjc4Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyM1QyMjUxMjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03ODQ0NzFiZTYyNmNiMTM1ZWNlZTFkM2JiOTIxMWZiMDdjODc5MDE3MGEzZjkxMGZkMGZlZGQ3OTFiM2JkNWIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.EPSgGZ_GNml98ovfXx81Xx7otfEbG5Y3qOQHg4YhqyE)
![erd](https://private-user-images.githubusercontent.com/126947828/329134141-2d7e7110-1bdc-42d5-b754-28822234851a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ0NTM3ODIsIm5iZiI6MTcyNDQ1MzQ4MiwicGF0aCI6Ii8xMjY5NDc4MjgvMzI5MTM0MTQxLTJkN2U3MTEwLTFiZGMtNDJkNS1iNzU0LTI4ODIyMjM0ODUxYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODIzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyM1QyMjUxMjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03ZGJlMWVjNWIyMDM4Yzk1MzE2OWFjNGFhZGY0MWI0MDg2NjY1NTk3MzQxYWYwN2M1M2NmYzAwNTVhNDE2NDg4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.5bVpsGoXvYkCEPuq1hwOuCNUxFYizUe_U-AWy01GYLY)
api-server-spring-boot
> .ebextensions-dev // dev 서버 관련 ci/cd 구축
| 00-makeFiles.config
| 01-set-timezone.config
> .ebextensions-�prod // prod 서버 관련 ci/cd 구축
| 00-makeFiles.config
| 01-set-timezone.config
> .github
> ISSUE_TEMPLATE
| ✨feat.md
| 🆘help.md
| 🐛bug-report.md
| 🚑fix.md
> worksflows
| develop_dev.yml // dev 서버 github action을 위한 파일
| develop_prod.yml // prod 서버 github action을 위한 파일
> .platform
| nginx.conf // nginx 설정
> * build
> gradle
> src.main.java.carbonneutral.academy
> api
> controller
> auth
> dto
> request
> response
| AuthController.java
> point
> dto
> request
> response
| PointController.java
> use
> dto
> request
> response
| UseController.java
> user
> dto
> request
> response
| UserController.java
> converter
> auth
| AuthConverter.java
> time
| TimeConverter.java
> use
| UseConverter.java
> user
| UserConverter.java
> service
> auth
> social // 소셜 로그인 관련
> kakao
| KakaoLoginService.java
| KakaoLoginServiceImpl.java
| AuthService.java
| AuthServiceImpl.java
> point
| PointService.java
| PointServiceImpl.java
> use
| UseService.java
| UseServiceImpl.java
> user
| UserService.java
| UserServiceImpl.java
> common
> code
> status
| ErrorStatus.java // 에러 응답 메시지 모아놓은 곳
| SuccessStatus.java // 성공 응답 메시지 모아놓은 곳
| BaseCode.java
| BaseErrorCode.java
| ErrorReasonDTO.java
| ReasonDTO.java
> config
| AppConfig.java
| RedisConfig.java // 레디스 관련 설정
| Security.config.java // Spring Security 관련 설정
| SwaggerConfig.java // Swagger 관련 설정
> exceptions
> handler
| ExceptionHandler.java
| BaseException.java // Controller, Service에서 Response 용으로 공통적으로 사용 될 익셉션 클래스
| ExceptionAdvice.java // ExceptionHandler를 활용하여 정의해놓은 예외처리를 통합 관리하는 클래스
| BaseEntity.java // create, update, state 등 Entity에 공통적으로 정의되는 변수를 정의한 BaseEntity
| BaseResponse.java // Controller 에서 Response 용으로 공통적으로 사용되는 구조를 위한 모델 클래스
> domain
> location
> enums
| LocationType.java
> repository
| LocationJpaRepository
| Location.java
> mapping
> repository
| LocationContainerJpaRepository.java
| LocationContainer.java
> multi_use_container
> repository
| MultiUseContainerRepository.java
| MultiUseContainer.java
> point
> repository
| PointJpaRepository.java
| Point.java
> use
> enums
| UseStatus.java
> repository
| UseJpaRepository.java
| UseQueryRepository // 통계 쿼리를 위한 querydsl용 repository
| Use.java
> user
> enums
| Permission.java //권한 부여
| Role.java // 유저 역할
| SocialType.java
> repository
| UserJpaRepository.java
| User.java
> utils
> jwt // jwt 관련
| JwtAuthenticationFilter.java
| JwtProvider.java
| LogoutService.java // 로그아웃
| ApplicationAuditAware.java
| RedisProvider.java // 레디스 서비스
| AcademyApplication // SpringBootApplication 서버 시작 지점
> resources
| application.yml // Database 연동을 위한 설정 값 세팅 및 Port 정의 파일
| application-dev.yml // dev 연동
| application-local.yml // local 연동
build.gradle // gradle 빌드시에 필요한 dependency 설정
.gitignore // git 에 포함되지 않아야 하는 폴더, 파일들을 작성
-
Local 실행 시
- 실행 방법: 프로젝트를 로컬 환경에서 실행할 때는 환경 변수 또는 설정 파일을 통해 local 모드로 설정
- 서버 접속 주소: localhost:8080 에서 서버 실행
- 데이터베이스 접속: 로컬에 설치된 MySQL 데이터베이스에 접속, 로컬 데이터베이스의 접속 정보(호스트, 포트, 사용자 이름, 비밀번호 등)는 개발 환경에 맞게 설정.
- 캐시 서버 접속: 로컬에서 실행 중인 Redis 인스턴스에 접속, 로컬 Redis 서버의 접속 정보를 환경에 맞게 설정.
-
Dev 실행 시
- 실행 방법: 개발 환경에서는 환경 변수 또는 설정 파일을 dev 모드로 설정
- 서버 접속 주소: 프로젝트는 https://dev.swacademy.store/ 주소를 통해 접근
- 데이터베이스 접속: AWS RDS(MySQL) 인스턴스에 접속, 개발 환경에 맞는 RDS 인스턴스의 접속 정보(엔드포인트, 포트, 사용자 이름, 비밀번호 등)를 설정 파일에 명시해야 함.
- 캐시 서버 접속: AWS ElastiCache(Redis) 인스턴스에 접속, 개발 환경에 맞는 ElastiCache 인스턴스의 접속 정보(엔드포인트, 포트 등)를 설정 파일에 명시해야 함.
-
Prod 서버 아직 존재 x
- main : 최종
- develop : 개발
- feat : 기능 개발
- refactor : 기능 수정
- ci : ci/cd 구축