시스템 디자인
비유로 시작하기
비유로 시작하기
Tomcat 스레드 200개가 모두 외부 API 응답을 기다리며 블로킹되어 있다. 새 요청은 큐에서 대기하다 타임아웃이 난다. 이 상황에서 서버를 늘리는 것보다 더 근본적인 해법이 WebFlux다.
1. 선언적 트랜잭션 (@Transactional)
마이크로서비스 환경에서 주문 하나가 실패했다. Order Service → Payment Service → Inventory Service → Notification Service를 거치는데, 어디서 얼마나 걸...
JWT 토큰이 없는 요청이 /api/admin에 들어왔는데 그냥 통과됐다. 필터 순서가 잘못됐거나 필터 자체가 누락된 것이다. Spring Security 아키텍처를 모르면 어디서 막혀야 하는지조차 알 수 없다.
마이크로서비스 환경에서 외부 서비스 호출은 실패할 수 있다. 한 서비스의 장애가 연쇄적으로 전파돼 전체 시스템이 다운되는 “연쇄 장애(Cascading Failure)”가 가장 위험하다. Resilience4j...
비유로 먼저 이해하기: MVC는 레스토랑과 같다. 손님 요청을 웨이터(Controller)가 받아 주방(Service)에 전달하고, 셰프가 요리(비즈니스 로직)를 완성하면 접시(View)에 담아 손님에게 ...
새벽 2시에 운영 장애가 났다. 로그를 보니 에러와 정상 로그가 뒤섞여 어느 요청에서 터진 건지 찾을 수가 없다. MDC를 몰랐다면 이 상황에서 로그 전체를 시간순으로 읽어내려가야 한다.
신입 때 이런 경험이 있을 것이다. 서비스 클래스 안에서 new RateDiscountPolicy()를 직접 써뒀는데, 기획이 바뀌어서 FixDiscountPolicy로 교체해야 하는 순간. 수십 개 파일을 열...
마이크로서비스 환경에서 서비스들은 동적으로 생성·삭제·이동된다. IP와 포트를 하드코딩하면 배포할 때마다 설정을 바꿔야 한다. Spring Cloud Eureka는 이 문제를 해결하는 Service Discov...