현재 개발자 사이드 프로젝트 팀 매칭을 하고매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 - 개발 배경 -1차 배포를 하고 지인들에게 내가 만든 서비스를 피드백 받았다. 피드백 결과 기존 방식인 카카오톡 오픈채팅방으로는 팀 매칭이 힘들다는 평가를 받았다. 우리끼리도 어느정도 예상하고 있었던 문제점이기에 채팅 기능을 구현하기로 결정하였다. - 채팅의 특성 -1. 채팅은 일반 게시물 보다 쌓이는 데이터 양(Insert)이 많다.2. 채팅은 Update, Delete 연산을 할 일이 없다.3. 채팅은 프라이버시와 보안이 중요하다.4. 채팅은 새로고침(요청)을 하지 않아도 실시간으로 주고 받을수 있어야 한다. - DB 선정 - 개요채팅 메세지는 기존의 데이터보다 데이터 양이 많았고, 이..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 문제 상황 유저 프로필 사진, 팀의 썸네일 사진을 업로드 하기 위해서 사진 업로드, 삭제 기능을 만들어야 했다. 그래서 정석대로 MultipartFile로 사진 파일을 받아서 S3에 업로드를 하려고 했다, 하지만 MultipartFile은 프론트에서 Form 형식으로 보낼때만 받을수 있고 Json에 담아서 보낼순 없었다. 그렇다고 이미 Json으로 통신하도록 만들어진 프론트 코드를 변경하기엔 무리였다. + Json하고 MultipartFile를 같이 보낼수 있긴 하지만 결국 form으로 한번 감싸서 그 안에 Json과 MultipartFile을 넣어야 하는것이라서 프론트에서 번거롭기는 똑같았다. h..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 고민의 발단 우리 서비스에선 사용자끼리 팀 매칭을 하고 프로젝트/스터디 중간 중간에 팀원에 대한 피드백을 남긴다. 이 피드백 방식을 어떻게 가져가야 할지 고민을 정리해 봄으로써 의사 결정하고자 한다. 아이디어 먼저 피드백의 2가지 방식이 떠올랐다. 1. 별점 방식(코멘트 중심) 2. 당근의 온도 방식(키워드 중심) 장단점 비교 * 별점 방식 장점 : 이 사람이 팀원으로써 괜찮은 사람인지 명확하게 알 수 있다. 단점 : 처음 한번만 별점을 못받아도 별점이 매우 낮아져 그 후 유저가 활동을 안할수 있다. * 당근의 온도 방식 장점 : 초반에 온도가 깎여도 별점만큼 극단적으로 티가 나지 않는다. 단점 :..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 개요 나는 중간 발표때 시연을 해야해서 급하게 결과 화면을 뽑아내기 위해 "예외처리, 테스트 코드"를 작성하지 않고 API만 주구장창 개발하였다. 나와 팀원분 둘다 첫 프로젝트라 예외 처리를 하는 방법을 잘 몰랐었는데 시간이 많이 들 것 같아 중간 발표 이후에 만들기로 했던것이다. 이제 중간 발표(8/26)가 끝났으니 1차 배포 전까지 안정적인 서비스를 만들기 위해 예외처리를 적용하고자 한다. 예외 처리 설계 1. 먼저 예외를 공통으로 처리 할 advice 클래스 GlobalAdvice를 만들 예정이다. 그리고 GlobalAdvice 클래스 안에서 @ExceptionHandler를 이용하여 발생한 ..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 개요 오늘은 팀의 세부사항을 보여주는 API를 제작하였다 팀의 전체 내용을 보여줘야 하다 보니 꽤 많은 내용의 데이터를 전송해주어야 했다 피그마를 보고 "팀 멤버 DTO", "기여한 멘토링 DTO"는 나중에 메인페이지/팀원, 메인페이지/멘토링을 만들때도 카드 형식으로 똑같이 쓰일수 있을것 같아 따로 클래스로 만들어 놓았다. 그러다보니....? { "title": "Team Example", "description": "This is a sample team.", "leaderID": 12345, "teamUserCardList": [ { "profileImageURL": "https://exampl..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 고민의 발단 현재 개발중인 서비스는 팀 매칭 서비스이다 보니 하나의 게시물(팀)에 여러명의 user가 들어간다. 팀의 삭제 API를 만들다 보니 삭제 권한은 팀장한테 있는데 팀장이 맘대로(?) 팀 삭제를 한다면 다른 팀원들이 피해를 볼것 같았다. 그래서 삭제를 어떻게 구현을 하지 고민하게 되었다. 구글링 구글링을 통해 찾아보니 soft delete와 hard delete라는것이 있었다. https://velog.io/@taeha7b/hard-delete-softdelete 물리삭제(hard delete)와 논리삭제(soft delete) 데이터베이스에서 데이터를 삭제하는 방법에는 물리삭제와 논리삭제..
현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 고민의 발단 ERD를 설계중에 고민이 되었다. . . 우리 프로젝트에는 멘토와 멘티가 있는데 이 둘을 어떻게 테이블로 관리 해야 할까..? 아이디어 떠오르는 방법은 2가지 였다 1번. user 테이블을 만들고 이 테이블을 상속받는 자식 테이블 mentor와 mentee를 두면 어떨까? 2번. user 테이블에 mentor 정보와 mentee 정보를 모두 넣고 column으로 멘토와 멘티를 구분 하면 어떨까? 분석 고민 끝에 각자 방법의 장단점을 적어보면서 의사결정을 하기로 하였다. (1번 - 자식 테이블 만들기) 장점: 정규화가 잘되어 null인 column 값이 적다 단점: 테이블이 3개 -> 멘..
본 프로젝트를 시작할때 AWS 환경을 세팅하고 개발을 진행해야 할것 같았고 6월 중순에 있는 AWS 교육을 배경지식이 있으면 더 잘 수행할수 있을것 같아서 수강했다. AWS에서 가장 많이 쓰는건 *EC2, RDS, S3 1. AWS EC2 EC2는 클라우드 컴퓨팅 기술을 바탕으로 인터넷에 가상 서버를 임대하는 서비스입니다. AMI를 통해 운영체제, 일반인이 만든 이미지등 필요한 소프트웨어 구성 요소를 추가할 수 있습니다 (ex.linux,mac,window등) 보안을 위해선 특정 ip에서만 접근 가능하게 해야합니다 1.1 LoadBalancing(ELB) 로드밸런싱이란 쉽게 말해 서버에 트래픽 과부하가 오면 서버부하를 분산 시키는 것입니다. ELB는 아래의 AWS VPC에서 유저들을 EC2 인스턴스보다 ..