My Project 6

Flutter로컬커머스) 이메일 도메인 리팩토링 작업

◇ 이메일 도메인 리팩토링내부적으로 더 유연하고 확장 가능한 구조 확보, 외부적으로는 사용자의 계정 보안과 편의성을 크게 높이는 필수 기능들을 확보했음.EmailService 비동기 처리:개요: 메인 애플리케이션에 @EnableAsync를 선언하고, EmailService의 sendEmail 메서드에 @Async를 적용했음.목표: 이메일 발송처럼 시간이 걸리는 네트워크 작업을 백그라운드 스레드에서 처리하게 바꿨음. 덕분에 API 응답 시간이 짧아지고 서버 자원 효율이 높아져서, 전체적인 시스템 성능과 사용자 경험 향상.인증 코드 저장소 추상화:작업: 기존의 VerificationCodeManager 역할을 VerificationCodeStore라는 인터페이스로 추상화하고, 기존 로직은 InMemoryVe..

My Project 2025.09.02

Flutter로컬커머스) 비밀번호 찾기 기능 구현

사용자가 비밀번호나 아이디를 잊어버렸을 때, 안전하고 편리하게 계정을 복구하도록 돕는다.비밀번호 찾기(재설정) 기능:개요: "코드 발송 → 코드 검증 및 임시 토큰 발급 → 최종 비밀번호 변경"의 안전한 3단계 프로세스를 구현.목표: 사용자가 비밀번호를 잊었을 때, 이메일 인증을 통해 안전하게 계정을 복구할 수 있는 필수 기능을 제공.구현방법:① JwtUtil을 확장해서, 10분 유효기간을 가진 비밀번호 재설정 전용 임시 토큰(password-reset-jwt)을 발급하고 검증하는 로직을 추가해 보안을 강화.② 관련 DTO 3종(SendPasswordResetCodeRequest, PasswordResetRequest, PasswordResetTokenResponse)과 PasswordResetContr..

My Project 2025.09.02

Flutter로컬커머스) 인메모리 캐시 개념

메모리 내 캐시(In-memory Cache)외부 캐시 없이 앱 메모리 쓰는 캐시의 개념과 동작 방식인메모리 캐시는 지금 돌아가는 앱의 메모리 공간을 그냥 데이터 저장소로 쓰는 방식.인증 코드처럼 빨리 사라지고(Time-sensitive), 사라져도 상관없고(Non-durable), 읽고 쓰는 속도가 엄청 빨라야 하는 데이터에 적합함.이메일인증에서 이게 왜 필요한가?이메일 인증은 사용자가 요청하면 코드를 생성하고, 짧은 시간 내에 이 코드를 검증하는 과정임. 이 작업은 속도가 중요한데 매번 DB를 조회하는 건 비효율적. 인메모리 캐시를 쓰면 더 빠르고 서버 부하도 줄어듬. 유효 시간이 지난 코드는 자동 삭제돼 메모리 누수도 방지됨.구현 절차자료구조 선택 -> 인증코드 저장절차 구현 -> 인증코드 확인절차..

My Project 2025.09.02

Flutter로컬커머스) 스프링부트 스타터 메일 기능 설명

스프링 부트 스타터 메일(Spring Boot Starter Mail)이메일 전송을 위한 스프링 프레임워크의 도구스프링 부트 스타터 메일은 스프링 프레임워크에서 이메일 보내는 걸 완전 쉽게 만들어주는 도구다. 개발자는 JavaMailSender 빈을 주입받아 send() 메서드만 호출하면 이메일이 발송된다. 핵심 기능① JavaMailSender 빈(Bean) 자동 생성 스프링부트가 application.yml 파일에 있는 spring.mail.* 속성들을 읽어서, 호스트, 포트, 계정 정보, TLS/SSL 옵션 등 모든 설정이 끝난 JavaMailSender 빈을 스프링 컨테이너에 알아서 등록해줌.② MailProperties 바인딩 application.yml의 모든 spring.mail 속성들은 M..

My Project 2025.09.02

Flutter로컬커머스) 인증메일 발송기능 구현

SMTP 를 통한 인증메일 발송기능신규 회원가입 시 사용할 이메일 인증 코드 발송 및 검증 기능을 구현했다.또한 이 기능을 기존 회원가입 로직과 안전하게 통합했다.이메일 발송 시나리오◎ 등장인물 (기술 요소)계정 담당: MemberAuthService 파일. 고객의 요청을 받아 편지 발송을 결정한다.우편 담당: EmailVerificationService 파일. 계정 담당의 요청을 받아 편지 내용물을 작성하고 발송을 준비한다.배달부: JavaMailSender 객체. 우편 담당이 준비한 편지를 받아 외부 우체국으로 배달한다.배달 매뉴얼: application.yml의 spring.mail 설정. 우체국에 방문할 때 필요한 우체국 주소와 출입증구글 우체국: Gmail 의 SMTP 서버. 편지를 안전하게 받..

My Project 2025.09.01

CRUD 이후 필요한 고급 기능 체크리스트

기능 분류 기능명 중요도 구현 난이도 사용 기술 사전 검토 필요검색 및 필터링키워드 검색☆☆SQL, JPA, Elasticsearch○검색 및 필터링조건 필터☆☆SQL, JPA, QueryDSL○검색 및 필터링카테고리별 조회 SQL, JPA 페이징 및 정렬페이징 처리☆ JPA, Spring Data Paging○페이징 및 정렬정렬 기능 JPA, SQL 권한 및 인증본인만 수정/삭제 가능☆☆Spring Security○권한 및 인증관리자 전체 목록 보기☆☆Spring Security○권한 및 인증공개 범위 제한 Spring Security 태그 및 카테고리스킬태그 등록☆☆JPA, DB 관계설정○태그 및 카테고리태그별 목록 필터링 JPA, QueryDSL 상호작용스크랩/좋아요 DB, JPA 추천 및..

My Project 2025.08.06