
코드 품질 개선 기법 27편: 티끌이 모여 태산이 되듯 의존성도 쌓이면
의존성 주입은 모든 곳에 적용할수록 좋은 것이 아니라 목적이 분명할 때만 쓰는 것이 중요하다고 설명했습니다. 단순 유틸리티나 모델은 내부 생성으로 단순화하고, 주입은 라이프사이클 관리나 구현 전환에 한정할 것을 제안했습니다.

의존성 주입은 모든 곳에 적용할수록 좋은 것이 아니라 목적이 분명할 때만 쓰는 것이 중요하다고 설명했습니다. 단순 유틸리티나 모델은 내부 생성으로 단순화하고, 주입은 라이프사이클 관리나 구현 전환에 한정할 것을 제안했습니다.

지도보기 API의 병목이던 표준 상품 API 호출을 동적 window 분할과 Coroutine Async로 병렬화했습니다. 그 결과 응답 시간을 8~10초에서 약 2초로 줄이고 TPS도 크게 개선했습니다.

숙박 전시 도메인의 복잡한 노출 로직을 Kotlin DSL로 표현한 적용 사례를 소개했습니다. 가독성은 좋아졌지만 내부 구현 복잡도와 팀의 러닝 커브가 커지는 트레이드오프도 있었습니다.

PLP 최저가 계산에서 모든 객실을 끝까지 계산하던 방식을 가지치기로 줄인 사례를 소개했습니다. 계산량은 크게 줄었지만 실제 성능 개선은 DB 조회 비용 때문에 제한적이었습니다.

목록과 지도를 하나의 화면으로 통합하며 비용 폭증과 구조 비대화 문제를 함께 다뤘습니다. Lazy Load, StateHolder, 거리 기반 클러스터링, 커스텀 바텀시트로 개선했습니다.
여행 상품 운영의 수작업 과정을 AI로 자동화한 구축 사례를 소개했습니다. 데이터 통합, 카테고리 매칭, 번역, 적재 최적화와 프롬프트 개선 과정을 다뤘습니다.

테스트 코드 자동화를 위해 IntelliJ 플러그인과 Amazon Q를 결합한 개발 과정을 다뤘습니다. 컴파일 보장 템플릿과 역할 분담으로 커버리지와 작업 효율을 높였습니다.
쿠팡 파트너스
이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

테마처럼 값만 다른 경우에는 상속보다 값 객체로 표현하는 편이 더 간결하다고 정리했습니다. Kotlin의 비상속 클래스 특성을 활용해 동적 변경 가능성과 불필요한 로직을 줄이는 방법을 제안했습니다.

조기 반환은 유용하지만, 에러와 정상 케이스를 통합할 수 있으면 더 단순한 코드가 됩니다. 빈 컬렉션, null, 범위 밖 인덱스, 연속 예외 처리를 기준으로 판단하는 방법을 소개했습니다.

LINE 메신저의 대량 푸시 알림을 안정적으로 보내기 위해 Pushsphere를 설계하고 도입했습니다. 재시도, 할당량, 엔드포인트 상태를 함께 고려해 도달률과 운영 안정성을 높였습니다.

SDUI의 트래픽 병목을 Caffeine과 Redis 이중 캐시로 해결한 사례를 소개했습니다. 백오피스 즉시 무효화와 프리워밍으로 1ms 미만 응답 성능을 확보했습니다.

`equals`를 일부 속성만으로 정의하면 예상치 못한 버그가 생길 수 있음을 설명했습니다. 동일성인지 등가성인지 목적을 먼저 정하고, 필요한 부분은 별도 함수로 분리해야 합니다.

Spring Statemachine으로 알림 시스템의 상태 관리를 체계화한 사례를 다뤘습니다. 직접 구현과 프레임워크 도입의 장단점, TTL 관리 같은 주의점도 함께 정리했습니다.

코드 리뷰 봇으로 개인별 미처리 MR을 알려주고 리뷰어를 자동 배정해 리뷰 지연을 줄였습니다. 이후 휴가자 알림, 스크럼 문서, 온콜 관리까지 확장하며 팀 문화를 개선했습니다.