어르신들이 물리적 제약을 극복하기 위해 가족, 지인들과 영상통화를 하고,
디지털 소외를 해소하기 위해 실시간 응답 서비스를 제공하고,
디지털 접근성을 향상 시킬 수 있는 부가 기능을 제공하는 서비스
- Android Studio
- Java 17 (OpenJDK 17)
- Spring boot 3.2.1
- 의존성 관리
- Auto Configuration
- Spring Data JPA
- 객체 중심의 ORM 쿼리 활용
- Spring security
- JWT 기반 토큰을 활용한 인증
- ExceptionEntryPoint를 활용한 예외 처리
- Firebase
- 화상통화 푸쉬 알림을 통한 편의성 증대
- MySQL
- 테이블의 성격을 고려한 객체 중심의 엔티티 설계
- N:M 관계를 조인 테이블을 활용해 1:N, M:1로 풀어내 개발 복잡도 저하
- Jenkins
- CI / CD 구축을 통한 개발 효율성 증가
- Openvidu
- 화상통화 구현 플랫폼
- Docker
- Docker hub
- 이미지 업로드를 통한 버전 관리에 활용
- AWS EC2
- AWS S3
- 회원 프로필 사진 저장
- 카카오 로그인 지원
- JWT 토큰 인증 기반
- 전화번호 인증
- 공공 데이터 포털 API에서 날씨 정보 추출
- GPS를 통해 현재 주소 조회
- 현재날짜부터 일주일 후 까지 다음 정보 제공
- 현재 기온
- 최저/최고 기온
- 하늘 상태 (맑음, 구름 많음, 흐림)
- 강수 형태 (없음, 비, 비/눈, 눈, 소나기)
- 네이버 뉴스를 크롤링하여 실시간으로 제공
- 5개의 카테고리 - 정치, 경제, 사회, 생활, 세계
- 생성된 모임과 유저 조회 및 선택
- 다대다 영상통화 기능
- 초대받은 사람에게 알람
- 상담원 개인 상담 방 생성/삭제
- 상담원과 클라이언트 영상 상담 기능
- 복지 서비스 Open API를 이용한 복지 목록 조회
- Youtube ID 값을 이용한 영상 재생
- 퍼즐 게임, 짝 맞추기 게임
- 각 게임마다 점수 기준으로 랭크 계산 및 조회
- 회원 정보 조회 (이름, 전화번호, 프로필 이미지)
- 프로필 이미지, 전화번호 수정
- 모임 설정
- 모임 생성 및 수정 (이름, 유저 리스트)
- 모임 삭제
- 연락처 동기화 (사용자의 연락처와 온정 회원을 비교)
- 로그아웃
- FCM 토큰 관리
- 영상통화 초대 시 푸시 알람 요청 (헤드업 알림)
-
회원가입/로그인
- 노인들이 사용하기 쉽도록 카카오 로그인 적용
- JWT를 활용하여 stateless한 상태 유지
-
날씨
- 데이터를 캐싱하여 성능 향상
- 시간당 API 호출량이 대량으로 몰릴때 공공데이터 포털에서 요청 거부
- 매번 API를 호출하는게 아닌 base_time을 기준으로 데이터를 캐싱
- Error 평균 : 62% → 0%
- 락을 통해 동시성 문제 해결
- 변하는 부분과 변하지 않는 부분을 나누어 전략 패턴을 적용
- 추가로 날씨와 관련된 API를 호출하는 기능이 생긴다면 클라이언트를 건드릴 필요없이 날씨 전략 인터페이스를 구현만 하면됨
- 유지보수 용이
- 올바른 인덱스 설계를 통해 쿼리 성능 개선
- Response Time : 71.8% 감소
- Throughput : 73% 증가
- 데이터를 캐싱하여 성능 향상
-
뉴스
- 뉴스를 분야별로 접할 수 있도록 분야별 사이트 웹 크롤링 사용
- 프론트단에서 정적 크롤링을 사용하여 실행속도 증가
- 크롤링 과정 중 코루틴을 사용하여 비용 절감, 복잡성 저하
-
게임
- 유저의 게임 점수를 조회할 때 마다 지연로딩으로 쿼리문이 N+1번 발생하는 문제에서 Fetch Join 사용