Closed pykido closed 1 month ago
ex) 기본적으로 보호자는 매일 오후 9시 새로운 차트 업데이트가 있는 경우 알림을 받는다. -> 개인정보페이지에서 해당 시간 수정 가능
ex2) 요양보호사는 요양원에서 등록한 기본적인 알림 workflow를 기본값으로 세팅. 이후 개인정보페이지에서 해당 알림 CRUD 가능
ㅇㅎㅇㅎ 그러면 기본값을 보호자는 매일 아침 10시, 요양보호사는 매일 오후 5시로 해두는게 어떤가유? 그리고 스케쥴러의 경우 fastapi로 옛날에 1분마다 돌려봤을 때 딱히 무리는 없었는데 솔직히 요양보호사랑 보호자가 9시 5분 이렇게 설정 안하고 10분 단위, 30분 단위로 알림 시간을 정할 거 같아서 스케쥴러를 10분 혹은 30분마다 돌리는건 어떤가유?
기본적인 스프링 스케쥴러로는 복잡한 작업에 적합하지않다? 는 말도 있고, 단일 서버환경에서는 큰 문제가 없겠지만 만약 다중서버환경에서 해당 알림서비스를 운영해야한다면 더더욱 빡빡해질 것 같은...? 생각이 듭니다.
예를 들어, 선행조사한 케어* 서비스를 생각하면 약 1만개 이상의 요양서비스업체가 등록되어있는데, 그중 10% - 1000개의 기관만 저희서비스를 사용한다고 해도 서버확장은 필요할 것 같고 비용적인 측면에서는 scale out 전략을 취해야하지 않을까요... (어느정도에서 서버확장을 해야하는지 명확하게 판단내리기 어렵네요...ㅎㅎ;;)
만약 다중서버가 된다면... 알림에 대한 전략도 스케쥴러를 사용한다면 조금 많이 복잡해질 것 같습니다!! ( 근데 태윤님 생각에 무리없다 생각되시면 스케쥴러 사용해도 상관없을 듯 합니다! )
시간단위는 30분 단위로 통일해도 괜찮을 것 같습니다. 현 서비스 기획 상으로는 긴급하거나 특정 시간에 무조건적인 알림이 보장되는 것이 아닌, 조금 널널하게 생각해도 된다고 봅니당.
제 개인적인 의견이긴 한데, 오류로 인해 알림이 2번오는 경우는 절대 절대!! 없었으면 합니다... 해당 부분이 좀 불쾌감이 많이 느껴질 것 같아서요...
일단은 저희 스케쥴링 로직 자체는 굉장히 간단한 작업을 수행합니다. 10분~1시간 간격으로 알림 보낼 사람들한테 보내기만 하니깐용! 그런데 Quartz같은 경우는 초기 설정이 다소 복잡하고 DB와도 연관되어있는 방식이라 추후에 스케쥴러 로직이 복잡해진다면 고려해보려고 하였습니당!
30분 단위 좋아욤~!
ㅇㅎㅇㅎ 오류로 인해 알림이 2번 오는 경우는 제가 자신 있게 해결할 수 있을 거 같아요. amazon의 sqs를 사용하면 보내야할 알림을 큐(queue)에 쌓게 됩니다. 그렇기에 서버가 죽거나 에러가 나더라도 큐(queue)에 처리되지 않은 알림이 쌓여있으니 명시적으로 알림을 관리할 수 있어서 해당 방법으로 해결하면 좋을 거 같아요. 물론 지금 프로젝트 자체가 너무 규모가 작기도 하고 어디까지 실제 서비스처럼 동작하게 만들어야할지는 같이 의논해봐야하니깐용!
📝 이슈 설명
주기적으로 요양보호사 / 보호자에게 LINE 메시지를 보내는 API를 구현합니다.
1. 유저 플로우 (보호자)
(1) QR 코드 혹은 친추 초대 URL을 통해 Line 앱에 들어갑니다. (2) 보호자가 친구 추가 버튼을 누르자마자 서버에서는 해당 사용자의 UserId를 토대로 보호자인지 요양보호사인지 Stranger인지 확인합니다. (3) 보호자임이 확인된다면 DB에 Line에서의 UserId를 저장하고 웰컴 메시지를 띄웁니다.
(4) 보호자가 채팅창에 알림을 받고 싶은 시간을 입력합니다.
2. 유저 플로우 (요양보호사)
(1) QR 코드 혹은 친추 초대 URL을 통해 Line 앱에 들어갑니다. (2) 보호자가 친구 추가 버튼을 누르자마자 서버에서는 해당 사용자의 UserId를 토대로 보호자인지 요양보호사인지 Stranger인지 확인합니다. (3) 요양보호사임이 확인된다면 DB에 Line에서의 UserId를 저장하고 웰컴 메시지를 띄웁니다.
(4) 요양보호사가 채팅창에 알림을 받고 싶은 시간을 입력합니다.
3. 유저 플로우 (Stranger : 보호자도 요양보호사도 아닌 사람)
(1) QR 코드 혹은 친추 초대 URL을 통해 Line 앱에 들어갑니다. (2) 보호자가 친구 추가 버튼을 누르자마자 서버에서는 해당 사용자의 UserId를 토대로 보호자인지 요양보호사인지 Stranger인지 확인합니다. (3) Stranger라면 아래와 같은 웰컴 메시지를 띄웁니다.
☑️ TODO