[SSA] 서버 SSE 기능 구현
·
SSA/Back
SSA의 알림 시스템 설계: SSE + FCMSSA는 오프라인 강의 일정 스케줄링 서비스입니다. 강사가 강의 일정을 등록하거나 수정하면, 학생은 전체 강의 목록 또는 강사 이름, 강의명을 통해 강의를 검색하고 수강 신청할 수 있습니다.이후, 강사는 수강 신청 알림을 받게 되고, 신청을 수락 또는 거절할 수 있습니다.이 과정에서 학생 역시 수락/거절 결과에 대한 알림을 받게 됩니다. SSE 란 ?Server-Sent-Event의 약자로, 서버에서 클라이언트로 실시간 이벤트를 전달하는 웹 기술입니다.연결 시작:클라이언트에서 HTTP 프로토콜을 통해 요청서버는 text/event-stream 이라는 content-type으로 응답이후 client / server 간 데이터 파이프라인이 형성되어 연결서버에서..
[SSA] 서버 FCM 기능 구현
·
SSA/Back
간단하게 알림 서비스 기능에 대해서 정리해 봤습니다.이것보다 더 자세한 내용은 각각을 찾아 보도록 하겠습니다.기술설명장점단점사용 사례폴링 (Polling)클라이언트가 일정 주기로 서버에 데이터 요청구현이 간단네트워크 트래픽 증가, 실시간성 떨어짐간단한 상태 체크롱 폴링 (Long Polling)요청이 도착할 때까지 서버가 응답을 대기실시간성 향상연결이 많아지면 서버 부하 증가Slack의 알림, 일부 AJAX 채팅SSE (Server-Sent Events)서버가 클라이언트로 지속적인 단방향 메시지 전송브라우저 지원, 단방향 푸시에 적합양방향 통신 불가, 브라우저 한정실시간 알림WebSocket서버-클라이언트 간 양방향 통신실시간성, 양방향 모두 지원복잡한 인프라 구성 필요채팅, 게임, 협업 앱FCM (Fi..
[SSA] 강의 도메인
·
SSA/Back
강의와 관련한 기능이 핵심인 서비스인 만큼 강의 도메인을 보여 드리겠습니다 .. 우선 강사와 학생이 메인이지만 학부모가 강사에게 면담을 신청할 수도 있도록 구성해 봤습니다.그런데 강의와 면담 간에 동일한 필드가 존재함을 인지하고 정규화를 시도했습니다. @SQLRestriction("deleted_at is null")@SQLDelete(sql = "UPDATE schedule SET deleted_at = CURRENT_TIMESTAMP WHERE id = ?")@Inheritance(strategy = InheritanceType.JOINED)@DiscriminatorColumn(name = "type")@Table(name = "schedule")@NoArgsConstructor(access = A..
[SSA] 회원 도메인
·
SSA/Back
회원가입을 하게 되면 강사, 학생, 학부모로 나뉘어서 진행하게 됩니다. 기본적으로 공통 필드를 가진 Member로 묶어냅니다.Member의 모든 하위 클래스는 Member 클래스와 조인 전략을 사용합니다. - 조인 전략을 사용하게 되면 모든 Member의 id를 하나의 테이블에서 관리할 수 있어 회원 간 구분이 용이합니다.- 다만 하위 테이블에서 조회를 하게 되면 Member와 조인을 하게 되어 성능이 다소 떨어질 수 있습니다. 싱글 테이블 전략을 사용하지 않은 이유는- 테이블 간 메모리를 효율적으로 사용하고- 불필요하게 가지고 있는 컬럼을 제거하기 위함입니다 클래스마다 테이블 전략을 사용하지 않은 이유는- 회원 간 id가 겹칠 수도 있고- 여러 테이블을 함께 조회할 때 UNION을 사용하기 때문에 성능..