토이프로젝트를 진행하면서, 수많은 예외와 마주하고 있습니다. 그 수많은 예외들을 공통적인 포맷을 갖도록 하여 보다 구체적이고 편리한 방식으로 오류 및 예외 처리할 수 있게 하는 것을 위한 글입니다. 공통적인 포맷을 사용하면 모든 예외가 읽기 쉬운 방식으로 표현될 수 있으며, 예외에 대한 더 많은 컨텍스트(정보)를 제공하여 사용자가 문제를 신속하게 해결할 수 있습니다. 1. 공통 응답 포맷 정의하기 예외를 처리할 때 중요한 것을 생각해 보았을 때 아래와 같았습니다. 언제 발생하였을까? 어떤 상태인가? 왜 발생하였을까? 이것들을 반영하였을 때, 포맷 응답 값은 아래와 같았습니다. { "timestamp": "2023-03-12T19:31:04.278737", "status": 400, "error": "중복..
구현내용 회원 로그인시, 구매자의 연령대를 구하고, 연령대별 잘 팔리는 제품 3가지 추천 구현 순서 멤버별 연령대 구하기 연령대별 거래수 구하기 최종 연령대별 상위 3건 갖고오기 테이블 (요약) 더보기 member id 식별자 created_date 등록날짜 modified_date 수정날짜 age 나이 birthday 생년월일 email 이메일 gender 성별 nick_name 닉네임 phone_number 전화번호 Product id bigint(20) NO PRI auto_increment created_date datetime YES modified_date datetime YES content text YES flag_courier_fee tinyint(1) YES 0 hash_tag varc..
임시 인증 번호 개발 목차 테스트 코드 작성 로직 구현 구현 내용 비밀번호 찾기 및 임시 비밀번호 발급을 위한 임시 인증 번호 개발 요구 분석 특수문자 포함 총 8자 구현 인증번호 발급 후 3분 후 파기 여기서 가장 큰 문제점은 3분 후 파기라는 것이었다. 주 DB로 사용하고 있는 RDBMS를 사용하게 되면, 편하게 CRUD를 할 수 있겠지만 3분 후 파기를 구현하기 위해서는 Timer를 만들어 시간이 되면 DELETE or Update 처리를 해줘야 했다. 이것의 해결점으로 Redis를 사용하여 키, value 값으로 메모리에 저장하는 방법을 택했다. 실제 구현 영문자+특수문자+숫자를 통해 8자리의 임시번호 발급 Redis에 해당 값을 값으로 저장 해당 값이 맞는지 검증 임시번호 발급 먼저, 테스트 코..