🌿 Spring

🌿 Spring

[Spring] 전략 패턴 사용하기

TIFY 프로젝트를 진행하면서, 13여가지의 상품군에 해당하는 취향 질문에 사용자가 답변을 하면 그것을 근거로 상품을 추천해주는 기능을 만들게 되었다. 처음 이러한 기획을 들었을 때는 음 그냥 사용자가 A, B 상품군을 선택하면 A, B 추천 전략에 맞게, X, Y 상품군을 선택하면 X, Y 추천 전략에 맞게 리턴해주면 되겠구나 했지만 조금 더 생각해보니 말이 안되는 처사였다. 이런 상황을 해결하기 위해 민준이가 알려준 디자인 패턴 중 하나인 전략 패턴(Strategy Pattern)을 사용해보기로 하였다. 추천 전략을 구현한 코드는 아래 pr들에, [FEATURE] 상품 추천 로직 작성 by bongsh0112 · Pull Request #45 · Team-TIFY/TIFY-SERVER 📝 PR Su..

🌿 Spring

메일 발송 - 스케쥴링 간 문제 해결 with Async

스케쥴링의 결과물인 경매 작품의 상태 변화에 따라 사용자에게 메일을 발송하는 작업을 테스트했을 때 발생하는 문제를 위 사진으로 간략하게 나타내었다. (위 사진의 결과는 메일 발송 메소드를 Thread.sleep(500)으로 처리한 결과이다.) 위 사진에서처럼 160개의 상태 변화가 필요한 작품들에 대해 스케쥴링을 적용하였고, 한 작품당 한 사람에게 메일을 보낸다고 가정했을 때 100개의 작품에 스케쥴링을 적용한 후 메일을 보내면 50초의 시간이 걸리고 그 시간 동안 다른 작업(그림의 상태 변경)은 Block되는 현상을 관찰할 수 있었다. 서비스 장애이지 않을 수 없다. 이러한 장애를 비동기를 이용하여 해결해보았다. 1) 코드 변경점 1-1) Application @Slf4j @EnableSchedulin..

🌿 Spring

등록된 미술품 상태 변경 with Scheduling

피카소 경매 사이트는 사용자가 경매 항목을 올리면 관리자가 그 경매 항목에 대해 승인을 한 후 경매가 등록된다. (위 사진에서는 관리자 승인 단계가 생략되어있다.) 승인을 받은 경매 작품은 사용자가 지정한 경매 시작 일자에 맞추어 경매 예정 -> 경매 진행중 과 같이 상태가 바뀐다. 이러한 작업을 관리자가 모두 전담하기엔 너무나도 공수가 컸고 DB 내의 Event Schedular를 이용하기에는 DB 서버의 무게가 무거워질 수 있다고 판단되어 서버 단의 스케쥴링을 이용하여 경매 작품들의 상태값을 변경하기로 결정했다. 스케쥴링의 방식에 대해서는 이후 작성할 스케쥴링 코드에서 자세히 서술할 것이다. 0) 사전 설정 @Slf4j @EnableScheduling // Schedule사용을 위한 Annotatio..

🌿 Spring

사용자에게 메일 보내기 with JavaMailSender

피카소 경매 사이트는 사용자가 등록한 경매 작품의 상태값이 변경됨에 따라 사용자에게 메일을 보내는 서비스를 제공한다. 메일의 종류는 대략 9~10가지인데, 대표적으로는 경매 등록 성공 메일 경매 등록 미승인 메일 경매 작품 낙찰 메일 경매 작품 유찰 메일 내가 입찰한 경매 작품의 상황에 대한 메일 등등이 있다... 종류가 많다 보니 위 사진과 같은 화면처럼 메일을 발송하려면 HTML 템플릿화하여 관리해야 했다. 코드를 보면 알 수 있듯이 종류가 너무 많아 모두 구현하지는 못했다... ㅠ 메일 발송은 스케쥴링과 매우 밀접한 관련이 있는데 스케쥴링에 대해서는 이후에 따로 포스팅 할 예정이다. 아래 Github PR에 자세한 코드가 나와있다. [feat] 메일 발송기능 구현 완료 by donsonioc2010..

🌿 Spring

무한스크롤 API 구현하기

예전 고스락 티켓 서비스 프로젝트에서 관리자 페이지를 만들 때 프론트엔드에서 페이지네이션을 구현하면서 페이지마다 필요한 데이터들을 백엔드에서 어떻게 넘기는지에 대해 알고싶었는데 마침 이번 TIFY 프로젝트에서 질문에 대한 답변 조회, 현재 로그인 한 유저의 친구 목록 조회 페이지네이션을 맡게 되었다. 페이지네이션 방법 중 (TIFY는 모바일 앱이기 때문에) 모바일 앱에 더 적합한 무한 스크롤을 적용하기로 하였다. 코드는 아래 Github PR에 자세히 나와있다. feat: 친구 목록 조회 무한스크롤 API 작성 by bongsh0112 · Pull Request #38 · Team-TIFY/TIFY-SERVER 📝 PR Summary feat: 친구 목록 조회 무한스크롤 API 작성 🌲 Working B..

sh_bong
'🌿 Spring' 카테고리의 글 목록