본문 바로가기

MicroService Architecture

(10)
[API Gateway] API Gateway Filter JwtUtil.class@Componentpublic class JwtUtil { public static final String BEARER_PREFIX = "Bearer "; // Base64 Encode 한 SecretKey @Value("${jwt.secret.key}") private String secretKey; private Key key; // 로그 설정 public static final Logger logger = LoggerFactory.getLogger("JWT 관련 로그"); @PostConstruct public void init() { byte[] bytes = Base64.getDecoder().decode(sec..
API Gateway 라이브러리 선택 및 사용 예제 API Gateway 대표 라이브러리 Netflix ZuulSpring Cloud Gateway Netflix Zuul넷플릭스 OSS(오픈소스 소프트웨어) 스택의 일부로 개발된 API Gateway주로 MSA에서 사용되며 다양한 트래픽 라우팅, 필터링 및 로드 밸런싱 기능을 제공 Netflix Zuul의 특징1세대 API Gateway Zuul은 기본적으로 HTTP 요청 라우팅과 필터링에 중점을 둔 1세대 API GatewaySpring Cloud에서 Zuul 1을 사용하는 경우, 내부적으로 블로킹 방식으로 동작필터 기반 아키텍처Zuul은 요청을 처리하는 여러 필터를 지원필터를 사용해 요청 전/후의 다양한 기능(인증, 로깅, 트랜잭션 관리 등)을 추가 가능확장성Zuul은 기능 확장성이 뛰어나지만 JVM ..
FeignClient(OpenFeign) 사용 이유, 예제 https://bestdevelop-lab.tistory.com/174 Feign Client / Web Client / RestTemplateFeign Client / Web Client / RestTemplate 이 세 개는 다른 서버와 통신하기 위해, 즉 REST API로 서비스간 통신하기 위해 사용 RestTemplate이란?HTTP 요청을 만들기 위해 Spring Framework에서 제공하는 동기식 클라bestdevelop-lab.tistory.comFeignClient 사용 이유앞서 RestTemplate, FeignClient, WebClient를 비교했을 때 언급하였 듯이, RestTemplate은 더 이상 개발이 되지 않게 되었으며, 아래의 이유들로 RestTemplate보다 Feign..
Feign Client / Web Client / RestTemplate Feign Client / Web Client / RestTemplate 이 세 개는 다른 서버와 통신하기 위해, 즉 REST API로 서비스간 통신하기 위해 사용 RestTemplate이란?HTTP 요청을 만들기 위해 Spring Framework에서 제공하는 동기식 클라이언트 라이브러리오랫동안 사용되었기 때문에 많은 개발자들이 사용법에 익숙하며 대규모 커뮤니티가 존재하는 안정적인 라이브러리단, Blocking I/O를 사용하기 때문에 동시성이 높은 시나리오에서 성능 문제가 발생할 수 있음또한 Spring 5.0 이후부터 RestTemplate은 레거시 라이브러리로 간주되면서 WebClient가 권장되는 추세라고 하며, Spring Docs에서는 Dreprecated 선언을 했다가 삭제되지는 않고, 더..
[Spring Cloud] Netflix Eureka 개념, 용어 정리 및 사용 예제 Spring Cloud Netflix Eureka마이크로 서비스의 정보를 Registry에 등록할 수 있도록 하고 동적인 탐색과 로드 밸런싱을 제공AWS와 같은 Cloud 시스템에서 서비스의 로드 밸런싱과 실패 처리 등을 유연하게 가져가 위해 각 서비스들의 IP / Port / InstanceId를 가지고 있는 REST 기반의 미들웨어 서버유레카는 Middle-Tier Load Balancer로 정의전통적인 로드밸런싱의 경우 서비스의 위치가 고정되어 있었지만 AWS와 같은 클라우드 환경에서는 서버의 위치가 동적으로 변동되기 때문에 개발자가 직접 이를 컨트롤 하기는 어려움 → 하지만, AWS에서는 middle-tier load balancer를 제공하지 않기 때문에 유레카는 더 많은 관심을 받는다고 함MS..
Service Discovery 개념, 종류, 특징 Service Discovery란?MSA와 같은 분산 환경에서의 동작은 서비스 간의 원격 호출(API 호출)로 구성→ 원격 호출은 각 서비스의 IP 주소와 PORT 번호를 기반으로 요청클라우드 환경이 기반이 되면서 서비스가 AutoScaling 등에 의해 동적으로 생성되거나, 컨테이너 기반의 배포로 인해 서비스의 IP가 동적으로 변경되는 일이 잦아짐하지만, 이러한 변경은 클라우드에서 일어난 것이기 때문에 동적으로 변하는 IP를 하나 하나 확인하여 수동으로 대응 불가따라서, 클라우드 환경에서 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치(IP 주소와 PORT 번호)를 알아낼 수 있는 기능이 필요한데 이것을 Service Discovery라고 함Service Discovery를 구현하는 방법으로는 크..
Spring Cloud란? Spring Cloud 개념분산 시스템을 구축하고 운영하기 위한 스프링 프레임 기반 라이브러리의 모음마이크로서비스 아키텍처(MSA)를 구현할 때 주로 사용서비스 디스커버리, 로드 밸런싱, 분산 설정 관리, 분산 추적, API 게이트웨이 등 다양한 기능을 포함하며, 통합과 확장이 가능하고 이를 통해 유연성을 높일 수 있음  Spring Cloud가 제공하는 기능API 게이트웨이(API Gateway)MSA에서 클라이언트와 백엔드 서비스 간의 통신을 중앙에서 관리하는 서버클라이언트 애플리케이션이 서비스에 요청을 보낼 때 API 게이트웨이가 서비스 간 통신을 관리하고 모니터링함으로써 이를 조정하고 보안 검사를 수행하는 데 사용API Gateway는 주로 라우팅, 인증, 보안, 로드 밸런싱, 캐싱 등의 기능을 ..
API Gateway란? 1. API Gateway란?모든 서버로의 요청을 단일 지점(Gateway)를 거쳐 처리공통된 로직, 인증 및 인가, 라우팅 등을 처리 가능클라이언트는 각 서비스의 엔드포인트(URL) 대신 API Gateway로 요청을 보내게 되며, 요청을 받은 API Gateway는 설정에 따라 각 엔드포인트로 클라이언트를 대신하여 요청하고, 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할 2. API Gateway의 주요 기능인증/인가 및 토큰 발급각 서비스마다 공통으로 구현되어야하는 필수 기능각 서비스마다 인증/인가를 구현하는 것은 매우 비효율적이므로 API Gateway에서 공통된 부분을 효율적으로 처리Ex) 각각의 서비스마다 Spring security 의존성을 추가하여 인증/인가 기능을 구..