Posts
read more
Spring Boot @Async로 비동기 처리 구현하기: 서비스 응답 속도 개선
서론
사용자가 요청을 보냈을 때 이메일 발송, 리포트 생성, 외부 API 호출 등 시간이 오래 걸리는 작업이 포함되어 있다면 응답 속도가 느려질 수밖에 없습니다. 이럴 때 **비동기 처리(Asynchronous Processing)**를 도입하면, 핵심 로직만 즉시 응답하고 무거운 작업은 백그라운드에서 실행하여 사용자 경험을 크게 향상시킬 수 있습니다.
@Async 활성화 및 설정
Spring Boot에서 비동기 기능을 사용하려면 먼저 @EnableAsync 설정을 추가해야 합니다.
1. 비동기 설정 클래스
기본 ThreadPool 대신 커스텀 설정을 통해 안정성을 확보하는 것이 좋습니다.
Posts
read more
Nginx 리버스 프록시와 로드 밸런싱 설정 가이드: WAS 성능 최적화
서론
현대 웹 아키텍처에서 백엔드 WAS(Tomcat, Spring Boot 등)를 외부에 직접 노출하는 것은 보안과 성능 면에서 권장되지 않습니다. Nginx를 앞단에 두어 **리버스 프록시(Reverse Proxy)**로 활용하면 보안 강화는 물론, **로드 밸런싱(Load Balancing)**을 통해 시스템의 가용성을 획기적으로 높일 수 있습니다.
리버스 프록시 설정 (Reverse Proxy)
리버스 프록시는 클라이언트의 요청을 대신 받아 백엔드 서버로 전달하는 역할을 합니다. 이를 통해 백엔드 서버의 IP를 숨기고 SSL 종단점(SSL Termination) 역할을 수행할 수 있습니다.
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers; # 로드 밸런서 그룹 지정
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
로드 밸런싱 설정 (Load Balancing)
upstream 블록을 사용하여 여러 대의 백엔드 서버로 부하를 분산할 수 있습니다.