날씨 알리미 프로젝트 소개 (기획, 아키텍처)

초록·2023년 11월 23일
0
post-thumbnail

날씨 알리미

사용자가 미리 설정한 날씨 조건을 충족하면 알림을 보내주는 서비스입니다.
(ex. "오늘 오후에 비가 오니까 우산을 챙겨가세요")

A4 - 27 (3)

프로젝트의 주요 관심사

  • 외부 API 활용 (기상청 공공API)
  • 스레드를 할용한 비동기 처리
  • 메시지큐 활용
  • SpringBatch를 활용한 배치 작업
  • 체계적인 단위/통합 테스트 및 테스트 설정
  • 쿼리 최적화
  • git-flow 브랜치 관리 전략 & 이슈 단위 브랜치 생성

프로젝트 구조

image

이 앱은 사용자가 알림을 설정할 수 있게 하는 API와 알림을 전송하기 위한 2개의 배치로 구성되어있습니다.

배치

[파란색 배치] 오전 5시엔 공공API에 요청해 오늘 지역/시간별 날씨 데이터를 저장합니다.

[노란색 배치] 매 10분 간격엔, 해당 시간으로 알림을 설정한 사용자들을 조회해, 해당 사용자들이 설정한 알림 설정에 맞게 메시지를 생성합니다. 이 메시지는 캐시와 DB에 저장되어 같은 알림조건의 사용자에게 메시지를 보낼때 재활용됩니다. 생성된 메시지는 전송되기 위해 메시지큐에 삽입됩니다. 메시지큐에 메시지가 있음을 확인한 모니터링 스레드는 스레드풀을 생성해 사용자에게 메시지를 전송합니다. 이 때 메시지큐는 코드수준으로 직접 구현되었습니다.

사용자 API

  • 비 알림
  • 더운 날 알림
    • 조건 온도 설정
  • 추운 날 알림
    • 조건 온도 설정
  • 알림 지역 편집
  • 알림 시간 설정
  • 알림 n일 동안 끄기

사용 기술

  • Spring Boot
  • Spring Batch
  • Spring Data JPA
  • QueryDSL
  • MySQL
  • Redis
  • nginx
  • Docker
  • Jenkins
  • Naver Cloud Platform

ERD

스크린샷 2023-02-21 오후 9 47 08
profile
몰입하고 성장하는 삶을 동경합니다

0개의 댓글