- 주간 회고 스터디용 주간 회고 이슈를 매주 자동으로 생성 및 관리하여 수작업 대비 3배(1인당 30초 -> 10초) 효율을 제공하는 스프링 스케줄러 서버
# 수작업
- 1인당 작업 시간 : 30초
Github 레포 열기: 1초
이슈 목록에서 내 Issue 클릭하기: 1초
Close 하기: 1초
다음 주차 계산하기: 3초
다음 주차 Label 생성하기: 3초
이슈 내용 기재하고 주차 Label 추가 및 생성 : 21초
# 자동화
- 총 수행 시간 : 평균 10초
- Spring의 @Scheduled 애너테이션과 GitHub API를 활용하여 주기적인 작업을 자동으로 수행한다.
- 예를 들어, GitHub 리포지토리에 Issue를 생성하거나 Close 하는 작업에 사용된다.
- Discord Webhook API를 활용하여 로깅 또는 배치 작업의 성공/실패 여부 등을 Discord 채널에 알림을 전송한다.
- 예를 들어, 로깅 또는 배치 작업의 성공/실패 여부을 알리는 데 사용된다.
- Google Sheets API를 활용하여 GitHub API 통신 및 작업별 수행 시간 등을 Google 스프레드시트에 저장한다.
- AOP와 Interceptor 활용하여 로깅 기능 구현
- 2024년 6월 ~
- Java, Spring Boot, Gihtub API, Google API, Discord API
1. 비동기 와 싱글 스레드로 비즈니스 로직과 부가 기능 로직 최적화(장애 전파 문제 해결, 동시성 문제 해결 및 성능 최적화)(문제 해결 과정 링크)
2. 데이터 전송 방식 변경(텍스트 기반 방식 -> 파일 첨부 방식)으로 최대 글자수 초과 문제 해결 (문제 해결 과정 링크)
3. 데이터 전송 주기 변경(저장시마다 -> 배치)으로 디스코드 알림 기능 개선 (문제 해결 과정 링크)
(1) SRP 원칙을 활용하여 순환 참조 문제 해결(문제 해결 과정 링크)
- SRP에 기반하여 Config 클래스 분리와 Bean 분리로 순환 참조 이슈 해결
(2) 구글 시트 객체을 Bean으로 등록하여 조기 문제 밸견 및 해결로 애플리케이션 안정성 향상과 메모리와 리소스 낭비 감소 (관련 링크)
- 팩토리 패턴과 Bean 등록으로 Google Sheets 객체 생성과 사용 디커플링시킴으로써 애플리케이션의 안정성 향상시켰고, Google Sheets 객체를 사용함으로써 메모리와 리소스 낭비 감소 시킴
- RetryableExecutionContextAspect : 어떤 클래스의 어떤 메서드가 재시도 되는지 파악하기 위해서, @Retryable 애노테이션이 적용된 메서드 호출 전, 클래스명과 메서드명을 RetryContext에 저장하는 AOP 클래스
- GoogleSheetsTransactionAspect : Google Sheets 와의 데이터 연동시 트랜잭션 관리를 담당하는 AOP 클래스