전체 글

현재 개발자 사이드 프로젝트 팀 매칭을 하고 매칭한 팀끼리 멘토링 받을 수 있는 플랫폼을 제작하고 있습니다 고민의 발단 우리 서비스에선 사용자끼리 팀 매칭을 하고 프로젝트/스터디 중간 중간에 팀원에 대한 피드백을 남긴다. 이 피드백 방식을 어떻게 가져가야 할지 고민을 정리해 봄으로써 의사 결정하고자 한다. 아이디어 먼저 피드백의 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개 -> 멘..
· 백앤드
1) Entity에서 @NotBlank, @Size를 붙인경우 500 에러가 던져졌고 2) DTO에서 @NotBlank, @Size를 붙이고 컨트롤러에서 DTO 앞에 @Valid를 붙인 경우 400 에러가 던져졌다. 내 생각에 데이터가 DTO - Service단 - Entity로 들어갈텐데 DTO단에서 잘못된 데이터를 쳐내는게 Service단에서 시간낭비 하지 않고 더 효율적으로 API 400 응답을 내려줄수 있을것 같다.
· 백앤드
요번 프로젝트를 하면서 BaseTimeEntity라는 클래스를 처음으로 만들어서 시간을 찍는 기능을 따로 추상클래스로 나누어보았다. 이때 사용되는 새로운 어노테이션이 1. @MappedSuperClass 2. @EntityListeners(AuditingEntityListener.class), 3. @EnableJpaAuditing였는데 @MappedSuperClass 는 => 추상클래스는 여러 클래스에 상속이 될수 있으니까 테이블에 직접 매핑이 되지 않고 공통적인 매핑정보만 주는 녀석임을 알려주는 어노테이션으로 이해가 되었는데 @EntityListeners(AuditingEntityListener.class), @EnableJpaAuditing는 약간 이해가 애매했다. 그래서 들고 파보고자 한다. 예상..
본 프로젝트를 시작할때 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 인스턴스보다 ..
생선묵김치찌개
준혁's 코딩 연구기록