Project/데브툰(8)
-
[데브툰] 리팩토링: 쿠키 결제 로직 4단계로 개선하기 (feat. 원시값 포장)
이번 포스팅에서는 결제 로직을 4단계에 걸쳐 점차적으로 개선하는 과정을 소개할 예정입니다. 해당 글을 마지막으로 데브툰 프로젝트를 1차적으로 마무리할 계획인데요. 왜냐하면 이력서와 포트폴리오 작업이 밀렸기 때문입니다.(미-소) 어느 정도 정리가 되면 팀원과의 회의를 통해 2차 작업(프론트 작업, 배포 및 운영, 조회 성능 최적화)을 이어서 진행할 예정입니다. 앞으로의 글은 가독성을 위해 말을 편하게 할 예정입니다. 양해 부탁드립니다. 🍎🍎🍎목차문제 상황문제 코드리팩토링 후보군 분석 후보1: 원시값으로 포장 → Price 클래스 후보2: 다양한 숫자 형식을 처리하기 위한 몇 가지 인터페이스 및 클래스 분석 → 적용 해결: (원시)값 타입 클래스 도입 코드 변화 4단계 및 관련 PR회고 만족한 ..
2024.05.20 -
[데브툰] 리팩토링: 프로모션 조회 설계 및 성능 개선 도전하기 - 성능 편
이번 포스팅의 주제는 '프로모션 조회 성능 최적화 도전기'입니다. 캐싱을 도입하게 된 배경과 종류를 살펴본 후 기존 코드, 로컬 캐시 적용, 글로벌 캐시 적용별 캐시 성능 차이를 살펴볼 예정입니다. 앞으로 글의 가독성을 위해 말을 편하게 할 예정입니다. 양해 부탁드립니다. 🍎🍎🍎 목차소개• 캐싱 도입 배경 및 목표• 캐시 종류 • 로컬 캐시 • 글로벌 캐시캐시 선택 기준• 캐시 선택 기준• 결론스프링 부트 구현• 스프링 부트에서 캐시 기본값 확인• 스프링부트에서 지원하는 주요 캐시 라이브러리프로젝트 적용• 캐시 대상• 기존 API 수정 • 사전 데이터 밀어 넣기성능 테스트• 성능 측정 방법• 프로모션 조회 성능 테스트• 전략별 성능• 전략별 성능 비교결론• 결론• 추가적으로 도입해 볼..
2024.05.20 -
[데브툰] 리팩토링: 프로모션 조회 설계 및 성능 개선 도전하기 - 설계 편
이번 포스팅의 주제는 '프로모션 조회 설계 개선기'입니다. 주요 내용은 기존 설계의 근본적인 문제를 파악하고 이를 개선해 나가는 과정입니다. 앞으로 글의 가독성을 위해 말을 편하게 할 예정입니다. 양해 부탁드립니다. 🍎🍎🍎목차기존 설계 문제점 파악프로모션, 프로모션 속성 테이블 파악 기획 단계 확인 프로모션 및 프로모션 속성 테이블 완벽 이해프로모션 서비스 로직을 객체지향적으로 개선 인터페이스 활용 문자열 대신 enum 타입 사용 람다식 적용개선 후 로직 및 서비스 코드에 적용회고 만족한 점 아쉬운 점 다음에는 이렇게 기존 설계 문제점 파악첫 번째, 프로모션과 속성은 일대다 관계임에도 프로모션당 하나의 속성만 등록할 수 있다.🔥 프로모션 등록 시 여러 속성을 등록 가능하도록 변경이 ..
2024.05.14 -
[데브툰] 🎁 리팩토링 모음.zip
데브툰은 팀 프로젝트로, Git을 사용하면서 협업하고 있습니다. 기능 구현 시 PR을 올리는 것을 기본으로 하고 지속적인 리팩토링은 이슈를 발생시켜 처리하고 있습니다. 설계/로직 개선이나 성능 최적화와 같은 큰 주제는 별도의 포스팅으로 다룰 예정입니다. 이외 리팩토링 작업은 여러 단위를 하나로 묶어서 발행하려고 합니다.(해당 포스팅) 앞으로 글의 가독성을 위해 말을 편하게 할 예정입니다. 양해 부탁드립니다. 🍎🍎🍎 목차fix: 프로모션 조회 에러 수정refactor: 비즈니스 로직의 return값을 도메인으로 변경refactor: 문자열 하드코딩 부분을 상수로 분리refactor: 계산 로직 Calculator 클래스로 분리회고 만족한 점 아쉬운 점 다음에는 이렇게 이슈 및 PR은 Git Fl..
2024.05.11 -
[데브툰] 이제 너만 믿는다, 테스트 코드 작성하기
데브툰 프로젝트를 진행하면서 작성한 테스트 코드를 소개하려고 합니다. 이론적인 설명보다는 효율적으로 테스트 코드를 작성하는 방법에 대해 고민한 부분을 다룹니다. 또한, 발생한 이슈와 해결 방법도 함께 소개하고, 마지막은 회고로 마무리하는 흐름입니다. 앞으로 글의 가독성을 위해 말을 편하게 할 예정입니다. 양해 부탁드립니다. 🍎🍎🍎 목차테스트 코드를 왜 작성할까?통합 테스트 작성 통합 테스트 이점 유용한 메서드 소개 및 코드 예시@Transactional 롤백이 안 되는 이슈 발생 문제 발생 문제 발생 지점 문제 원인 원인 분석 문제 해결회고 만족한 점 아쉬운 점 다음에는 이렇게 테스트 코드를 왜 작성할까?테스트 코드를 작성하는 이유와 방법을 찾아보면 많은 자료들이 나온다. 대부분 ..
2024.05.08 -
[데브툰] 다양한 정책을 쉽게 등록하고 삭제하기
목차현재 상황 정책 등록 api 구현 팀원의 코드 리뷰리팩토링 추가 고려 사항, 코드 구현 문제 발생 대안 해결 테스트회고 만족한 점 아쉬운 점 다음에는 이렇게 현재 상황데브툰 프로젝트를 진행하면서 나는 확장성 있는 설계 부분을 맡았다. 현재 프로젝트에는 쿠키 가격 정책과 비속어 정책이 존재하고 기획 단계에서는 쿠키 정책만 등록하기로 했었다. 하지만 추후 더 다양한 정책이 등록될 가능성이 있으며, 이를 효과적으로 관리하기 위해 처음부터 쉽게 등록하고 교체할 수 있는 프로그램을 만드는 것을 목표로 하고 기획을 수정했다. 정책 등록 api 구현나는 어떻게 하면 확장성 있는 코드를 만들고, 유지보수성 또한 높일 수 있을까 고민을 하면서 구현에 들어갔다. 1. 정책 인터페이스(Policy)..
2024.05.07