Spring Cache와 Redis를 함께 사용하면서 설정이 간편하고 다양한 타입의 객체를 하나의 캐시 매니저로 처리할 수 있다는 장점 때문에`GenericJackson2JsonRedisSerializer`를 선택하는 경우가 많다. 하지만 이 방식에는 클래스의 패키지 경로가 변경되면 기존 캐시를 역직렬화하지 못해 서비스 장애로 이어질 수 있는 치명적인 단점이 있다.이 글에서는 `CacheErrorHandler`를 활용해 역직렬화 오류 발생 시 자동으로 캐시를 삭제하고 새롭게 갱신하도록 설정하는 방법을 정리한다. 문제 상황프로젝트 리팩토링 과정에서 특정 데이터 클래스의 패키지 경로를 변경했다. 배포 후 해당 캐시를 조회하는 API에서 다음과 같은 오류가 발생했다.org.springframework.data..
2월 말에 퇴사한 뒤 4개월간 재충전의 시간을 가진 후, 6월 말 새 팀에 합류해 이제 막 수습기간을 마무리했다.원래는 연말에 올 한 해를 정리하는 회고를 쓰려 했지만, 나름 뿌듯한 소식도 있고 마침 추석 연휴 덕분에 숨을 고를 틈이 생겨서, 중간 점검 삼아 이 마음이 바래기 전에 지금의 생각을 글로 남겨 두려 한다.첫 이직비전공자로, 거의 컴맹에 가까웠던 내가 개발을 시작한 지 1년 반. 국비 학원을 거친 뒤 인프런 강의로 약 11개월간 독학하며 개발자 취업을 준비했다. 그 과정에서 실무 코드와 좋은 개발 문화에 대한 환상이 굉장히 컸었다. 그러나 신입으로 전 직장에 입사한 뒤 그 환상들은 금세 깨졌다. 주변에 개발자가 많지 않아 “다른 회사에서는 어떻게 하는지” 비교할 기준도 부족했다. 대신 그 빈자..
최근 Google이 Gemini-2.5 Pro 모델을 하루 1000건까지 무료로 사용할 수 있도록 Gemini CLI를 공개했다. 복잡한 설정 없이 터미널에서 바로 Gemini의 강력한 기능을 활용할 수 있다는 점이 인상적이다. 이 글에서는 Gemini CLI의 설치 방법부터 간단한 사용 예시까지 소개한다. Gemini CLI란?Gemini CLI는 Google의 Gemini API를 터미널에서 직접 사용할 수 있도록 만들어진 커맨드라인 도구다. 별도의 IDE나 웹 UI 없이도 다양한 질문을 하고, 코드 생성, 요약, 변환 등의 기능을 손쉽게 사용할 수 있다.특히 개발자에게는 ChatGPT처럼 인터랙티브한 AI 도우미를 로컬 환경에서 터미널을 통해 쓸 수 있다는 점이 큰 장점이다. 설치 방법1. Node..
코틀린은 간결하면서도 안전한 코드 작성을 돕기 위해 다양한 기능을 제공한다. 그 중 하나로, `runCatching` 함수가 있다. `runCatching`은 코드 블록에서 발생할 수 있는 예외를 효과적으로 처리할 수 있도록 도와주는 고차 함수로, 자바의 `try-catch` 문을 보다 함수형 스타일로 대체할 수 있다.runCatching 기본 구조val result = runCatching { // 예외가 발생할 수 있는 코드}`runCatching`은 `Result` 타입을 반환하며, 이 타입은 성공(Success)과 실패(Failure) 상태를 모두 포괄한다.이를 통해 예외가 발생하면 다양한 후처리 메서드를 활용해 로직을 깔끔하게 구성할 수 있다.runCatching vs try-catch전..
들어가기에 앞서..2024.12.14 ~ 2025.3.1 항해플러스 백엔드 7기 과정을 수료했습니다.10주 동안 어떤 것을 배우고 경험했는지, 과정 중 했던 기술적 고민들과 좋았던 부분들을 돌아보며 마지막으로 이 과정을 추천하고 싶은 분들에 대해 이야기하고자 합니다. 항해플러스 관련 이전 글항해플러스 백엔드 7기를 시작하며...항해 플러스 백엔드 1주차 회고 - TDD항해 플러스 백엔드 2주차 회고 - Clean Architecture항해플러스 3~5주차 회고 돌아보면 짧은 10주, 수료하다!무엇을 했나요?TDD & 메모리 기반 동시성 제어 기본 학습 및 과제 진행 (깃허브 링크)특강 신청 서비스 – 클린 + 레이어드 아키텍처, 동시성 제어, TDD 적용 (깃허브 링크)대규모 트래픽을 고려한 대기열 기..