← 탐색

태그된 포스트: 장애대응

백엔드 깊이보기 · ·3분 읽기

@Version 하나 붙였을 뿐인데 발급 요청 절반이 실패했다

쿠폰 발급 테이블에 동시 수정이 가능하다는 코드 리뷰가 달렸고, 다음 날 PR에 @Version 필드가 추가됐다. 낙관적 락을 걸면 충돌 시 예외가 터지니까 안전하다 — 이론적으로는 맞다.

jpaoptimistic locking동시성
데브옵스 리얼톡 · ·3분 읽기

AI 에이전트 13개가 내 온콜을 넘겨받겠다고 한다

새벽 3시, PagerDuty가 울린다. 런북 열고, 대시보드 확인하고, 슬랙에 타임라인 찍고, 롤백 판단하고 — 이 과정을 AI가 전부 해준다면?

aisre온콜
백엔드 깊이보기 · ·3분 읽기

Actuator health 엔드포인트가 파드 12개를 연쇄로 죽인 밤

readiness probe 설정할 때 "/actuator/health 쓰면 되죠?"라고 대답하는 개발자가 많다.

spring bootkubernetesactuator
백엔드 깊이보기 · ·3분 읽기

Virtual Thread 켰더니 오히려 처리량이 반토막 났다

Spring Boot 4에서 spring.threads.

spring bootvirtual threadpinning
백엔드 깊이보기 · ·3분 읽기

응답은 200인데 보안 헤더가 통째로 빠져 있었다

보안팀에서 슬랙이 왔다. "API 응답에 보안 헤더가 하나도 없는데요?

spring securitycve보안
백엔드 깊이보기 · ·3분 읽기

SELECT FOR UPDATE 안 걸었을 뿐인데 포인트가 두 배로 지급됐다

동시에 두 명이 포인트를 사용하면 잔액이 마이너스가 되지 않는 게 당연하다고 생각했다. 그 생각이 틀렸다는 걸 화요일 오후 CS 인입량이 알려줬다.

spring bootjpa동시성
백엔드 깊이보기 · ·3분 읽기

캐시 TTL을 전부 10분으로 맞춘 그날 새벽

캐시 정리의 최적화라고 생각했다. 서비스 전체에 흩어진 @Cacheable 설정을 보니 TTL이 3분, 7분, 15분, 30분 — 제각각이었다.

spring bootrediscache stampede
백엔드 깊이보기 · ·3분 읽기

launch { } 안에서 터진 예외는 어디로 가는가

새벽 2시, 슬랙 알림이 울린다. 결제 완료 후 포인트 적립이 안 됐다는 CS가 3건 들어왔다.

kotlincoroutinesspring boot
백엔드 깊이보기 · ·2분 읽기

Spring Boot 4 올렸더니 결제 응답이 조용히 깨졌다

지난달 팀에서 Spring Boot 4로 올리면서 "Jackson 3? 패키지명만 바뀌었겠지"라고 생각했다.

spring bootjacksonmigration
백엔드 깊이보기 · ·3분 읽기

Spring Batch 스케일 아웃했더니 새벽마다 데드락이 터진다

새벽 3시 47분, PagerDuty 알람. "BatchJobRepository deadlock detected — 3 consecutive failures.

spring batchdeadlockmysql
백엔드 깊이보기 · ·4분 읽기

@Retryable 3번 설정했을 뿐인데 외부 호출이 27배가 됐다

재시도 로직은 백엔드 개발자의 안전장치지만, 서비스 체인에 겹겹이 쌓이면 증폭기로 돌변한다. 지난달 결제 API 장애 때 우리가 겪은 일이 정확히 이것이었고, 새벽 2시에 PagerDuty가 울렸을 때 처음 본 지표는 외부 API 오류가 아니라 우리 서버의 스레드 풀 고갈이었다.

spring bootspring retryretry amplification
백엔드 깊이보기 · ·3분 읽기

@Transactional 안에 RestClient 호출 한 줄 넣었더니 커넥션 풀이 말랐다

주문 API에서 결제 게이트웨이 연동 하나 추가한 게 전부였다. 배포하고 트래픽 올라가자마자 HikariCP 커넥션 대기 큐가 쌓이기 시작했고, 30초 만에 ConnectionTimeoutException이 터졌다.

spring boottransactionalhikaricp
백엔드 깊이보기 · ·2분 읽기

Graceful Shutdown 설정했는데 502가 계속 나오는 이유

배포할 때마다 502가 몇 건씩 찍힌다. Grafana 봐도 서버 과부하가 아니고, Rolling Update가 돌 때만 나타난다.

spring bootkubernetesgraceful shutdown
백엔드 깊이보기 · ·3분 읽기

@KafkaListener 하나가 Consumer Group 전체를 먹통으로 만든 밤

Spring Kafka에서 @KafkaListener를 쓰다 보면 한 가지 착각하기 쉬운 게 있다. 리스너 메서드가 느려도 다른 파티션은 문제없이 돌아갈 거라는 생각.

spring kafkakafkaconsumer group
백엔드 깊이보기 · ·3분 읽기

findById 하고 save 했을 뿐인데 데이터가 두 줄이다

운영 환경에서 "있으면 업데이트, 없으면 생성" 로직 때문에 밤새 고생해본 적 있는가. 대부분의 JPA 프로젝트에서 한 번쯤은 마주치는 문제인데, 의외로 프레임워크 레벨에서 제대로 된 해법이 나온 건 이번이 처음이다.

jpaspring dataupsert
백엔드 깊이보기 · ·2분 읽기

Replica 분리했는데 Master CPU만 100% 찍힌 밤

새벽 2시, 주문 서비스 마스터 DB CPU가 97%로 치솟았다는 알림이 왔다. Replica 세 대는 15%에서 조용히 돌고 있었다.

spring bootjpahikaricp
백엔드 깊이보기 · ·3분 읽기

서버 늘렸더니 @Scheduled가 3번 도는 이유

새벽 2시에 슬랙이 울렸는데, 같은 푸시 알림이 고객한테 3번 갔다는 제보였다. 서버 3대가 각자 @Scheduled 메서드를 실행한 거다.

spring bootscheduledshedlock
백엔드 깊이보기 · ·2분 읽기

Caffeine + Redis 조합, 빠르긴 한데 지뢰도 세 개다

"Redis 앞에 Caffeine 하나 놓으면 빨라지잖아요." 코드 리뷰에서 이 말이 나오면 반은 맞고 반은 틀리다.

caffeineredisspring boot
데브옵스 리얼톡 · ·3분 읽기

KEDA scale-to-zero 켜놓고 퇴근했다가 새벽에 불났다

비용 절감이라는 마법의 단어에 홀려 KEDA scale-to-zero를 프로덕션 HTTP 서비스에 적용한 팀의 이야기다. 금요일 퇴근 전에 배포하고, 월요일 아침에 슬랙 채널이 빨간불 투성이였다.

kedakubernetes오토스케일링
백엔드 깊이보기 · ·2분 읽기

Circuit Breaker 설정했는데 왜 안 열리냐고요

지난주 새벽 2시, 슬랙에 알림이 쏟아졌다. 결제 서비스 응답 시간이 30초를 찍고 있었다.

spring cloudresilience4jcircuit breaker
1 / 2 Next →