인천대학교 기숙사생들을 위한 모든 것 • 백엔드 레포지토리
크롤링 기반 기숙사 공식 일정 알림 |
룸메이트와 공유 캘린더 |
룸메이트 매칭 |
기숙사 커뮤니티
나현 : 유지보수성 향상을 위한 헥사고날 아키텍처 도입기
나현 : 인터셉터와 Argument Resolver를 이용한 컨트롤러 내 중복 코드 개선기
나현 : JPA N+1 문제를 찾기 위한 쿼리 카운터 개발기
나현 : XToOne 조회 시 N+1 문제에 대한 쿼리 튜닝과 페이징 최적화
나현 : 프록시 방식의 AOP 한계 - self invocation 이슈
나현 : @Async를 이용한 이메일 인증 기능 비동기 처리와 주의 사항
송현 : 성능과 동시성을 고려한 게시글 좋아요 개수 최적화하기
송현 : 커버링 인덱스를 활용하여 풀 스캔과 파일 정렬 개선하기
송현 : 인터페이스를 활용하여 에러코드 및 성공 코드 도메인 별로 분리하기
헥사고날 아키텍처를 적용하였습니다.
컴포넌트 별 명확하게 관심사를 분리하고, 추상화 기반 설계를 강화함으로써 컴포넌트 별 의존성을 줄였습니다.
.
├── IdormServerApplication.java
├── auth
├── calendar
│ ├── officialCalendar
│ ├── teamCalendar
│ ├── sleepOverCalendar
│ └── team
├── common
│ ├── config
│ │ ├── AsyncConfig.java
│ │ ├── FirebaseConfig.java
│ │ ├── JpaAuditingConfig.java
│ │ ├── MailConfig.java
│ │ ├── S3Config.java
│ │ ├── SchedulingConfig.java
│ │ ├── SwaggerConfig.java
│ │ ├── TimeConfig.java
│ │ ├── WebMvcConfig.java
│ │ ├── WebMvcLocalConfig.java
│ │ └── WebSecurityConfig.java
│ ├── entity
│ │ └── BaseTimeEntity.java
│ ├── exception
│ │ ├── BaseException.java
│ │ ├── BaseResponseCode.java
│ │ ├── GlobalExceptionHandler.java
│ │ └── GlobalResponseCode.java
│ ├── logging
│ │ ├── ErrorLoggingAdvice.java
│ │ ├── ExecutionTimer.java
│ │ └── LoggingAdvice.java
│ ├── performance
│ │ ├── JpaInspector.java
│ │ ├── NPlusOneWarning.java
│ │ ├── QueryCountInterceptor.java
│ │ └── QueryCounter.java
│ ├── response
│ │ ├── ErrorResponse.java
│ │ └── SuccessResponse.java
│ └── util
│ └── Validator.java
├── community
│ ├── post
│ ├── postLike
│ ├── postPhoto
│ └── comment
├── email
│ ├── adapter
│ │ ├── in
│ │ │ └── web
│ │ │ └── EmailController.java
│ │ └── out
│ │ ├── EmailResponseCode.java
│ │ ├── api
│ │ │ ├── GoogleMailClient.java
│ │ │ └── MockMailClient.java
│ │ ├── exception
│ │ │ ├── DuplicatedEmailException.java
│ │ │ ├── EmailServerErrorException.java
│ │ │ ├── ExpiredEmailVerificationCodeException.java
│ │ │ ├── InvalidEmailCharacterException.java
│ │ │ ├── InvalidVerificationCode.java
│ │ │ └── NotFoundEmailException.java
│ │ └── persistence
│ │ ├── DeleteEmailAdapter.java
│ │ ├── EmailRepository.java
│ │ ├── LoadEmailAdapter.java
│ │ └── SaveEmailAdapter.java
│ ├── application
│ │ ├── EmailService.java
│ │ ├── RandomVerificationCodeGenerator.java
│ │ └── port
│ │ ├── in
│ │ │ ├── EmailUseCase.java
│ │ │ └── dto
│ │ │ ├── EmailSendRequest.java
│ │ │ └── EmailVerifyRequest.java
│ │ └── out
│ │ ├── DeleteEmailPort.java
│ │ ├── GenerateVerificationCodePort.java
│ │ ├── LoadEmailPort.java
│ │ ├── SaveEmailPort.java
│ │ └── SendEmailPort.java
│ └── entity
│ ├── Email.java
│ └── EmailStatus.java
├── matchingInfo
├── matchingMate
├── member
├── notification
├── photo
└── report