Project(39)
-
1:1 채팅 기능 개선 (feat. NoSQL 및 비동기 로직 적용)
프론트엔드와 함께하는 프로젝트에서 1:1 채팅 기능 개발을 맡았다. 기본 기능을 구현한 후, 남은 3일 동안 가능한 리팩토링 방안을 고민했고, 최종적으로 데이터베이스를 RDBMS에서 NoSQL로 변경하고(채팅 저장, 조회) 추가적으로 채팅 저장 로직을 비동기로 전환하기로 결정했다. 아래는 개선 과정에서 고려했던 주요 사항들을 기록으로 남겨보려 한다. 부족한 부분이 있겠지만 기한안에 완성을 목표로 했다.🤠 목차채팅 설계저장소 (MySQL → MongoDB → 아카이빙) 어떤 데이터베이스를 쓸 것인가? AS-IS : MySQL TO-BE : 키-값 저장소로 변경(MongoDB) 그럼에도, 아카이빙동기 → 비동기 AS-IS : 동기 TO-BE : 비동기 스프링 이벤트 외부..
2024.12.06 -
[데브툰] 리팩토링: 쿠키 결제 로직 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