Giter Site home page Giter Site logo

belly-watch's Introduction

Belly-watch

지나친 배꼽시계


👨‍👩‍👦‍👦 레포 소개

식사 시간마다 다양한 방법으로 알림을 해주는 서비스 입니다.

아래 키워드를 학습하고 실습하기 위해 만들었습니다.

알림, SSE, 스케줄링, 비동기 요청 및 예외처리, 멀티 스레드, 스프링배치, ApplicationEventPublisher, HTTPClient, FCM, AWS SES, AWS SNS


👨‍👩‍👦‍👦 기능 목록

(Spring Scheduler, 비동기)

  • 아침 식사시간 알림을 FCM 기반 푸시 알림으로 제공한다.
  • 점심 식사시간 알림을 AWS SES 기반 메일 알림으로 제공한다.
  • 저녁 식사시간 알림을 AWS SNS 기반 SMS[LMS] 알림으로 제공한다.

(SSE, SSE는 클라이언트의 첫 요청이 있어야 동작한다. 따라서 요청 이벤트를 플랫폼 접속으로한다)

  • 플랫폼 동시 접속자수를 SSE 기반 실시간 알림으로 제공한다.
  • 메인 게시판 댓글을 SSE 기반 실시간 업데이트로 제공한다.

(spring-boot-starter-mail 와 google stmp 서버 기반)

  • 일주일에 외식을 세번 이상하면 메일로 “부자” 라고 전송한다.

(ApplicationEventPublisher, HTTPClient 기반)

  • 유저가 “서비스가 도움이 되요” 를 누르면 관리자 디스코드로 알림이 전달된다.

(슬랙봇)

  • 유저가 “서비스가 도움이 안되요” 를 누르면 관리자 슬랙으로 알림이 전달된다.

(웹서버 배치서버 분리, DB 공유, 배치서버는 쿼츠의 API 트리거로 실행)

  • 관리자 페이지에서 “잘가라” 버튼을 누르면 탈퇴한 사용자 정보가 지워진다.


👨‍👩‍👦‍👦 생각해볼 점

  • SSE 는 클라이언트가 종료되면 요청이 끊긴다. 그래서 서비스에 접속할때만 실시간으로 제공하는 알림만 제공한다.
    클라이언트가 종료 되어도 사용할 수 있는 방법 알아본다. (백그라운드, 서비스 워커)

  • SSE 중복 알림 문제를 해결한다.

  • SPA 환경에서 발생하는 SSE 문제를 해결한다.

  • 분산 환경에서 발생하는 SSE 문제를 해결한다. (pub/sub 로 풀어보기, 레디스 기능만으로도)

  • 알림을 위해 외부에 비동기 요청할 때 발생할 수 있는 예외 및 재처리 방법을 고민한다.

  • ApplicationEventPublisher를 통해 이벤트 기반 기능을 사용해본다. (EDA)

  • HTTPClient 도구를 비교한다. (WebClient, RestTemplate, FeignClient)

  • 스케줄러 도구를 비교한다. (SpringScheduler, Quartz)

  • 배치와 API 서버를 모듈로 구분한다.

belly-watch's People

Contributors

juwoongkim avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.