
코드 품질 개선 기법 16편: 불이 'null'인 굴뚝에 연기가 'null'이 아닐 수 없다
널 객체 패턴은 호출부를 단순하게 만들 수 있지만, 오류 값과 정상 값을 구분해야 할 때는 부적합했습니다. 타입으로 구분 가능한 경우에는 Optional이나 null 같은 정적 표현을 우선 고려해야 했습니다.

널 객체 패턴은 호출부를 단순하게 만들 수 있지만, 오류 값과 정상 값을 구분해야 할 때는 부적합했습니다. 타입으로 구분 가능한 경우에는 Optional이나 null 같은 정적 표현을 우선 고려해야 했습니다.

암호화 설계를 위해 고전 암호부터 현대 암호, 하이브리드와 봉투 암호화까지의 흐름을 정리했습니다. JPA와 Hibernate 확장 포인트를 활용해 실무에서 암복호화를 자동화한 경험도 소개했습니다.


Kotlin Flow를 단방향 데이터 스트림 관점에서 활용해 Android 화면 상태 관리를 단순화한 사례를 설명했습니다. shareIn, merge, combine, flatMapLatest의 사용 기준과 주의점을 정리했습니다.


Spring Batch 기반 동기 연동의 병목을 Kotlin Coroutine으로 개선한 사례를 소개했습니다. Kafka와 비동기 호출을 결합해 처리 시간과 리소스 효율을 함께 높였습니다.

Spring Modulith를 활용해 모놀리스와 MSA 사이에서 도메인 경계를 강제한 실무 경험을 정리했습니다. 불확실한 전환기에 논리적 모듈 분리로 운영 부담과 결합도를 함께 줄인 사례를 공유했습니다.


레거시 WebFlux 신용점수 조회 서비스를 WebMVC로 전환하며, Nginx 트래픽 미러링으로 실서비스 검증을 수행했습니다. 응답 자동 비교와 짧은 타임아웃으로 사용자 영향 없이 안정적으로 마이그레이션했습니다.

여러 경로로 모은 업체 정보의 중복을 병합으로 정리하고, 변경 이력을 바탕으로 대표 프로필의 값을 고도화했습니다. 필드별 정책을 분리해 더 합리적인 정보를 노출하도록 개선했습니다.


결제 도메인의 오류 처리를 위해 sealed class를 검토한 뒤 Arrow의 Either를 도입한 과정을 정리했습니다. 트랜잭션, 캐시, 예외 처리와의 충돌을 피하기 위해 계층별 경계도 함께 설계했습니다.

MSA에서 공용 Enum의 버전 불일치로 생기는 Deserialize 에러를 줄이기 위한 관리 전략을 소개했습니다. 문자열 래핑, 빌드 규칙, 메타 감시로 안전성을 높였습니다.

14년 된 네이버 캘린더 앱에 KMP와 Compose Multiplatform을 적용한 경험을 공유했습니다.\n도입 배경, 모듈 연동, 공통 설정, Android/iOS 개발 흐름을 함께 다뤘습니다.

이름은 선언 측의 일관성보다 사용하는 측의 오해 가능성을 줄이는 방향이 중요하다고 설명했습니다. 수식어를 앞에 두는 명명과 언어·플랫폼의 표준 규칙을 따르는 예를 제시했습니다.

네이버페이 검색 서비스를 OpenSearch로 구축하며 색인 구조와 한글 검색 품질 개선 과정을 소개했습니다. 또한 무중단 패치, 최근 검색어 저장, 특수문자 예외 처리까지 운영 경험을 정리했습니다.