Spring IoC와 DI
신입 때 이런 경험이 있을 것이다. 서비스 클래스 안에서 new RateDiscountPolicy()를 직접 써뒀는데, 기획이 바뀌어서 FixDiscountPolicy로 교체해야 하는 순간. 수십 개 파일을 열...
신입 때 이런 경험이 있을 것이다. 서비스 클래스 안에서 new RateDiscountPolicy()를 직접 써뒀는데, 기획이 바뀌어서 FixDiscountPolicy로 교체해야 하는 순간. 수십 개 파일을 열...
마이크로서비스 환경에서 서비스들은 동적으로 생성·삭제·이동된다. IP와 포트를 하드코딩하면 배포할 때마다 설정을 바꿔야 한다. Spring Cloud Eureka는 이 문제를 해결하는 Service Discov...
100개의 마이크로서비스에 DB 비밀번호를 바꿔야 한다면? 각 서비스마다 설정 파일을 수정하고 재배포하면 수십 분이 걸린다. Spring Cloud Config는 모든 서비스의 설정을 한 곳에서 관리하고, 재배...
Spring Cloud Gateway는 Spring 생태계의 API Gateway 솔루션이다. Netflix Zuul(블로킹)의 후계자로, Spring WebFlux(Reactor/Netty) 기반의 비동기 논...
Spring의 @Async는 메서드를 별도 스레드에서 비동기로 실행하게 만드는 애노테이션이다. 단순히 붙이면 동작하는 것처럼 보이지만, 내부 동작과 주의사항을 모르면 예외가 무시되거나 MDC 컨텍스트가 사라지는...
1. AOP란? (관심사 분리)
비유로 먼저 이해하기: HTTP 클라이언트 라이브러리를 택배사에 비유하면, RestTemplate은 직접 전화해서 배차하는 방식, WebClient는 배차 앱에 요청 올려두고 다른 일 하는 방식, Open...
API를 운영하다 보면 특정 클라이언트가 초당 수천 건의 요청을 보내 서버가 다운되거나, 공격자가 로그인 API에 브루트포스 공격을 시도하는 상황을 맞닥뜨리게 된다. Rate Limiting은 이런 상황을 사전...
마이크로서비스 아키텍처에서는 단일 비즈니스 작업이 여러 서비스에 걸쳐 실행된다. 각 서비스는 독립적인 데이터베이스를 가지므로 전통적인 ACID 트랜잭션을 사용할 수 없다. 분산 트랜잭션은 이 문제를 해결하기 위...
Tomcat과 Netty는 Java 생태계에서 가장 널리 사용되는 두 서버 엔진이다. 둘 다 네트워크 I/O를 처리하지만 설계 철학과 스레드 모델이 근본적으로 다르다. Spring MVC와 Spring WebF...