한화시스템 BEYOND SW 11기/실버케어 플랫폼 프로젝트 10

[Spring]추천 알고리즘 - 콘텐츠 기반 필터링

내가 진행한 프로젝트는 사용자에게 크게 2가지 측면의 서비스를 제공한다.하나는 스마트 워치로 부터 연동된 건강데이터(걸음수, 심박수, 수면 등) 모니터링 서비스를 제공하는 것이고다른 하나는 사용자에게 운동,독서,취미,요리 등 다양한 소모임 공간을 제공하는 것이다.우리의 서비스는 실버세대를 타깃으로 하여 건강 모니터링 서비스를 통해 실버세대들의 신체적 건강을 증진시키고,소모임 커뮤니티 공간을 제공하여 실버세대들의 사회적 고립감을 해소하여 정서적 건강을 향상시키는 것이 목적이었다. 그러나, 실버세대들의 신체적 건강과 정서적 건강 측면 두 가지를 향상시킨다는 목적이 있음에도 불구하고건강모니터링 서비스와 소모임 서비스의 '분절성'이 도드라졌다.그래서 도입한 것이 개인의 건강과 성향을 바탕으로 적합한 소모임을 추..

[Spring]스프링 배치를 통한 대용량 데이터 처리 작업

스프링 배치란?일정량의 작업을 한 번에 묶어서 정해진 시간에 자동으로 처리할 때 사용하는 것으로 대용량의 데이터 처리에 적합한 프레임워크다.보통 아래와 같은 예시에서 사용된다. ex.-쇼핑몰에서 하루 동안의 주문 정보를 모아 매일 자정에 정산 처리-고객 목록을 읽고 이메일을 대량 발송 우리 팀의 프로젝트에서도 이런 배치 작업이 필요했다.스마트워치를 통해 사용자의 건강데이터가 축적되면, 이를 매일,매주,매월 새벽 1시에 챗GPT API로 일간/주간/월간건강리포트를 만들어내는 작업이 있었기 때문이다.모든 유저에 대해 AI리포트를 생성해야하므로 이는 배치 작업에 적합했다. 0.핵심개념-Job:배치작업이 이루어지는 실행단위예를 들어서, 우리 프로젝트에서는 3개의 Job이 있었다. 매일 새벽 1시에 실행되는 일간..

[AWS]WebRTC를 통한 1:1화상 통화 구현-4(TURN 서버 구축)

이전 글에서 개념~백엔드 코드까지 1:1 화상채팅을 하고 난 뒤 배포까지 진행하니 한 가지 문제가 발생했다.두 사람이 같은 로컬네트워크 환경에서는(ex.같은 와이파이 네트워크 망을 쓴다고 한다던지) 화상채팅이 잘 되는데 떨어져있는 상태면 화상채팅이 되질 않았다.개념편에서 복잡한 네트워크 환경에서는 STUN서버를 이용해도 연결이 불가할 경우에는 TURN 서버라는게 있다고 간단히 언급하고 넘어가고 코드도 STUN 서버까지만 이용하는 것으로 구현했었는데. 이게 원인이었다.(STUN 서버만 이용해도 충분하다고 들었는데, 전혀 그렇지 않았다. TURN서버까지도 이용하는 게 맞는 것 같다) 그렇다면 우리가 무료로 구글의 STUN서버를 이용했듯이, TURN서버도 유료로 임대하는 방식도 있다고는 하나,여기서는 그냥 A..

[Spring]WebRTC를 통한 1:1화상 통화 구현 -3(백엔드)

이전 설명에서 보았듯이, WebRTC는 자바스크립트로 이루어진 코드가 대부분을 차지할 만큼 프론트 비중이 큰 기술이다.백엔드가 관여하는 부분은 클라이언트(브라우저)와 클라이언트(브라우저) 간에 P2P연결이 이루어지기 위해서 SDP 와 ICE Candidate정보들을 서로 주고 받아야하는데 이 부분을 백엔드가 담당하고 이 역할을 하는 것이 시그널링 서버다. 그리고 SDP와 ICE Candidate 같은 시그널링 정보를 실시간으로 안정적으로 양방향으로 주고받아야기 때문에 프론트와 백엔드간의 통신의 HTTP통신이 아닌 웹소켓 통신을 통해 이루어져야한다. 시그널링 서버에서는 두 가지 클래스가 필요하다. 웹소켓 설정 클래스와 핸들러 클래스설정 클래스에서는 어떤 URL로 웹소켓 연결 요청이 들어오면 핸들러 클래스..

[Vue] WebRTC를 통한 1:1 화상 통화 구현 -2(프론트)

우선 이 글을 읽기 전에 반드시 이전에 썼던 WebRTC 개념에 관해 작성한 1번 글을 읽고 오기를 권한다.https://gotopm.tistory.com/25 [개념]WebRTC 개념 정리0.WebRTC(Web Real-Time Communication)이란?인터넷 브라우저나 앱에서 플러그인 없이 오디오,비디오와 같은 데이터를 실시간으로 주고받는 통신을 가능하게 해주는 기술로 P2P방식으로 작동하여 서버에gotopm.tistory.com 0. 우선 아래와 같은 화면을 구현하였다.코드가 길다. 따라서 설명을 위해 핵심적인 부분을 나누어서 코드를 올렸다.전체 코드는 제일 마지막 하단부에 첨부했다.우리 팀의 프로젝트에 있는 코드라 그대로 복붙해서 써가면 내 아이디와 상대방 아이디를 받아오는 부분 때문에 작..

[Spring]MSA환경에서 JWT 로그인 구현

본 게시물은 아래 MSA강의를 참고하였습니다.(MSA에 대해 처음부터 공부하고 싶은분들은 아래 강의듣는 것도 추천드립니다 :) )https://www.inflearn.com/course/spring-cloud-%EA%B8%B0%EC%B4%88-msa 빠르게 배우는 Spring Cloud 기초(MSA) 강의 | bradkim - 인프런bradkim | , 1. 학습내용📕모놀리식에서 MSA로의 서버전환미리 준비된 모놀리식 서버에서 모듈간 의존성을 제거하며 MSA 서버로의 전환[사진]SPRING CLOUD핵심요소 학습API GATEWAY, EUREKA 등 기본 API라우팅www.inflearn.com MSA에서 로그인 구현이 다른 이유. MSA는 Monolithic 환경과 다르다.Monolithic에서는..

[Spring] 결제(포트원) 연동[결제 전/후 검증까지]

포트원 이란? 결제 시스템을 구현하려면 은행API나 카드사 결제 시스템을 직접 붙이면 될 것이지만,각 결제 수단마다 연동방식도 다르며 무엇보다 보안 인증이 복잡하여 쉽사리 할 수 없는 것이 현실이다.그래서 PG사(Payment Gateway)를 사용한다.(PG: 온라인 스토어와 카드사, 은행 사이에서 결제 승인을 중계해주는 시스템) 그런데 우리 입장에서 이 PG사의 결제시스템을 붙이는 것도 쉽지 않고,결제가 올바르게 이루어진 것인지에 대한 사전,사후 검증에 대한 API까지 직접 구현하기가 쉽지 않다.그래서  구현하기가 쉬우면서, 사전/사후 검증에 대한 API까지 제공하는 포트원을 결제시스템으로 많은 개발자들이 이용한다.  이 포스트는 포트원 세팅-백엔드 세팅(결제 전 검증, 결제 후 검증)-프론트 세팅 ..

[FireBase]FCM 앱-스프링 연동

구현 이유 지난번 포스트를 통해, 헬스커넥트의 데이터를 가지고 와서 스프링서버로 전송하는 자체 앱개발을 통하여스마트워치를 통해 쌓은 헬스,수면데이터를 스프링서버로 가지고와서 웹서비스로 활용 할 수 있는 구조를 만들었다.그런데 사실 웹서비스에서 실시간으로 바뀌는 내  건강데이터를  조회하려고 할 때마다 앱에서 스프링서버로 건강데이터를 보내야한다. 그러나 내가 개발한 앱은 화면에서 버튼을 누르면 스프링서버로 데이터가 전송되는 구조다.따라서, 사용자가 서비스에서 건강데이터를 조회하려고 하면 먼저 스프링서버가 앱에게 '데이터를 달라' 라고 요청을 하고,앱이 그에 따라 자동으로 데이터를 스프링서버로 전송하는 구조를 만들어야했다.그런데 서버와 서버간에 통신을 하는 것처럼 서버와 앱은 통신할 수 없다.앱은 서버처럼 ..

[Android]헬스커넥트 연동 앱 만들기

개발이유 팀 프로젝트에서 핵심적인 기능이 스마트워치(갤럭시 워치)에 있는 건강 데이터를 스프링 서버로 가지고와 사용자에게 부가적인 서비스를 제공하는 것이었다.그러나 문제는 삼성헬스에서 내 스프링 서버로 데이터를 받는 API는 없다.갤럭시워치에 쌓이는 데이터는 내 모바일 앱의 삼성헬스에 연동되는데 그 데이터는다시 헬스커넥트(삼성과 구글에서 만든 앱)에 연동된다.그래서 건강데이터를 스프링 서버로 가지고 오는 유일한 방법은  헬스커넥트의 데이터를 가지고와서 우리 스프링 서버로 보내주는 앱을 만드는 것이다. 다만, 스프링 위주의 웹개발만 해봤을 뿐 앱개발과 코틀린은 처음이었다.그래서 아래 나같은 사람을 위해 차근차근(?) 설명해놓았으니 GPT에게 도움을 받아가면 충분히 할 수 있을 것이다. 1.안드로이드 스튜디..

[개념]WebRTC를 통한 1:1 화상 통화 구현 -1(개념)

0.WebRTC(Web Real-Time Communication)이란?인터넷 브라우저나 앱에서 플러그인 없이 오디오,비디오와 같은 데이터를 실시간으로 주고받는 통신을 가능하게 해주는 기술로 P2P방식으로 작동하여 서버에 부담이 적은 것이 특징이다.(p2p란? Peer to Peer의 줄임말로 서버를 거치지 않고 사용자끼리 직접 데이터를 주고받는 방식을 의미(peer는 동등한 위치에 있는 상대를 뜻하는 것으로 여기서는 사용자와 사용자를 의미한다)) 그리고 WebRTC를 구현하기 위해서는 아래 개념들을 반드시 숙지하고 있어야 한다. 1.Signaling(시그널링)위에서 WebRTC는 P2P 방식으로 작동한다고 했다. 먼저 P2P 통신이 가능하기 위해서는 이 Signaling이란 과정을 거쳐야한다.시그널링은..