Releases: Si-Hyeak-KANG/Weather-island_APNs_springboot-server
Releases · Si-Hyeak-KANG/Weather-island_APNs_springboot-server
Weather-island APN server v1.1.1-beta
Release Date : 24-03-12
변경내용
- 스케줄러 작업 주기 Trigger 코드 리팩토링
- 인터페이스 Trigger의 구현체 PeriodicTrigger로 변경
- deprecated 코드 변경
- Duration 적용
- 스케줄러 시작 지연 기능 유지
Weather-island APN server v1.1.0-beta
변경 내용
Release Date : 24-03-12
- Weather Kit(Apple 날씨 조회) API 호출수 개선
why
외부 API 호출에 따른 비용이 발생하기 때문에 과금 문제를 해결하기 위해 개선before
사용자 Live activity 활성화 횟수(n) 만큼 불필요하게 외부 API가 호출되고 있음after
30분 단위 스케줄러 외에 날씨 조회 API 모두 제거
- 스케줄러 동작 시작 시간 지연의 trigger 구현 후 적용
why
Live activity를 처음 활성화하면 업데이트 되어있는 상태이기 때문에, 시작하자마자 스케줄러가 동작하는건 불필요함before
Live activity 활성화 시 API가 호출되면서 스케줄러가 즉시 동작함after
API가 요청되고 탐색 주기(예:30분) 지난 후에 스케줄러가 시작하도록 개선
- 앱의 정보 및 날씨 저장 API 수정
- Request Body 포함 데이터 수정 (온도 추가)
- API 명세서 변경내용 확인
- 서버 통합 개발 환경, 스케줄러 동작 주기 변경 (10분 -> 15분)
v1.1.0-beta Flow chart
Weather-island APN server v1.0.0-beta
Release Date : 24-03-11
해당 버전은 배포 직전 통합 테스트를 위해 주어진 요구사항에 맞게 기능을 갖추었습니다. 테스트 파일의 개발환경은 Docker 이미지로 업로드한 상태입니다.
요구사항
- 앱의 Live Activity 활성화시 서버 요청 API
- 일정 주기 날씨 체크
- APN 푸시 알림 전송 기능 구현
- 날씨 스케줄러 중단 및 토큰 폐기 적용
개발환경
- Java17, SpringBoot, Gradle
- Redis
- Lombok, WebFlux(webClient), Scheduler, AOP, Spring Validation, ObjectMapper
- Base64(ES256), JWT
- eatthepath.pushy(APNs)
- WeatherKit API
- Docker
상세 구현 내용
- 앱 토큰 및 날씨 등의 정보 저장 API 구현
- 요청 데이터를 Redis에 저장
- 스케줄러 동작
- 성공/실패 응답 전송
- APNs 푸시 알림 즉시 전송 API 구현 (테스트용)
- 일정 시간 날씨 변동 체크 스케줄러 구현
- Thread 풀 기반 비동기 방식 스케줄러 적용
- 특정 Device토큰의 스케줄러 동작 관리 - 작업 중단 구현
- 로컬(1분), 개발(10분), 운영(30분) 환경에 따라 다른 작업 주기 설정
- APNs 푸시 알림 기능 구현
- 비동기 이벤트 처리
- 푸시 타입 live activity 적용
- payload로 변경된 온도 전송
- 날씨 조회 기능 구현
- [개발,운영환경] WeatherKit API 기반 날씨 조회 기능 구현
- WeatherKit API의 인증키를 위한 JWT 생성 기능 구현
- [로컬, 테스트환경] 날씨 가상 조회 난수 출력 기능 구현
- Open weather API 기반 날씨 조회 기능 구현
- 로크 트래킹 AOP 구현
- 프로젝트 전역의 예외 처리 코드 구현