백엔드 · 리팩토링
연동 분기가 몰린 300줄 메서드를 변경 이유별 5단계로 나누기
기존 기능 위에 외부 시스템 연동이 계속 덧붙으며 300줄 이상으로 커진 교육 기능 메서드를, '변경되는 이유'를 기준으로 5개 단계로 분리하고 연동 처리를 핵심 업무 로직에서 떼어낸 과정을 정리했습니다.
Notes & Writing · 6 posts
왜 문제가 생겼고, 어떤 대안을 선택했는지. 구현 범위와 직접 검증한 결과, 남은 과제를 함께 기록합니다.
기존 기능 위에 외부 시스템 연동이 계속 덧붙으며 300줄 이상으로 커진 교육 기능 메서드를, '변경되는 이유'를 기준으로 5개 단계로 분리하고 연동 처리를 핵심 업무 로직에서 떼어낸 과정을 정리했습니다.
RabbitMQ 컨슈머 타임아웃을 넘겨 43시간 동안 약 50회 재실행되던 월 배치를, 컨슈머 타임아웃 상향 대신 Transactional Outbox 구조로 바꿔 해결한 과정을 정리했습니다.
여러 프론트엔드 프로젝트에서 반복되던 submodule 병합 충돌을 줄이기 위해, 공통 저장소의 조합 책임을 Git에서 Jenkins로 옮긴 과정을 정리했습니다.
3,000명의 데이터를 `multipart/form-data`로 전송하면서 발생한 `FileCountLimitExceededException`을 분석하고, 약 9,000개의 multipart part를 1개로 줄인 과정을 정리했습니다.
Google Cloud Console의 OAuth 2.0 Client ID와 Service Account 인증 방식 및 용도 차이를 알아봅니다.
Spring Boot와 Google Cloud API를 사용해 Google Play 인앱 결제 영수증을 검증하고 처리하는 과정과 오류 해결 방법을 정리합니다.