캐시가 갱신되지 않았던 이유
저희는 설정 값을 하나 추가해야 했습니다. 이번 릴리즈에 맞춰 Flyway 마이그레이션 스크립트로 DB에 새 설정 데이터를 추가했습니다. “어차피 새로 추가하는 값이니 캐시랑 부딪힐 일은 없겠지”라고 판단했습니다. 그런데 배포가 끝난 뒤 전체 설정 목록을 조회하는 API를 호출하면 방금 추가한 설정이 보이지…
"작은 성공이 쌓여 산을 이루면 무너지지 않는다."
저희는 설정 값을 하나 추가해야 했습니다. 이번 릴리즈에 맞춰 Flyway 마이그레이션 스크립트로 DB에 새 설정 데이터를 추가했습니다. “어차피 새로 추가하는 값이니 캐시랑 부딪힐 일은 없겠지”라고 판단했습니다. 그런데 배포가 끝난 뒤 전체 설정 목록을 조회하는 API를 호출하면 방금 추가한 설정이 보이지…
트래픽이 갑자기 몰리던 날, 서비스가 사실상 멈췄습니다. HikariCP 풀을 보니 Active는 최대치로 꽉 차 있었고, Waiting도 특정 값에서 더 늘지도 줄지도 않은 채 그대로 유지되고 있었습니다. Waiting이 그 값 이상으로 늘지 않은 건 HikariCP에 대기 상한이 있어서가 아니라, WAS의 최대…
Config Server에 간단한 관리용 페이지를 하나 붙이려 했는데, /tools/properties-manager.html을 요청하자 HTML 대신 JSON 설정 응답이 내려왔어요. Spring REST Docs로 API 문서까지 깔끔하게 정리해뒀는데, 정작 그 문서를 보여줄 페이지도 열리지 않는 상황이었습니다. 처음엔 정적 리소스 경로 설정 문제인 줄 알았습니다. classpath:/static/에…
AI에게 테스트를 맡겼더니 커버리지는 80%가 넘는데, 정작 버그는 잡지 못했던 경험이 있으신가요? AI 코드 어시스턴트는 테스트 작성에 분명히 도움이 됩니다. 반복적인 코드도 금방 작성해주고 요청에 따라 다양한 케이스에 대해 테스트 코드를 작성해줄 수 있습니다. 하지만 “AI가 테스트를 써줬으니 됐다”는 생각으로…
요즘 AI가 코딩을 너무 잘해준다는 소문을 듣고 AI 코딩 툴(에이전트) 중 하나인 클로드 코드(Claude Code)의 Pro 플랜을 결제해서 사용해봤습니다. 제가 했으면 익숙하지 않아서 며칠은 걸릴 코드를 화면과 백엔드까지 단 두 시간 만에 뚝딱 만들어냈습니다. 퀄리티도 나쁘지 않았고, 버그가 있을 때…
MCP란 무엇인가 최근에 AI 코딩 툴을 사용하면서 MCP라는 단어를 자주 접하게 되었습니다. MCP는 Model Context Protocol의 약자입니다. 마지막에 프로토콜이 붙은 것을 보면 프로토콜의 한 종류임을 알 수 있습니다. 프로토콜은 기기 간 데이터를 원활하게 주고받기 위해 정의된 통신 규약 및 약속입니다….
Java 언어로 TCP 소켓을 통해 IP 정보를 바이트 배열로 전송하는 로직을 구현하고 있었다. 숫자 167을 바이트 배열에 담아 전송하기 위해서 (byte)167 이렇게 강제 형 변환 과정을 거쳤다. 변환된 값을 출력해서 어떻게 전송되는지 확인해보려고 했는데 -89 라는 값이 표시되었다. 왜 내가…
객체를 구현할 때는 항상 테스트하기 쉽게 설계 되었는지 점검해야 한다. 개발자가 실행 결과를 직접 눈으로 확인하는 것이 아니라 테스트 실행 및 결과 확인까지 자동화된 테스트가 가능해야 한다. 테스트 가능한 객체를 만들기 위해 코드를 작성할 때 어떤 부분을 고려하는 것이 좋은지…
ORM(Object-Relational Mapping) 라이브러리를 사용한 코드를 작성하면서 발생할 수 있는 N+1 문제를 이해하고, N+1 문제 발생 시 조치 방법에 대해 알아보자. ORM이란? 엔티티 객체와 관계형 데이터베이스를 맵핑하여 애플리케이션이 SQL을 스스로 생성하여 실행할 수 있도록 돕는 기술 및 라이브러리를 말한다. Java를 예로…
Spring Cloud Config 동작 방식 MSA 구조의 프로젝트를 진행하다 보면 많은 수의 애플리케이션(마이크로 서비스)이 만들어집니다. 만약 10개의 애플리케이션이 동일하게 사용하는 공통 외부 설정이 있다면 유지 보수가 힘들어집니다. 코드가 중복될 때와 비슷한 문제가 발생합니다. 공통 외부 설정 값을 변경해야 한다면 모든…