BuySell - 최종 프로젝트 종료
·
내일배움캠프 프로젝트
BuySell https://www.notion.so/40-Four-T-46a46435ffb44c168c20e25ad82f7da7 40 (Four T) | Notion ‼ 회의 요약 💬 &피드백 모음💜 band-wavelength-b24.notion.site 목차 프로젝트 소개 팀소개 프로젝트 계기 주요기능 개발기간 기술스택 서비스 구조 와이어프레임 API 명세서 ERD 프로젝트 파일 구조 기술적 의사결정 Trouble Shooting 프로젝트 소개 중고 거래 플랫폼으로 개인 간의 중고 거래를 더욱 쉽게 접근할 수 있게 매칭해주는 게시판 형태의 서비스입니다. 중고 물품을 판매하는 글을 작성할 수 있고 구매자가 구매 요청을 하면 판매자와 구매자가 매칭 됩니다. 팀소개 팀장 부팀장 팀원 팀원 김성현 황승현 ..
BuySell - 주문 조회
·
내일배움캠프 프로젝트
구매한 상품에 대한 리뷰와 평점을 남길 수 있는 로직이 구현되었다. 이제 마이페이지에서 주문내역을 조회 후 리뷰를 작성할 수 있게 주문조회 기능을 구현중인데, 현재 정책상 삭제된 게시물에도 리뷰를 작성할 수 있게 되어있다. 그러나 주문조회 시 softDelete가 true인 게시물을 조회할 수 없는 에러가 발생했다.. soft delete된 데이터를 조회하기 위해서 3가지의 방법이 있다. JPQL등에서 직접 처리하기 실무에서는 다양한 상황들이 나타나기 때문에 모든 상황을 직접 다룰 수 있게 JPQL을 사용하는 것을 권장드립니다. 참고로 실무에서는 대부분의 조회 쿼리가 단순하지 않기 때문에 JPQL을 자주 사용하게 됩니다. 하이버네이트 @Filter 대안으로는 하이버네이트 @Filter를 사용할 수 있는데..
BuySell - S3 이미지업로드 (2)
·
내일배움캠프 프로젝트
버킷에 이미지 업로드가 정상적으로 작동하는것을 확인했다. 그래서 이제 그 게시글에 대한 이미지인걸 어떻게 찾아서 가지고 올까? 라는 생각을 했다. (이미지 업로드 되면 request에서 쓰려고 imgurl 부분을 주석으로 해놨는데 까먹음) 고민 한 방법들 1. 퍼블릭 URL을 변수로 어딘가에 저장해두고, 프론트에서 input type hidden 을 사용해서 어떻게 어떻게 구현하기 (그냥 생각만 함) 2. 이미지 URL을 백 서버에서 저장 후 관리하는 법 사실 몇가지 더 있었는데, 대부분 프론트에 대한 내용이라 생략했다. 그리고 이해가 안갔음.. 일단 나는 백엔드 공부를 하는 사람이니까.. 당연히 2번을 선택했다. 게시글에 대한 이미지 URL을 저장하는 로직이 없었기 때문에, 이미지 업로드를 시도하면 아..
BuySell - S3 이미지 업로드
·
내일배움캠프 프로젝트
S3를 사용해 이미지 업로드 기능을 구현해보려고 한다. S3 버킷을 채택한 이유! 1. 서비스의 가용성 이 거의 100%이다. (서비스를 제공할 수 있는 상태) 2. 저렴한 비용 사용한 만큼 비용을 낸다. 장기간 보관을 하지만 빈도수가 낮은 파일들 (ex: 법적 보관기간 5년 파일)은 타입 저장방식을 달리해 비용 절감이 가능 (파일 access 빈도수에 따라 보호수준을 차등할 수 있고 차별화 된 비용을 지불할 수 있다.) 확장성 AWS가 망하지 않는 한 원하는 만큼 서비스를 사용할 수 있다... 고성능 AWS Region을 선택해 가까운 Region에 데이터를 관리함으로써 네트워크 지연시간을 최소화 할 수 있다. 관련 자료의 양 AWS cloud 서비스에 대한 자료의 양이 많기에 문제 해결이 보다 쉬울 ..
BuySell - 선착순 쿠폰 발급기능 (3)
·
내일배움캠프 프로젝트
전에 고민했던 발급 과정을 변경하기로 했다. 미리 생성해 둔 쿠폰을 발급하는 방법이 아닌, 쿠폰 발급 요청이 들어오면 생성하고 발급하는 방법으로 변경했다. 쿠폰을 생성 후 발급하는 방법은 쿠폰이 필요한 시점에서 생성이 되기 때문에 불필요한 쿠폰을 생성하는 것을 방지할 수 있고, 현재 제약사항에 쿠폰의 만료기한 기능이 있기때문에 발급시점에서 관리를 하게 된다면 조금 더 유연하게 쿠폰을 관리할 수 있다고 생각했다. 그리고 이미 Redis를 적용해 동시성 제어를 사용하려했기 때문에, 생성과 발급을 동시에 처리하는게 프로젝트에서 추구하는 방향성이 맞다고 생각한다. Redis를 사용한 동시성 이슈를 학습했던 내용을 적용시켜서 코드를 작성해봤다. RedisCouponRepository @Repository clas..
BuySell - 선착순 쿠폰발급 (2)
·
내일배움캠프 프로젝트
어제 고민해보았던 내용 정리 튜터님께 여쭤보니 동시성 제어를 하는 방법을 몇가지 알려주셨다. 쿠폰 발급 과정 1. 쿠폰을 미리 생성 -> 선착순 발급 2. 쿠폰 발급 요청 시 쿠폰생성 -> 선착순 발급 1번을 선택하기로 했다. phantom write를 방지하기 위한 방법 isolation level을 설정하는 것인데 격리수준을 serializable을 사용할지, repeatable read를 사용할지에 대한 고민도 생긴다. serializable을 사용하면 가용성의 저하가 발생하기에 잘 사용하지 않는다. repeatable read를 사용하면 선착순 요구사항을 지키기 어렵다. (먼저 신청한 A는 실패했는데 B는 성공할 가능성이 있음) 그리고 Redis를 사용하는 방법 싱글쓰레드인 Redis를 사용하면 ..