Skip to content

seeker1207/StudyOn-pointlike-springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TMTB_be_realtime

📖StudyOn MSA프로젝트 실시간, 방 API 서버 구현

✔️ 프로젝트 개요

많은 사람들이 집이 아닌 공공시설에서 공부를 하는 주된 이유는 집에 있는 많은 방해요소를 피할 수 있을 뿐 아니라 자신이 공부하는 모습을 타인에게 노출시키는 것이 자극제로 활용될수 있고 이러한 사람들이 모여 자연스레 공부 분위기를 형성하기 때문입니다.

또한 카페의 경우 적당한 소음과 밝은 분위기로 공부하기 좋은 환경이 조성되어 있어 적지않은 사람들에게 선호되고 있습니다.

이러한 부분들을 온라인으로 진행할수 있는 플랫폼이 있으면 어떨까 라는 고민에서 StudyON 프로젝트를 고안하게 되었습니다.

StudyON은 집에서 공부를 하더라도 온라인에 접속하여 하루에 공부할 목표를 작성 및 확인하고 이를 타인에게 공개함으로서 충분한 자극제가 될 수 있게함과 동시에 효율적으로 공부 시간을 관리하여 이를 통해 공부 습관을 잡아주는 온라인 서비스입니다.

StudyON을 통해 많은 사람들이 공간적 제약을 받지 않는 온라인 상에서 서로가 서로의 자극제가 되어 공부하며 자신에게 맞는 공부 습관을 만들어 세운 목표를 성공적으로 달성할 수 있을 것 입니다.

✔️ 프로젝트 전략

본 서비스는 2가지의 핵심 전략 기술을 가지고 있습니다. 자신의 공부 시간 및 쉬는 시간을 스스로에 맞게 설정 할 수 있는 타이머 기능과 공부 패턴과 맞는 사람들을 스터디 방에 묶어주는 그룹 기능입니다.

먼저 타이머기능에서는 뽀모도로 공부 방법과 이를 활용한 StudyON만의 공부 방법을 선보입니다. 기존의 뽀모도로 공부 방법은 타이머를 이용하여 25분간 집중하여 공부하고 이후 5분간 휴식하는 것을 반복하는 방식입니다. 이렇게 정해진 틀의 공부 방법은 모두에게 효율적으로 느껴지진 않을 것입니다.

StudyON에서는 이를 개선하여 자신만의 공부 시간과 쉬는 시간을 설정하여 자신에게 알맞는 공부패턴과 습관을 찾게 할 것입니다.

또한 타인의 성취와 진행상황을 자극제로 하여금 공부할 수 있도록 하기 위해 그룹을 형성해주는 기능을 제공합니다.

게시판을 이용하여 매 시간마다 울리는 알람을 제 때 끄는 유저와 할 일 목록을 완수할 때마다 누가 어떤 할 일을 완료했는지 표시해주며 그로 인해 자극을 받아 공부에 더욱 집중할 수 있도록 합니다.

이와 같이 자신의 공부 패턴과 유사한 사람들을 찾아 같은 공부 및 쉬는 시간을 공유하고 서로가 서로에게 자연스레 동기부여를 할 수 있습니다.

✔️ 도메인 모델링 및 주요기능

  • 타이머 기능 뽀모도로 공부 방법을 활용한 studyON만의 공부 방법을 적용한 타이머입니다. 공부 시간과 쉬는 시간의 알람이 각각 존재하여 설정된 시간에 맞춰 타이머가 작동됩니다. 접속한 방의 모든 유저에게 동일한 타이머가 실행됩니다.

  • 스터디 그룹(방) 기능 원하는 공부 패턴을 적용한 방을 만들거나 자신이 원하는 공부 패턴을 적용된 스터디 방에 입장 가능합니다. 스터디 방에 접속하면 타이틀, 공지사항, 타이머, 게시판 등을 공유하고 게시판에는 알람 끈 유저 목록, todo 체크한 유저 목록, 현 공부 주기를 띄워줍니다.

  • Todo와 Calendar 기능 오늘 자신이 할 일을 적어둘 수 있는 Todo가 존재합니다. 이에 지난 날의 할 일 목록을 확인할 수 있는 캘린더가 함께 존재합니다. 또한 캘린더에는 만족도평가에 따른 만족도를 표시하여 한 달의 자신의 공부 평가를 확인할 수 있습니다.

  • Point 기능 포인트를 이용하여 해당 서비스를 이용하게 됩니다. 회원가입 시 1000포인트 지급되고 스터디 방을 만들거나 입장했을 때 차감되며 알람을 제때 끈 ‘오늘의 공부왕’ 타이틀을 가지게 되면 차감되었던 포인트를 환급받을 수 있습니다.

✔️ 아키텍처 설계

  • 아키텍처는 기본적으로 docker와 eks를 통한 컨테이너 기반의 아키텍처 입니다. MSA구조 아래서 도메인별로 나누어진 서비스 별로 각각의 서버들이 Pod로 띄워져 있습니다.

  • 외부 접속에대한 라우팅은 쿠버네티스의 인그레스 기능을 활용하여 라우팅하였습니다. 또한 프론트엔드는 Nginx에 올려 좀더 빠른 페이지전달이 가능하도록 했습니다.

  • RealTime Service의 경우 실시간 채팅을 관리하는 서버인데,
    각각 pod로 나누어진 서버들이 공통적으로 사용자의 세션정보를 가지고 있어야하므로 redis를 통해 그 정보를 공유할수 있게 하였습니다.
    또 redis의 경우에도 클러스터링을 통해 요청을 분산시키고 가용성을 높였습니다.

✔️ 클래스 설계

✔️ 데이터베이스 설계

✔️ real-time 서비스에 대한 시퀸스 설계도

방안에서 사용자들의 세션을 관리하고 알람 이벤트를 관리하는 순서도를 나타내는 시퀸스 설계도 입니다.

✔️ 결과 화면

  1. 메인 페이지

  1. 마이페이지

마이페이지에 접속하면 자신의 프로필, Todo List, 캘린더를 확인할 수 있습니다.

  1. 스터디 방 만들기 페이지

스터디 방 만들기 페이지에 접속하면 설정들로 이루어진 폼이 있습니다. 공부 시간(study time), 쉬는 시간(break time), term 횟수 등 설정하여 자신이 운영할 스터디 방을 만들게 됩니다. 태그를 설정하여 추후 일반유저들이 스터디 방을 검색할 때 찾을 수 있도록 합니다.

  1. 스터디 방 리스트 페이지

스터디 방 리스트 페이지에 접속하면 방장들이 만들어둔 스터디 방이 띄워지게 됩니다. 원하는 태그와 방제를 클릭하면 스터디 방에 대한 정보가 나오게 됩니다. 설정된 방의 옵션이 자신의 공부 패턴과 유사하다면 접속하여 함께 공부하게 됩니다.

(원하는 스터디 방을 클릭했을 때 나오는 스터디 방에 대한 정보 확인)

  1. 스터디 방 입장 페이지

  • 스터디 방 입장했을 시 보여지는 화면입니다. 크게 Todo List, 타이머, 실적게시판으로 이루어져 있습니다. 첫 번째로 Todo List의 경우, 마이 페이지에 있는 Todo List와 동일합니다. 마이 페이지에서 작성하고 와도 되지만 입장했을 때는 마이 페이지까지 갔다가 들어오지 않아도 스터디 방 입장 페이지에서 추가, 수정, 삭제가 가능합니다.

  • 두 번째로 타이머의 경우, 공부 시간과 쉬는 시간의 주기를 표현한 타이머입니다. 설정된 시간에 맞춰 실행되게 되고 start버튼은 방장에게만 권한이 있습니다. 방장이 Start를 누르게 되면 스터디 방 내에 있는 유저들 모두 동일한 타이머를 공유합니다. Study 타이머가 끝나게 되면 쉬는 시간 알람과 함께 알림창을 끄고 이때 break 타이머는 진행됩니다. 이를 설정해둔 주기(term)에 맞춰 반복하게 됩니다.

세 번째로 실적게시판은 아래의 4가지의 형태를 조회할 수 있습니다. 해당 게시판에 올라오는 문구들은 같은 스터디 방 내에 있는 유저들끼리 서로 공유됩니다.

  1. 접속한 유저 문구 ‘ㅇㅇㅇ님이 들어왔습니다.
  2. 알람을 끈 유저들의 문구 ‘ㅇㅇㅇ님이 ㅇ번째 알람을 눌렀습니다.
  3. todo를 체크한 유저와 체크 목록 문구 ‘ㅇㅇㅇ님이 ㅇㅇㅇㅇ를 완료했습니다.’
  4. 현재 공부 주기 문구 ‘쉬는 시간이 끝나면 ㅇ번째 공부 시간이 시작됩니다.’

그 외에 주기(횟수)가 끝난 후 알람을 제때 끈 사용자들을 ‘오늘의 공부왕’이라는 타이틀과 함께 마지막 성취도 평가전 뿌려줍니다. 또한 현재 스터디 방의 패턴에 대해 만족하는 사용자들을 위해 ‘연장할래요’ 버튼을 클릭한다면 동일한 패턴의 스터디 방을 유지시킬 수 있습니다.

  1. 사용가이드

✔️ 기대효과 및 개선사항

  1. 개선 사항
  • 노트북을 사용하지 않고 공부하는 사람들도 많기에 app버전의 출시가 필요합니다. 화면 크기에 제약이 있기 때문에 잠금상태에서 타이머의 남은 시간과 남은 주기 정도 보여주고 App에 접속했을 때, 사람들이 어떤 실적을 달성하고 있는지 확인하도록 합니다. App을 이용하게 되면 해당 App 제외하고 다른 App을 사용하지 못하도록 하여 공부에 더욱 집중시킬 수 있습니다.

  • 소셜 인터랙션이 지나치게 적다는 피드백을 받아 추후 사용자들의 요구 사항에 따라 채팅 기능과 메시지 기능 혹은 랭킹 기능을 추가할 예정입니다. 사용자의 유입이 증가하면 기능을 추가하여 자신과 공부 패턴이 맞는 사람들과 함께 꾸준하게 공부습관을 구축하도록 하겠습니다. 또한 현재 가지고 있는 뽀모도로 기법을 활용한 studyON의 공부법 외에도 시간 누적 공부법, flowtime technique 기법 등 다른 형태의 공부법을 제공할 예정입니다.

  • 이후 web, app 출시가 되면 온라인에서만 이뤄지는 것이 아닌 오프라인과의 연계도 고민할 예정입니다. 실제 스터디카페에서 와이파이 망을 이용하여 온라인 스터디룸을 만들고 공부 현황을 공유하며 학습자간 공부하는 모습을 통해 학습 분위기 조성에 활용합니다. 스터디카페 자체가 이미 수동적으로 자습하는 공간이기에 studyON에서 제공하는 공부법을 활용한다면 더 효율적으로 공부할 수 있게 도와줍니다.

  1. 기대 효과 본 서비스를 활용하면 3가지의 효과를 기대할 수 있습니다.
  • 사용자들의 효율적인 시간 관리입니다. 하루의 할 일을 기록하고 그에 따른 시간 분배를 계획하게 하여 집에 혼자 있으면서 시간 관리에 어려움을 느끼는 사용자들을 도와줍니다.
  • 가상 공간에서의 스터디라는 점에서 장소 문제를 해결합니다. 코로나 19사태로 인해 카페에서의 취식이 금지되고 장기간 머무르는 것을 자제시킵니다. 이에 집에서도 공부에 집중할 수 있도록 도와주는 본 서비스를 통해 장소 문제를 해결해줍니다.
  • 온라인 스터디 공간을 제공하면서 카페나 스터디 카페에 가야할 요인을 감소시켜 사용자들의 스터디 공간 장소에 대한 경제적 부담을 줄여줍니다.

About

📖StudyOn MSA프로젝트 Point API 서버 구현

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages