Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] 애플 푸시 알림 구현 #135

Merged
merged 7 commits into from
Aug 25, 2024
Merged

Conversation

jaewonLeeKOR
Copy link
Member

@jaewonLeeKOR jaewonLeeKOR commented Aug 23, 2024

PR 타입(하나 이상의 PR 타입을 선택해주세요)

  • 기능 추가
  • 기능 삭제
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트

반영 브랜치

Feat/#126/apns -> develop

변경 사항

  • APNs 페이로드 발송 메서드 구현
    • APNs 통신용 JWT 토큰 저장
      • APNs의 토큰 베이스 인증의 JWT 토큰이 단위시간 중 계정당 한개의 값만을 사용 가능하여 퍼블릭으로 사용할 수 있는 레디스 데이터베이스를 연결
      • redis cloud의 무료 데이터베이스를 이용
      • @Cacheable 어노테이션의 사용으로 메서드 단위의 캐싱 전략을 사용
    • APNs 의 HTTP/2 & TLS1.2 통신 정책에 따라 기존의 Http Client를 사용하지 못해 WebClient를 도입
      • HTTP/2 방식의 이점을 살리기 위해 병렬처리, 논블로킹 IO, Connection Pool 을 이용하여 APNs와의 통신속도를 극대화
  • 로그아웃 메서드 구현
    • 기존에 로그아웃 메서드가 없었고 로그아웃 시에는 푸시알림을 받으면 안되기 때문에 디바이스 토큰 제거 로직을 추가했습니다.

테스트 결과

병렬처리, 논블로킹 IO, Connection Pool 의 테스트 결과

  • Blocking
    image
  • Non-Blocking
    image
    -> Non-Blocking으로 하나의 Connection pool을 사용할 경우 하나의 소켓주소에서 같은 주소로 너무 많은 요청이 보내져 429 Too Many Request Error 가 반환되어 최소 2개 이상의 Connection pool을 사용해야함
  • 결과
    • Block/NonBlock
      • 눈에 띌 정도로 확실하게 존재 100개의 요청 시 4초 vs 0.2초
    • 병렬 처리와 순차 처리
      • 테스트 기기 M1 (8 Core, 16GB mem)과 서버 EC2 (t2.micro, 1vCPU 1GiB mem)의 스펙 차이가 존재하여 성능 팔로업 필요
    • Connection pool
      • deviceToken 별 uri가 다르지만, 여러 소켓으로 나눠 요청을 보내는것이 Too Many Request 를 에방할 수 있는 방법으로 여겨짐

디바이스 토큰 저장
image

@jaewonLeeKOR jaewonLeeKOR added 🌟enhancement New feature or request 구현 개선 🦖 ✨feature New feature or requeest labels Aug 23, 2024
@jaewonLeeKOR jaewonLeeKOR self-assigned this Aug 23, 2024
@jaewonLeeKOR jaewonLeeKOR linked an issue Aug 23, 2024 that may be closed by this pull request
2 tasks
@jaewonLeeKOR jaewonLeeKOR changed the title Feat/#126/apns setting [FEAT] 애플 푸시 알림 구현 Aug 23, 2024
Copy link
Contributor

@tnals2384 tnals2384 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM👍

@jaewonLeeKOR jaewonLeeKOR merged commit f610335 into develop Aug 25, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🌟enhancement New feature or request ✨feature New feature or requeest
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT]APNs 연결
2 participants