[알림 기능 찾아 삼만리 링크 1주 차: (1) (2)]
[알림 기능 찾아 삼만리 링크 2주 차: (3) (4) (5) (6) (7) (8) (9) (10)]
[알림 기능 찾아 삼만리 링크 3주 차: (11)]
팀에서 중간 발표회 대비 여태까지 한 일을 서로 발표하는 시간을 갖기로 했다. 원래 목요일에 예정되었으나 하루 앞당겨진 만큼, 여태까지 작성한 개발 일지를 바탕으로 발표회 대비 자료를 정리했다. 코드 작성 못지않게 여태까지 무엇을 했는지 정리하는 일 또한 개발의 중요한 일부분이라고 생각했다. 오늘 하루는 경쟁하듯 튀어 오르는 생각을 가지치기하는 시간으로 보냈다.
1. 🔑 주요 기능
(1) 한 줄 소개
Spring Scheduler + SendGrid API를 사용하여 하루에 한 번 사용자들에게 맞춤형 채용 공고 URL 목록을 전송하는 서비스
(2) 상세 기능
① 이메일 알림 발송
- SendGrid API를 사용하여 HTML 형식의 이메일 발송
- 키워드로 사용자와 채용 공고 URL을 연결하여 사용자들에게 맞춤형 채용 공고 URL 목록 전달
② 이메일 알림 분석
- SendGrid 대시보드로 이메일 열람률, 이메일 내 링크 클릭률, 수신 상태 등 분석 가능
- 주 단위 또는 월 단위로 통계를 산출하여 성과 확인 가능
(3) 기술을 선택한 이유: 효율성 추구
① 비동기 처리로 이메일 전송 속도 단축
② Gmail 사용 시 발생하는 ‘Too many login attempts(로그인 시도 횟수 초과)’ 오류에서 자유로움
2. ⚙️ 기술적 의사결정
(1) Plain Text 이메일과 HTML 이메일 중 무엇을 사용할까?
① 배경
- 이메일 양식은 사용자 경험 및 시스템 효율성에 크게 영향을 미치는 만큼, Plain Text 이메일과 HTML 이메일 장단점을 비교하여 결정함
② 요구 사항
③ 대안 비교
- 장단점 비교
- 예시
④ 결정
- 2안 'HTML 이메일' 을 선택함
⑤ 근거
3. 🚨 트러블슈팅
(1) 문제
- 이메일 한 개 전송에 7초가 걸려서 많은 사용자를 유치하기가 어려움
(2) 상황 가정
(3) 문제 해결 시도 사항
- 사용자 식별자처럼 사용하지 않는 데이터는 조회 시 제외하기
- transform() 메서드 및 List 대신 Map 사용하기
- 반복문 중첩 줄이기
- 스레드 풀(thread pool)을 10개로 정의하기
(4) 문제 해결 전 결과
(5) 문제 해결 후 결과
(6) 문제 해결 시도 전후 비교
4. 📈 향후 계획
(1) 🏅 이메일 알림 서비스 리팩토링하기
- 1순위: 클래스, 변수, 메서드 이름 수정
- 2순위: 패키지 세분화
- 3순위: 수신자 검증 로직 반영
(2) 🥈 대용량 데이터를 문제없이 처리할 수 있도록 이메일 알림 서비스 개선하기
- 1순위: Gmail 사용 시 속도 vs 로직 분리 및 SendGrid 사용 시 속도 비교하기
- 2순위: 사용자 500명, 키워드 1개, 채용 공고 1000개 데이터로 병목 현상 위치 확인 및 트러블슈팅
- 3순위: 전송한 뒤에는 저장할 필요가 없는 알림 객체를 어떻게 처리할지 고민 및 의사결정 반영하기
(3) 🥉 푸시(Push) 알림 구현하기
- 1순위: 이메일 알림 서비스의 로직 재사용 + FCM + 카카오톡 API로 구현하기
- 2순위: Redis vs Kafka vs RabbitMQ 장단점 비교 및 의사결정 후 반영하기
줄글로 읽기 힘들 때는 종종 표를 활용하곤 한다. 이번 주 금요일까지 발표 자료 초안도 만들어야 하는데, 이렇게 정리하는 방식이 한 사람에게라도 도움이 되면 좋겠다. 이번 주말까지는 계속 문서화 작업을 할 듯한데, 이런저런 개념도 공부해서 부족한 지식을 메워봐야겠다.
별로 한 일이 없는 줄 알았는데 생각보다 정리할 거리가 많아서 놀랐다.
어쩌면 맨 밑바닥부터 한 단계씩 오르며 개발해 왔다는 방증이 아닐까?
Day 13에서 계속…….
'Troubleshooting: 무엇이 문제였는가? > 취하여 프로젝트' 카테고리의 다른 글
3주 차: 알림 기능 찾아 삼만리 Day 16 - 구현 사항 설명하기 (0) | 2025.03.02 |
---|---|
3주 차: 알림 기능 찾아 삼만리 Day 11 - 안녕, 지메일! 'Too many login attempts'에 질려서 SendGrid로 갈아탄다! (0) | 2025.02.25 |
3주 차: 알림 기능 찾아 삼만리 Day 10 - 로직 나누기는 마치 원심분리기 같아요. 영혼까지 분리될 뻔했거든요 (2) (0) | 2025.02.24 |
2주 차: 알림 기능 찾아 삼만리 Day 9 - 로직 나누기는 마치 원심분리기 같아요. 영혼까지 분리될 뻔했거든요 (1) (0) | 2025.02.23 |
2주 차: 알림 기능 찾아 삼만리 Day 8 - 데이터 조회 따로, 저장 따로, 전송 따로 나누면 어떨까? (0) | 2025.02.22 |